Dans le premier chapitre :
Une grande famille de langages est celle des langages interprétés, comme Python, Ruby et Perl. Ces langages reposent sur un interprète, qui exécute le programme source instruction par instruction.
Les 3 langages choisis en exemple sont mal choisis.
- Python compile les programmes en bytecode avant de les interpréter (le bytecode est d'ailleurs accessible au runtime en allant chercher l'attribut
func.__code__.co_code
de n'importe quelle fonction en pur python, et il est désassemblable au moyen du module standarddis
). Il y a même un pinhole optimiser dans l'interpréteur standard, et certaines distributions (comme Pypy) poussent le vice avec un compilateur JIT ; - Perl 6 repose sur un principe équivalent, et va encore plus loin que Python en proposant un code à trois adresses ouvert pour sa VM, permettant ainsi aux utilisateurs de tirer parti de son moteur d'exécution avec d'autres langages de script dont il suffit d'écrire le frontend ;
- Je suis quasiment certain que c'est pareil pour Ruby.
+0
-0