Computerprogramma

Een computerprogramma is een opeenvolging van instructies met als doel om een specifieke taak met een computer uit te voeren. Een programma is in een uitvoerbare (executable) vorm, die de computer direct kan gebruiken om de programma-instructies met de processor (CPU) uit te voeren.

Computerbroncode wordt in het algemeen geschreven door computerprogrammeurs. Broncode wordt geschreven in een programmeertaal, die vaak een van de twee belangrijkste programmeerparadigma's volgt: imperatief of declaratief programmeren. Broncode kan met behulp van een compiler worden omgezet in een uitvoerbaar bestand (ook wel een executable of binair bestand genoemd) en later worden uitgevoerd door een centrale verwerkingseenheid. Als alternatief kunnen computerprogramma's worden uitgevoerd met behulp van een interpreter. Ook kunnen zij als firmware worden gedraaid of worden ingebed in de hardware.

Een verzameling van computerprogramma's en bijbehorende data wordt software genoemd. Als een computerprogramma wordt uitgevoerd, leest de computer de instructies uit het programma, zoals deze zijn opgeslagen op een gegevensdrager (bijvoorbeeld bestanden op een harde schijf) en voert de programmacode in de aangeven volgorde uit, gebruik makend van de data. Hetzelfde computerprogramma stelt een programmeur in staat om in een voor mensen gemakkelijker leesbare broncodevorm de algoritmen van een betreffende computerprogramma te bestuderen en zo nodig verder te ontwikkelen.

Programmeertalen 

Programma's worden in verschillende programmeertalen geschreven (geprogrammeerd). Vaak worden deze programma's door een compiler vertaald naar machinetaal. In andere gevallen wordt het programma uitgevoerd door een interpreter (tolk). Slechts zelden wordt een programma direct in assembler geschreven; dat gebeurt uitsluitend wanneer maximale efficiëntie vereist is.

Model van computerprogramma's 
De Engelse wiskundige Alan Turing beschreef een theoretische machine, de turingmachine, die een model van het rekenen vormt zoals de computer dat doet. De machine kan worden geconfigureerd met een eindige verzameling mogelijke toestandsovergangen: zo'n configuratie kan worden gezien als het model van een programma. Een verschil is dat in computers het rekenen gebeurt op het ingebouwde geheugen, dat eindig is.

Naast turingmachines bestaan er nog allerlei andere soorten wiskundige modellen van het rekenen, waarmee uiteenlopende aspecten van het rekenen bestudeerd kunnen worden.

Soorten 

Computerprogramma's komen in allerlei soorten en maten voor:

 Het besturingssysteem dat een computer draaiende houdt en de computergebruiker de mogelijkheid biedt om andere programma's te starten, gegevens te bewaren en randapparatuur te gebruiken (bijvoorbeeld afdrukken op een printer).

 Stuurprogramma's, programmatuur die specifieke hardware geschikt maakt voor gebruik op de betreffende computer met besturingssysteem.
 Kantoorsoftwarepakketten:
Tekstverwerker
Spreadsheet
Database
Projectplanning
Presentatiesoftware
 Bedrijfssoftware:
CAD-systeem (computer-aided design)
PDM-systeem (Product Data Management)
ERP-systeem (Enterprise Resource Planning)
SCM-systeem (supply chain management)
CRM/EMM-systeem (Customer Relationship Management / Enterprise Marketing Management)
EDM/ECM-systeem (Enterprise Document / Content Management)
HRM-systeem (humanresourcesmanagement)
 Grafische programmatuur
 Audioprogrammatuur
 Netwerkprogrammatuur (bijvoorbeeld voor internet)
 Spellen
 Simulaties
 Embedded software

Fouten 
Er zijn verschillende soorten fouten mogelijk in een computerprogramma:
 Een fout in de syntaxis. Er staat dan iets dat in de gebruikte taal niet is toegestaan.
 Een fout in de semantiek. Er staat dan iets dat is toegestaan, maar in een fout resulteert. Een statement bevat bijvoorbeeld een deling door een variabele, maar de waarde daarvan is nul. De uitvoering van het programma stopt, meestal met een foutmelding.
 Een fout waarbij de uitvoering vanuit de computer gezien normaal verloopt, maar waarbij de computer niet doet wat de bedoeling is.
Bij gebruik van een compiler is er bovendien een onderscheid tussen

 compile time errors, die tijdens het compileren worden gevonden en gerapporteerd, en moeten worden gecorrigeerd alvorens een gecompileerd, uitvoerbaar programma kan worden geproduceerd;
 run time errors, fouten die optreden tijdens de uitvoering van de gecompileerde software.

De meeste compile time errors zijn syntaxisfouten, en de meeste syntaxisfouten zijn compile time errors. Bij het compileren worden vaak ook allerlei waarschuwingen gegeven, die o.a. semantische fouten kunnen aangeven.

Bij gebruik van een interpreter wordt een syntaxisfout slechts ontdekt indien en wanneer de interpreter op het punt staat het statement uit te voeren. Het effect van alle genoemde soorten fouten is dus hetzelfde: de uitvoering stopt, meestal met een foutmelding. Vaak zijn er ook voor geïnterpreteerde talen programma's om syntaxisfouten en andere mogelijke problemen in de code te rapporteren.

Veel talen gebruiken tussenvormen tussen compilatie en interpretatie, zoals just-in-timecompilatie, waardoor het onderscheid tussen compile time en run time minder scherp is.

Zie ook 
Lijst van programmeertalen
 

Programmeren
Software