Ontwikkeling: Gecompileerde talen versus geïnterpreteerde talen

Het verschil tussen een geïnterpreteerde en een gecompileerde taal ligt in het resultaat van het proces van interpreteren of compileren. Een interpreter produceert een resultaat van een programma, terwijl een compiler een programma produceert dat in assembleertaal is geschreven. De assembler van de architectuur zet het resulterende programma vervolgens om in binaire code.

Een gecompileerd programma is niet door mensen leesbaar, maar is in plaats daarvan in een architectuur-specifieke machinetaal. Het is er een waar het programma, eenmaal gecompileerd, wordt uitgedrukt in de instructies van de doelmachine. Zo kan bijvoorbeeld een “+”-bewerking in uw broncode direct worden vertaald naar de “ADD”-instructie in machinecode.

Het maken van een gecompileerd programma vereist verschillende stappen. Eerst schrijft de programmeur, met behulp van een ontwikkelprogramma of zelfs een eenvoudige teksteditor, de broncode in een gekozen computertaal. Als het programma complex is, kunnen delen ervan over verschillende bestanden worden verspreid. De programmeur compileert vervolgens het programma, door de modules te sorteren en te koppelen en het geheel te vertalen in machinecode die de computer begrijpt.In de huidige IDE’s (Interface Development Environment) wordt de compileerstap heel gemakkelijk en naadloos uitgevoerd, met slechts een paar klikken.

In een geïnterpreteerd programma echter, is de broncode typisch is programma. Vaak bekend als scripts, vereisen een interpreter, die de commando’s in het programma ontleedt en vervolgens uitvoert. Het voordeel van een script is dat het zeer overdraagbaar is. De instructies worden niet rechtstreeks door de doelmachine uitgevoerd, maar in plaats daarvan door een ander programma gelezen en uitgevoerd. In navolging van het vorige voorbeeld van de optelsom, zou dezelfde “+” bewerking in dit soort talen door de interpreter worden herkend tijdens het uitvoeren, die dan zijn eigen “add(a,b)” functie zou aanroepen met de juiste argumenten, die dan de machinecode “ADD” instructie zou uitvoeren. Elke computer die de juiste interpreter geïnstalleerd heeft, kan het programma min of meer ongewijzigd uitvoeren. Dit is ook een nadeel, omdat het programma helemaal niet zal lopen als de interpreter niet beschikbaar is. Over het algemeen zijn geïnterpreteerde programma’s langzamer dan gecompileerde programma’s, maar ze zijn gemakkelijker te debuggen en te reviseren.

Je kunt alles wat je in een geïnterpreteerde taal kunt doen, ook in een gecompileerde taal doen en omgekeerd zijn ze beide Turing compleet. Beiden hebben echter voor- en nadelen voor implementatie en gebruik.

Voordelen van gecompileerde talen

Programma’s gecompileerd in native code op compileertijd hebben meestal de neiging om sneller te zijn dan die vertaald op runtime, als gevolg van de overhead van het vertaalproces.

Nadelen van gecompileerde talen

De meest opvallende nadelen zijn :

  • Extra tijd nodig om de gehele compilatiestap te voltooien alvorens te testen.
  • Platformafhankelijkheid van de gegenereerde binaire code.

Voordelen van geïnterpreteerde talen

Voorziet implementatie van enige extra flexibiliteit ten opzichte van gecompileerde implementaties. Omdat interpreters de broncode van het programma zelf uitvoeren, is de code zelf platformonafhankelijk. Andere voordelen zijn dynamische typing, en kleinere uitvoerbare programmagrootte.

Nadelen van geïnterpreteerde talen

  • Interpreters kunnen gevoelig zijn voor code-injectie-aanvallen.
  • Lagere uitvoering vergeleken met directe native machinecode-uitvoering. Een techniek die wordt gebruikt om de prestaties te verbeteren is just-in-time compilatie, waarbij veelvuldig uitgevoerde reeksen geïnterpreteerde instructies worden omgezet in host-machinecode.
  • Broncode kan worden gelezen en gekopieerd, of gemakkelijker worden omgekeerd door middel van reflectie in toepassingen waarbij intellectueel eigendom een commercieel voordeel heeft. In sommige gevallen wordt obfuscatie gebruikt als een gedeeltelijke verdediging hiertegen.

In de Wikipedia vindt u ook een lijst van Gecompileerde Talen:

In de Wikipedia vindt u ook een lijst van Geïnterpreteerde Talen:

Via:

Plaats een reactie