ben c'est toujours pareil
1) la compilation en code natif : C, C++, Delphi, etc...
le source est traduit en langage machine directement interprété par le processeur
2) la compilation pour machine virtuelle : Java, Flash, CIL, etc...
le source est traduit en PCode non natif qui sera lui même interprété ou recompilé par le framework
3) le langage interprété : PHP, Javascript, BASIC, etc...
le source n'est pas compilé mais simplement interprété
on notera que l'apparition des compilateurs JIT (Just In Time compilers) rend la limite entre tout cela plus confuse. C'est là qu'on parle de compilation à la volée avec un éventuel système de cache qui évite la recompilation du même code.
dotNet est un peu à part car le source est compilé en CIL (supposément multiplatforme) qui lui même est recompilé en natif sur la plateforme d'execution...
autre notion important à garder en tête pour le langage interprété, c'est la fonction eval() - ou équivalent - qui va permettre d'exécuter un code source lors de l'exécution...situation qui empêche toute compilation autre que JIT.
un code interprété va également permettre l'usage de fonctions non définies :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // ici "maFonction()" n'existe pas include('defines'.$_REQUEST['toto'].'inc'); // définition dynamique de maFonction maFonction(); // maFonction étant défini différemment dans les différents defines*.inc
Partager