• [^] # Re: Python

    Posté par . En réponse à la dépêche Interview de Miguel de Icaza par O'reilly. Évalué à 2.

    En ce qui concerne la VM de Mono/C#, elle commence par compiler en code natif le bytecode (mécanisme JIT et AOT)

    C'est un mécanisme d'optimisation, qui ne change rien au fait qu'il y ait du bytecode dans l'affaire, et rien au caractère soi-disant "interprété" du langage.
    Python peut aussi être couplé avec un mécanisme ressemblant à un JIT, qui s'appelle Psyco : http://psyco.sourceforge.net/(...)
    Il y a également des travaux en cours pour rendre Python auto-amorçable (compilateur écrit en Python) et plus facilement JITtable : http://codespeak.net/pypy/(...)

    Evidemment que ca peut être fait à l'exécution, mais question perf c'est toujours mieux d'optimiser AVANT l'exécution

    Tu te contredis. Si c'était mieux d'optimiser à la compilation, alors Java et Mono n'utiliseraient pas un JIT (qui veut dire "Just-In-Time", c'est-à-dire "juste à l'exécution" - et non à la compilation).

    si en plus faut qu'elle se farcisse une vérification de type à tout bout de champ

    Les vérifications de type peuvent être autant optimisées que le reste (en faisant de l'inférence de types et/ou en créant plusieurs branches du code en fonction des types rencontrés : Psyco utilise la seconde méthode, Pypy semble se diriger vers la première).

    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.