Compileren en linken

Een software-programma geschreven in een programmeertaal kan op verschillende manieren door een computer worden uitgevoerd, bijvoorbeeld: interpreteren of uitvoeren van een executable.
Wat betekent dit ?

Interpreteren

Het interpreteren van een computerprogramma komt neer op het stukje bij beetje begrijpen en uitvoeren. De interpreter (het programma dat het interpreteren doet) loopt bijvoorbeeld regel voor regel door de broncode, probeert te begrijpen wat er moet gebeuren en voert het vervolgens uit of geeft een foutmelding als hij het niet snapt. Op deze manier is eigenlijk de interpreter het programma dat binnen het operating system draait. De broncode die door de interpreter uitgevoerd wordt is geen zelfstandig programma. Dit wordt vaak een script genoemd.

Compileren

Bij programmeertalen als C++ wordt meestal eerst de hele broncode vertaald in uitvoerbare (machine-)code en samengevoegd met onderdelen van het operating system waardoor een op zichzelf staand programma ontstaat: de executable. Deze stappen van vertalen en samenvoegen noemen we compileren en linken. Vaak zit daar nog een stap van assembleren tussen, dat is het laagste niveau van vertalen naar machinecode voor een bepaalde processor.

Voor- en nadelen

Waarom zijn er twee manieren ? Heel simpel: ze hebben beide voor- en nadelen. Interpreteren is vooral handig als je programma vaak wijzigt. Je hoeft dan niet steeds de hele boel te compileren en linken, maar kunt het meteen na een wijziging opnieuw uitvoeren. Een ander voordeel is dat het je minder afhankelijk maakt van het platform waarop je het uitvoert. Een executable is i.h.a. slechts geschikt voor één platform terwijl een stuk broncode door verschillende interpreters op verschillende platformen uitgevoerd kan worden.
Ook is het mogelijk om een script te genereren of tijdens het uitvoeren aan te passen en op die manier zeer krachtige, flexibele systemen te maken.

Flexibiliteit vs snelheid

Die flexibiliteit heeft wel een prijs. Geinterpreteerde programma's zijn relatief traag en maken niet altijd optimaal gebruik van het geheugen. Het grote voordeel van compileren en linken is de veel betere integratie in het operating system en het feit dat de broncode niet de hele tijd doorgelezen en begrepen moet worden. Dit alles komt de snelheid van de applicatie en het geheugengebruik enorm ten goede.

Broncode

Er zijn nog wel meer voor- en nadelen te noemen, zoals bijvoorbeeld het feit dat je niet altijd je broncode zomaar wilt weggeven, maar een executable waaraan nauwelijks meer te zien is hoe die is opgebouwd wel.

Ontwerpmethode en stabiliteit

Of denk aan de stabiliteit. Ik zou niet willen zeggen dat de ene methode altijd een stabieler resultaat levert dan de andere, maar de ontwerpmethoden zijn wel anders, waardoor je in de ene situatie de voorkeur kunt hebben voor interpreteren en in een ander geval voor compileren.