Een computer 'weet' niet inherent of een instructie een programma is. Het kent alleen reeksen instructies (code) in een taal die het begrijpt (zoals machinecode of assembleertaal). Of die reeks een *programma* vormt, is een kwestie van interpretatie en context.
Zo werkt het proces:
1. Invoer: De computer ontvangt een reeks tekens (uw getypte instructies). Dit kan in een taal op hoog niveau zijn (zoals Python, Java, C++) of een taal op laag niveau (assembly).
2. Parsen/compileren/interpreteren: De cruciale stap. Een programma (compiler, interpreter of assembler) analyseert de invoer. Het begrijpt de betekenis niet direct in de voor mensen leesbare zin, maar controleert op:
* Syntaxis: Voldoet de reeks karakters aan de grammaticale regels (syntaxis) van de programmeertaal? Als dit niet het geval is, worden er syntaxisfouten gerapporteerd.
* Semantiek: Zelfs als de syntaxis correct is, controleert het programma of de instructies logisch zijn. Dit gebeurt vaak tijdens het compileren of tijdens runtime. Een semantisch incorrect programma crasht mogelijk niet, maar kan wel onverwachte of onjuiste resultaten opleveren. Voorbeeld:delen door nul.
3. Vertaling: Als de invoer syntaxis- en semantische controles doorstaat (of in ieder geval de initiële syntaxiscontrole), vertaalt het programma deze in machinecode – de taal die de CPU van de computer direct begrijpt (binaire instructies).
4. Uitvoering: De CPU voert de machinecode-instructies opeenvolgend uit (tenzij er sprongen, lussen of aanroepen naar andere functies zijn). De computer beslist niet of het een "programma" is; het voert eenvoudigweg de instructies uit.
5. Uitvoer/resultaat: De uitvoering levert enige uitvoer op (bijvoorbeeld tekst, afbeeldingen, een verandering in de bestandsinhoud). De *betekenis* en of deze output de succesvolle uitvoering van een "programma" vormt, wordt door de menselijke gebruiker beoordeeld op basis van zijn verwachtingen en het beoogde doel van het programma.
Kortom, een computer volgt gewoon instructies. Of een verzameling instructies een programma is, hangt af van:
* Of het syntactisch correct is binnen de context van een programmeertaal.
* Of het semantisch betekenisvol is (Doet het wat het moet doen?).
* Of het een specifiek doel bereikt zoals bedoeld door de programmeur. Dit is het menselijke oordeelsaspect.
Een enkele instructie op zichzelf is geen programma. Een programma is een complete set instructies die, wanneer ze worden uitgevoerd, een taak volbrengen. De computer voert alleen instructies uit; het is aan de programmeur om ze in een programma te organiseren. |