Wat is een groot taalmodel? Hoe LLM’s werken, uitgelegd zonder hype
Begrijp wat er werkelijk gebeurt als een AI tekst schrijft. Leer in gewone taal over tokens, inbedding en aandacht, voer een kleine voorspeller van het volgende woord uit en ontdek waarom deze modellen tegelijkertijd briljant en verkeerd kunnen zijn.
- Een groot taalmodel is een neuraal netwerk dat is getraind op grote hoeveelheden tekst om te voorspellen wat er daarna komt.
- Het werkt met tokens en gebruikt aandacht om te bepalen welke eerdere tokens er het meest toe doen.
- Het genereert een antwoord per token, door te kiezen uit een reeks waarschijnlijkheden.
- Het kan zelfverzekerd klinken terwijl het fout is, dus belangrijke output moet worden gecontroleerd.
Tools die chatten, samenvatten en code schrijven lijken bijna magisch, totdat je het mechanisme eronder ziet. Een groot taalmodel, of LLM, is in wezen een zeer geavanceerd systeem voor het voorspellen van het volgende stuk tekst. Dat ene idee verklaart zowel wat deze tools goed doen als waarom ze falen op de manier waarop ze dat doen.
Deze gids legt de belangrijkste concepten uit zonder enige wiskunde en bouwt vervolgens een kleine voorspeller voor het volgende woord om het idee concreet te maken. We hebben die code uitgevoerd op Python 3.13 en de uitvoer komt uit die run. Het is een eenvoudig telspeeltje in plaats van een neuraal netwerk, en echte LLM’s zijn veel capabeler. We vermijden ook het vermelden van cijfers voor specifieke modellen, omdat deze snel veranderen.
Wat is een groot taalmodel?
Een LLM is een vorm van kunstmatige intelligentie die is getraind om menselijke taal te begrijpen en te genereren. Laten we de naam woord voor woord nemen:
- Groot: het heeft een groot aantal aanpasbare interne waarden, parameters genoemd, en leert van een enorme hoeveelheid tekst.
- Taal: het werkt met tekst, inclusief natuurlijke taal en code.
- Model: het is een wiskundig systeem dat patronen uit gegevens haalt en deze gebruikt om voorspellingen te doen.
Modellen zijn de motor en producten zoals chatassistenten zijn de auto die eromheen is gebouwd. Een product voegt vaak een gebruikersinterface, veiligheidssystemen, zoek- en andere tools toe.
Het kernidee: voorspellen wat er daarna komt
Dit doe je zelf. Als je leest ‘de hoofdstad van Frankrijk is’, denk je meteen aan ‘Parijs’. Een LLM doet iets vergelijkbaars, maar dan op veel grotere schaal. Gegeven wat tekst, berekent het hoe waarschijnlijk elk mogelijk volgend token is, kiest er één, voegt het toe aan de tekst en herhaalt het.
Er wordt geen database met opgeslagen antwoorden opgezocht. Het model bevat patronen die tijdens de training zijn geleerd, in de vorm van cijfers. Wanneer deze patronen overeenkomen met de waarheid, krijg je een correct antwoord. Doen ze dat niet, dan kun je alsnog een vloeiend antwoord krijgen, en dat is een belangrijk verschil met een zoekmachine.
Een kleine werkende demo
Om de voorspelling van de volgende token in de eenvoudigste vorm te zien, telt dit script welk woord op welk woord volgt in een kleine tekst. Vervolgens genereert het nieuwe tekst op basis van die tellingen. Statistici noemen dit een bigrammodel.
import random
from collections import Counter, defaultdict
TEXT = """the cat sat on the mat . the dog sat on the rug .
the cat saw the dog . the dog saw the cat ."""
tokens = TEXT.split()
follows = defaultdict(Counter)
for current, following in zip(tokens, tokens[1:]):
follows[current][following] += 1
def probabilities(word):
counts = follows[word]
total = sum(counts.values())
return {w: round(n / total, 2) for w, n in counts.most_common()}
print(probabilities("the"))
print(probabilities("sat"))
# {'cat': 0.38, 'dog': 0.38, 'mat': 0.12, 'rug': 0.12}
# {'on': 1.0}
Die output is een waarschijnlijkheidsverdeling. Na “de” beschouwt het model “kat” en “hond” het meest waarschijnlijk. Nu genereren we tekst door herhaaldelijk steekproeven te nemen uit deze waarschijnlijkheden:
def generate(start, length, seed):
rng = random.Random(seed)
words = [start]
for _ in range(length):
counts = follows[words[-1]]
words.append(rng.choices(list(counts), weights=counts.values())[0])
return " ".join(words)
print(generate("the", 6, seed=1))
print(generate("the", 6, seed=2))
print(generate("the", 6, seed=3))
# the cat . the cat saw the
# the rug . the cat . the
# the cat saw the dog . the
Let op drie dingen. Hetzelfde begin kan verschillende teksten opleveren, omdat de keuze willekeurig is. De uitvoer lijkt op de trainingsgegevens, zelfs voor reeksen die er nooit in zijn verschenen. En het heeft helemaal geen begrip, daarom leest “het vloerkleed. de kat” als onzin.
Vraag het naar een woord dat het nog nooit heeft gezien, en het heeft niets te bieden: follows["elephant"] is leeg. Ons speelgoed kijkt slechts naar één vorig woord. De enorme sprong in echte LLM’s komt voort uit het overwegen van lange stukken context en het leren van veel meer gegevens, waarbij gebruik wordt gemaakt van een neuraal netwerk in plaats van een simpele telling.
Tokens: hoe een model leest
LLM’s lezen geen hele woorden zoals wij. Tekst wordt eerst opgesplitst in tokens, die een woord, een deel van een woord of leestekens kunnen zijn. Elk token is gekoppeld aan een getal en het model werkt volledig met getallen.
Tokens zijn in de praktijk om twee redenen belangrijk. Het gebruik van gehoste modellen wordt gewoonlijk geprijsd op basis van tokens, en elk model heeft een limiet voor het aantal dat het tegelijk kan verwerken. Tokenisatie verklaart ook een aantal bekende vreemde gedragingen. Omdat modellen brokken zien in plaats van letters, zijn taken zoals het tellen van de letters in een woord traditioneel verrassend moeilijk voor hen.
Inbedding: betekenis als getallen
Elk token wordt omgezet in een inbedding, een lange lijst met getallen die het in een soort betekenisruimte plaatst. Verwante concepten komen dicht bij elkaar terecht, dus ‘kat’ en ‘kitten’ hebben nabijgelegen posities, terwijl ‘kat’ en ‘factuur’ dat niet doen.
Hetzelfde idee drijft semantisch zoeken aan, waarbij je documenten vindt op basis van betekenis in plaats van exacte woorden. Onze vectordatabasegids behandelt dat gebruik.
Aandacht en de transformator
De meeste moderne LLM’s zijn gebaseerd op de transformator-architectuur, geïntroduceerd door Google-onderzoekers in het artikel ‘Attention Is All You Need’ uit 2017. Het belangrijkste mechanisme ervan is zelfaandacht.
Denk eens aan deze zin: “De trofee paste niet in de koffer omdat hij te groot was.” Waar verwijst ‘het’ naar? Je weet dat het de trofee betekent. Met aandacht kan een model elk eerder token wegen bij het verwerken van elk nieuw token, zodat het ‘het’ kan koppelen aan de meest relevante woorden, zelfs als deze ver uit elkaar liggen.
Eerdere benaderingen verwerkten tekst stap voor stap en hadden de neiging verre woorden uit het oog te verliezen. Transformers kijken samen naar de hele context, en ze kunnen een groot deel van dit werk parallel uitvoeren op gespecialiseerde hardware, wat training over zulke grote hoeveelheden tekst praktisch maakte.
Hoe een LLM wordt opgeleid
| Stadium | Wat gebeurt er |
|---|---|
| Gegevensverzameling | Grote hoeveelheden tekst worden verzameld en opgeschoond |
| Vooropleiding | Het model voorspelt herhaaldelijk het volgende token en de parameters ervan worden aangepast als het fout is |
| Fijnafstemming | Het leert van voorbeelden van nuttige antwoorden, waarbij menselijke feedback vaak wordt gebruikt om antwoorden te rangschikken |
| Evaluatie | Teams testen het op kwaliteit, veiligheid en storingsgevallen |
Vooropleiding geeft een model een brede taalvaardigheid, maar het kan zijn dat u uw tekst gewoon voortzet in plaats van deze te beantwoorden. De latere stadia vormen het tot een nuttige assistent. Het trainen van grote modellen vergt aanzienlijke rekenkracht en is duur. Het gebruik van een kant-en-klaar model, bekend als inferentie, is per verzoek veel goedkoper.
Hoe het tekst genereert
- Uw prompt wordt opgesplitst in tokens en omgezet in insluitingen.
- Het netwerk verwerkt ze en gebruikt aandacht om ze met elkaar in verband te brengen.
- Het geeft een waarschijnlijkheid weer voor elk mogelijk volgend token.
- Er wordt één token geselecteerd en aan de context toegevoegd.
- Stappen 2 tot en met 4 worden herhaald totdat een stopconditie wordt bereikt.
Dit is de reden waarom antwoorden doorgaans woord voor woord verschijnen wanneer ze worden gestreamd. De tekst wordt letterlijk in volgorde geproduceerd. Temperatuur bepaalt hoe avontuurlijk stap 4 is: lage waarden geven de voorkeur aan de meest waarschijnlijke tokens, terwijl hogere waarden meer variatie mogelijk maken.
Tip: Gebruik voor extractie, classificatie en andere herhaalbare taken een lage temperatuur als de instelling beschikbaar is. Voor brainstormen kan een hogere instelling handig zijn. Toch garandeert een lage waarde niet elke keer identieke antwoorden.
Voorwaarden waaraan u zult voldoen
| Termijn | Betekenis |
|---|---|
| Prompt | De input die u aan het model geeft |
| Contextvenster | Het maximale aantal tokens dat in één keer kan worden overwogen |
| Parameters | De interne waarden die tijdens de training zijn geleerd |
| Gevolgtrekking | Een getraind model uitvoeren om uitvoer te verkrijgen |
| Hallucinatie | Zekere uitvoer die vals is |
| Kennisafsluiting | Het punt waarna de trainingsgegevens eindigen |
| RAG | Documenten ophalen om een model extra context te geven |
| Open gewicht model | Een model waarvan u de parameters kunt downloaden en zelf kunt uitvoeren |
Beperkingen die u moet kennen
- Hallucinaties. Een model kan feiten, citaten of codefuncties verzinnen. Omdat het waarschijnlijke tekst oplevert, kunnen valse verklaringen volkomen plausibel lijken.
- Kennislimiet. Tenzij een product verbinding maakt met zoeken of andere tools, is het mogelijk niet op de hoogte van recente gebeurtenissen.
- Beperkte context. Als een gesprek het contextvenster overschrijdt, kunnen eerdere details worden verwijderd of samengevat. Modellen onthouden ook niet automatisch eerdere chats, tenzij een product die functie toevoegt.
- Vooroordelen. Trainingsgegevens weerspiegelen menselijke vooroordelen, en deze kunnen in de resultaten voorkomen.
- Inconsistentie. Dezelfde vraag kan verschillende antwoorden opleveren, wat belangrijk is als je er software bovenop bouwt.
- Beveiligingsrisico’s. Verborgen instructies in tekst kunnen een model manipuleren, een probleem dat bekend staat als prompt injection.
LLM’s goed gebruiken
Behandel een LLM als een snelle, bekwame assistent wiens werk moet worden beoordeeld. Een paar gewoonten maken een groot verschil:
- Wees specifiek. Duidelijke instructies, context en voorbeelden zorgen voor betere resultaten. Onze gids voor snelle engineering laat zien hoe.
- Geef de feiten aan. Als de antwoorden uit uw eigen documenten moeten komen, gebruik dan RAG in plaats van op uw geheugen te vertrouwen.
- Controleer wat belangrijk is. Controleer cijfers, citaten en juridische of medische claims aan de hand van betrouwbare bronnen.
- Test de gegenereerde code. Voer de code uit en schrijf er tests voor, zoals u zou doen voor die van een collega. Onze gids AI-codebeoordelingstools biedt enige hulp.
- Bescherm gevoelige gegevens. Controleer de regels van uw organisatie voordat u vertrouwelijke informatie deelt met een gehoste tool.
Als u besluit hoe u een model voor uw eigen werk wilt aanpassen, helpt onze vergelijking van RAG versus fijnafstemming versus snelle engineering u bij uw keuze.
Tot slot
Een LLM is een next-token-voorspeller die op buitengewone schaal is getraind, en is nuttiger en feilbaarder dan die beschrijving suggereert. Als u het mechanisme in gedachten houdt, kunt u het goed gebruiken: het is sterk in taal en patronen en heeft uw toezicht op de feiten nodig. Om het concreet te maken, voert u het kleine script hierboven uit met uw eigen tekst, probeert u vervolgens dezelfde prompt meerdere keren in een echte assistent en vergelijkt u de antwoorden.
Veelgestelde vragen
Wat is een groot taalmodel in eenvoudige bewoordingen?
Het is een AI-systeem dat is getraind op grote hoeveelheden tekst om te voorspellen wat er daarna komt. Door die voorspelling te herhalen, kan het vragen beantwoorden, schrijven en samenvatten.
Wat is het verschil tussen AI en een LLM?
AI is het brede veld van het bouwen van intelligente systemen. Een LLM is een specifiek type AI-model, gericht op het verwerken en genereren van taal.
Begrijpen LLM’s wat ze zeggen?
Dit wordt besproken. Ze leggen rijke betekenispatronen vast en kunnen door veel problemen heen redeneren, maar ze ervaren de wereld niet en kunnen falen op manieren waarop iemand dat niet zou doen.
Waarom verzinnen LLM’s dingen?
Ze genereren waarschijnlijke tekst in plaats van geverifieerde feiten op te halen. Wanneer patronen wijzen op een plausibel maar vals antwoord, kan het model dit met schijnbaar vertrouwen geven.
Wat is een token in een LLM?
Een token is een stuk tekst dat het model verwerkt, zoals een woord, een deel van een woord of leestekens. Limieten en prijzen worden vaak gemeten in tokens.
Blijf leren
Hulp nodig met testen, WordPress of SEO?
We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen
AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…
Lees artikel →DevOpsOmgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan
Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…
Lees artikel →SoftwareontwikkelingAPI-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten
API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…
Lees artikel →TestautomatiseringSpotten in Python: unittest.mock, patch en de fouten die tests doen liegen
Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…
Lees artikel →SoftwaretestenCodedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent
Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…
Lees artikel →Databases & SQLDELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken
DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…
Lees artikel →Databases & SQLSQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden
SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…
Lees artikel →SoftwareontwikkelingTypeScript-interface versus type: echte verschillen, getest met de compiler
TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…
Lees artikel →SoftwareontwikkelingPython *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden
Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…
Lees artikel →SoftwareontwikkelingPython Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken
Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…
Lees artikel →Kunstmatige intelligentieWat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren
Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…
Lees artikel →DevOpsMonitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen
Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…
Lees artikel →DevOpsDocker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier
Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…
Lees artikel →TestautomatiseringTDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt
TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…
Lees artikel →SoftwaretestenGebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden
Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…
Lees artikel →Databases & SQLSQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen
SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…
Lees artikel →Databases & SQLSQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten
SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…
Lees artikel →SoftwareontwikkelingWat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld
Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…
Lees artikel →SoftwareontwikkelingJavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden
De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…
Lees artikel →SoftwareontwikkelingPython-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden
Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …
Lees artikel →Kunstmatige intelligentieWat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd
Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…
Lees artikel →DevOpsImplementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen
Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…
Lees artikel →TestautomatiseringSchilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen
Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…
Lees artikel →SoftwaretestenBelastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden
Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …
Lees artikel →SoftwaretestenTestcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken
Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…
Lees artikel →Databases & SQLOptimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing
Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…
Lees artikel →Databases & SQLSQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties
SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…
Lees artikel →SoftwareontwikkelingJavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs
Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…
Lees artikel →SoftwareontwikkelingPython-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden
Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…
Lees artikel →SoftwareontwikkelingPython-klassen en -objecten: OOP-zelfstudie met echte voorbeelden
Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…
Lees artikel →Kunstmatige intelligentieWat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype
Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…
Lees artikel →DevOpsLinux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden
Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…
Lees artikel →TestautomatiseringSelenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen
Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …
Lees artikel →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden
Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…
Lees artikel →Databases & SQLTutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden
Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …
Lees artikel →Databases & SQLSQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus
SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…
Lees artikel →SoftwareontwikkelingGit merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt
Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.
Lees artikel →SoftwareontwikkelingPython list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt
Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.
Lees artikel →Databases & SQLSQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)
Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.
Lees artikel →