Quand tu génères du JavaScript, derrière il y a plusieurs implémentations de l'interpréteur [...] Du coup, le principe est plutôt de laisser le runtime faire l'optimisation.
Oui, c'est pour ça que je demandais. :-)
Dans le cas de CoffeeScript → JavaScript, puisque de toute manière la machine virtuelle et son éventuel moteur JIT vont faire le boulot d'optimisation, celui qui écrit le compilateur peut se permettre de se focaliser sur une génération « propre » de code.
Je ne suis pas certain que ce soit vrai pour la génération de code Go.
On a un peu la même philosophie quand on génère du bytecode Java: le bytecode standard est pas du tout optimal, en fait il est plutôt éloigné de ce que les machines virtuelles font vraiement
J'étais surpris par ça, du coup j'ai fait un peu de recherche. Il semblerait que tu aies raison, mais principalement parce que l'optimiseur JIT aurait trop de mal à optimiser quoi que ce soit si le code avait déjà de grosses optimisations faites à la compilation (parce que sinon, comme la machine à pile implémentée par la JVM est complètement spécifiée, y'aurait aucune raison de ne pas faire des transformations optimisantes statiquement sinon).
[^] # Re: logique pour Google
Posté par lasher . En réponse au journal Grumpy : un nouveau concurrent à pythran. Évalué à 1.
Oui, c'est pour ça que je demandais. :-)
Dans le cas de CoffeeScript → JavaScript, puisque de toute manière la machine virtuelle et son éventuel moteur JIT vont faire le boulot d'optimisation, celui qui écrit le compilateur peut se permettre de se focaliser sur une génération « propre » de code.
Je ne suis pas certain que ce soit vrai pour la génération de code Go.
J'étais surpris par ça, du coup j'ai fait un peu de recherche. Il semblerait que tu aies raison, mais principalement parce que l'optimiseur JIT aurait trop de mal à optimiser quoi que ce soit si le code avait déjà de grosses optimisations faites à la compilation (parce que sinon, comme la machine à pile implémentée par la JVM est complètement spécifiée, y'aurait aucune raison de ne pas faire des transformations optimisantes statiquement sinon).