À chaque fois que je tombe sur une dépêche parlant de machines virtuelles et de bytecode, je ne peux m'empêcher d'avoir les yeux qui pétillent en pensant à un mode génial.
Dans ce monde, tous les langages de programmation sont compilables en bytecode sur la même machine virtuelle. Même machine virtuelle voulant dire que le bytecode est commun à tous les langages. (C'est un peu les objectifs de Parrot pour les langages de script, me semble-t'il...)
Imaginez un peu les avantages que l'on pourrait tirer de cette propriété !
Pour différentes raisons on pourrait coder dans un langage L, compiler le source en bytecode, et décompiler ce bytecode dans un langage L' plus adapté pour l'étape suivante du projet.
Typiquement, en phase de conception il peut être sympa d'utiliser un langage disposant facilement des paradigmes OOP ou AOP, en phase de développement intensif un langage pas trop verbeux, en phase de maintenance un langage très lisible pour éviter les régressions, en phase de tests un langage adapté, en phase d'optimisation encore un autre langage, etc
En fait il y a quand même (au moins) une ombre au tableau idyllique : la décompilation qui ne serait pas forcément possible théoriquement (des histoires d'injectivité ou de surjectivité...) !
# Une conséquence des machines virtuelles
Posté par Bob . En réponse à la dépêche Le projet Unladen Swallow vise à accélérer Python d'un facteur 5. Évalué à 2.
À chaque fois que je tombe sur une dépêche parlant de machines virtuelles et de bytecode, je ne peux m'empêcher d'avoir les yeux qui pétillent en pensant à un mode génial.
Dans ce monde, tous les langages de programmation sont compilables en bytecode sur la même machine virtuelle. Même machine virtuelle voulant dire que le bytecode est commun à tous les langages. (C'est un peu les objectifs de Parrot pour les langages de script, me semble-t'il...)
Imaginez un peu les avantages que l'on pourrait tirer de cette propriété !
Pour différentes raisons on pourrait coder dans un langage L, compiler le source en bytecode, et décompiler ce bytecode dans un langage L' plus adapté pour l'étape suivante du projet.
Typiquement, en phase de conception il peut être sympa d'utiliser un langage disposant facilement des paradigmes OOP ou AOP, en phase de développement intensif un langage pas trop verbeux, en phase de maintenance un langage très lisible pour éviter les régressions, en phase de tests un langage adapté, en phase d'optimisation encore un autre langage, etc
En fait il y a quand même (au moins) une ombre au tableau idyllique : la décompilation qui ne serait pas forcément possible théoriquement (des histoires d'injectivité ou de surjectivité...) !
M'enfin ça serait quand même cool, non ? :)