un mécanisme ressemblant à un JIT, qui s'appelle Psyco
Ah non ! Psycho c'est du AOT, et on perd la portabilité. D'ailleur ca tourne que sur x86.
Enfin l'existence de ce projet montre clairement qu'il y a une grosse différence entre mode compilé et mode exécuté ;-)
Tu te contredis. Si c'était mieux d'optimiser à la compilation, alors Java et Mono n'utiliseraient pas un JIT
c'est juste qu'il y a pleins de sortes d'optimisation, dont certaines sont dépendantes de la machine cible, d'où l'idée de garder un bytecode optimisé (pour le typage par exemple, mais aussi tout ce qui concerne les optimisations sur la logique du programme, déroulement de boucle, élimination de variables inutiles, résolution de méthode virtuelles, etc.), et d'effectuer les dernières optimisations à l'exécution (ou juste avant, quand on connait la machine cible).
Donc le JIT est utile (suffit de comparer les perfs avec et sans).
Il ne fait pas de doute que l'implémentation actuelle de Python soit souvent plus lente que celles de Mono/Java, mais les caractéristiques du langage (et notamment son caractère soi-disant "interprété") ne sont pas le facteur limitant.
Ce qui esst clairement limitant c'est sont côté trop dynamique. Reste que si tu fais quelques hypothèses et qut tu attaques plus tôt les optimisations tu gagneras en perfs, c'est ce qui se passe avec Psycho ou IronPython.
Enfin à part la question de perf, un langage avec typage statique est plus sûr qu'une langage sans typage statique, qui permet des choses vraiment douteuses d'un point de vu méthodologique, comme la modification en "live" d'interface.
[^] # Re: Python
Posté par TImaniac (site web personnel) . En réponse à la dépêche Interview de Miguel de Icaza par O'reilly. Évalué à 2.
Ah non ! Psycho c'est du AOT, et on perd la portabilité. D'ailleur ca tourne que sur x86.
Enfin l'existence de ce projet montre clairement qu'il y a une grosse différence entre mode compilé et mode exécuté ;-)
Tu te contredis. Si c'était mieux d'optimiser à la compilation, alors Java et Mono n'utiliseraient pas un JIT
c'est juste qu'il y a pleins de sortes d'optimisation, dont certaines sont dépendantes de la machine cible, d'où l'idée de garder un bytecode optimisé (pour le typage par exemple, mais aussi tout ce qui concerne les optimisations sur la logique du programme, déroulement de boucle, élimination de variables inutiles, résolution de méthode virtuelles, etc.), et d'effectuer les dernières optimisations à l'exécution (ou juste avant, quand on connait la machine cible).
Donc le JIT est utile (suffit de comparer les perfs avec et sans).
Il ne fait pas de doute que l'implémentation actuelle de Python soit souvent plus lente que celles de Mono/Java, mais les caractéristiques du langage (et notamment son caractère soi-disant "interprété") ne sont pas le facteur limitant.
Ce qui esst clairement limitant c'est sont côté trop dynamique. Reste que si tu fais quelques hypothèses et qut tu attaques plus tôt les optimisations tu gagneras en perfs, c'est ce qui se passe avec Psycho ou IronPython.
Enfin à part la question de perf, un langage avec typage statique est plus sûr qu'une langage sans typage statique, qui permet des choses vraiment douteuses d'un point de vu méthodologique, comme la modification en "live" d'interface.