Eigen lijkt het verschillen tussen interpreten en compilen gewoon de minst belachelijke defenitie
Oneens, zie hieronder.
Stel je hebt een taal die scripttaal wordt genoemd, en normaal altijd ge-interpreteerd wordt. En morgen bouwt iemand een compiler die ervoor zorgt dat die taal omgezet kan worden naar machine code (executable). Verandert die taal dan ineens van scripting naar programmeren?
Interessante stelling.
Alle talen zullen uiteindelijk omgezet moeten worden naar machinecode, anders werkt er niets. Het verschil zit 'm er in dat scripttalen deze vertaling in een runtime-engine gebeurt (geinterpreteerd dus) en dat deze bij niet-script talen altijd een compilatie-slag nodig is. Bij een script-taal gebeurt de vertaling in de achtergrond (dus zonder dat de gebruiker daar iets voor hoeft te doen), terwijl dit bij een niet-script taal een handmatige én verplichte stap is.
Dat script-talen een optimisatie-slag kennen (intermediate code, JIT-compilers, etc.), wil nog niet zeggen dat ze dan op één lijn staan met niet-script talen, want de vertaling vindt nog steeds plaats in de achtergrond. M.i. is dat het onderscheidend verschil: als de compilatie volledig in de achtergrond plaatsvindt (met of zonder optimalisatie, bv JIT), dan is het een script-taal, als er een verplichte handmatige compileerslag vooraf nodig is via een compiler, dan is het niet een script-taal.
Java is dan wel weer een apart geval: wél een compileerslag nodig (naar Java-bytecode) maar ook nog een runtime nodig hebben voor de interpretatie van die Java-bytecode naar machinecode.