Compilatie en uitvoering zijn twee verschillende fasen in het proces van het uitvoeren van een computerprogramma, vooral als het programma is geschreven in gecompileerde talen zoals C, C++ of Go (in tegenstelling tot geïnterpreteerde talen zoals Python of JavaScript). Hier is de uitsplitsing:
Compilatie:
* Wat het is: Compilatie is het proces waarbij broncode (voor mensen leesbare code geschreven door een programmeur) wordt vertaald naar machinecode (binaire instructies die de processor van een computer direct kan begrijpen en uitvoeren). De compiler is een speciaal programma dat deze vertaling uitvoert.
* Uitvoer: De uitvoer van de compilatie is een uitvoerbaar bestand (bijvoorbeeld een `.exe`-bestand op Windows, of een eenvoudig binair bestand op Linux/macOS). Dit bestand bevat de machinecode-instructies.
* Proces: De compiler controleert de broncode op fouten (syntaxisfouten, semantische fouten, enz.). Als er fouten worden gevonden, mislukt de compilatie en moet de programmeur de fouten in de broncode herstellen voordat hij het opnieuw probeert. Als er geen fouten worden gevonden, genereert de compiler het uitvoerbare bestand.
* Wanneer het gebeurt: Compilatie vindt plaats *voordat* het programma wordt uitgevoerd. Het is een aparte stap.
Uitvoering:
* Wat het is: Uitvoering is het proces waarbij het gecompileerde programma daadwerkelijk wordt uitgevoerd. De processor van de computer haalt de machinecode-instructies één voor één op en voert deze uit.
* Invoer: De invoer voor uitvoering is het uitvoerbare bestand dat tijdens de compilatie is gemaakt. Het kan ook gaan om invoergegevens die aan het programma worden verstrekt terwijl het wordt uitgevoerd (bijvoorbeeld gebruikersinvoer, gegevens uit een bestand).
* Uitvoer: De uitvoer van de uitvoering kan veel dingen zijn:gegevens die op het scherm worden weergegeven, gegevens die naar een bestand worden geschreven, wijzigingen die in het systeem worden aangebracht of eenvoudigweg de afsluitstatus van het programma (die succes of mislukking aangeeft).
* Wanneer het gebeurt: Uitvoering vindt *na* compilatie plaats. Het is de fase waarin het programma de beoogde taken uitvoert.
Analogie:
Denk aan het schrijven van een boek (broncode) en het vervolgens laten drukken (compilatie). Het gedrukte boek is het uitvoerbare bestand. Het lezen van het gedrukte boek is de uitvoering. U kunt het boek niet lezen (uitvoeren) voordat het is gedrukt (samengesteld).
Geïnterpreteerde talen:
Geïnterpreteerde talen hebben geen afzonderlijke compilatiestap op dezelfde manier. Een tolk leest de broncode regel voor regel en voert deze uit, zonder vooraf een apart uitvoerbaar bestand te maken. Sommige geïnterpreteerde talen gebruiken echter just-in-time (JIT)-compilatie om de prestaties te verbeteren door delen van de code tijdens de uitvoering in machinecode te compileren. Maar zelfs bij JIT is het onderscheid tussen de vertaalstap en de uitvoeringsstap minder duidelijk dan bij gecompileerde talen. |