Les implémentations
7
Introduction
à Python
choix excellent. Si vous devez travailler dans l’environnement CLR, alors vous gagnerez à
vous servir d’IronPython. Si vous travaillez avant tout dans un environnement tradi-
tionnel, alors CPython est le plus adapté. Si vous n’avez pas de préférence marquée pour
l’un ou l’autre, préférez l’implémentation CPython standard pour commencer.
En d’autres termes, pour tester de nouveaux domaines, se former, ou effectuer des essais,
vous utiliserez le plus souvent CPython, car il est plus rapide. Pour développer et déployer,
le meilleur choix dépendra des modules d’extension que vous utilisez et de la façon dont
vous souhaitez distribuer vos programmes. Les applications CPython sont généralement
plus rapides, notamment si elles peuvent faire bon usage de modules d’extension appro-
priés, tel
Numeric
(présenté au chapitre 16). CPython est plus mature, il est là depuis plus
longtemps. Jython et plus particulièrement IronPython sont plus récents, ils n’ont pas
autant de déploiements en grandeur nature. La succession des versions de CPython est
plus rapide que celle des versions de Jython et IronPython. Par exemple, à l’heure où nous
écrivons ces lignes, l’actuel niveau de langage supporté est 2.2 pour Jython, 2.4 pour
IronPython et un 2.4 sur le point de passer en 2.5 pour CPython (c’est-à-dire que le niveau
2.5 devrait être effectif au moment où vous lirez ce livre).
Cela dit, comme nous le verrons au chapitre 26, Jython peut utiliser n’importe quelle
classe Java comme module d’extension, qu’elle vienne de la bibliothèque standard de Java,
d’une bibliothèque tierce, ou d’une bibliothèque que vous avez vous-même développé. De
la même manière IronPython peut utiliser n’importe quelle classe CLR, que celle-ci
provienne des bibliothèques CLR standard ou qu’elles soient codées en C#, Visual Basic
.Net ou tout autre langage compatible CLR. Une application écrite en Jython est une
application 100% pur Java, avec tous les avantages et les problèmes du déploiement de
Java, et s’exécute sur toute machine disposant d’une JVM adaptée. Les possibilités d’empa-
quetage sont également les mêmes qu’en Java. De manière identique, une application
écrite en IronPython est totalement compatible avec les spécificités de .NET.
Jython, IronPython et CPython sont toutes les trois de bonnes implémentations de
Python ; elles ne posent pas de problème et sont relativement proches en termes d’utilisa-
tion ou de performances. Puisque les plateformes JVM et CLR apportent leur lot de
fonctions et fournissent de grandes quantités de bibliothèques et d’outils, chacune des
implémentations peut présenter des avantages décisifs selon le scénario du déploiement.
PyPy et les autres versions expérimentales
À l’heure où nous écrivons ce livre, il existe de nombreuses implémentations intéres-
santes de Python qui ne sont pas encore suffisamment prêtes pour répondre à des besoins
de mise en production. Leur pertinence intrinsèque et leur fort potentiel à venir justi-
fient néanmoins que l’on y jette un œil. Parmi celles-ci, deux connaissent un
développement particulièrement actif. Il s’agit de Pirate (
http://pirate.tangentcode.com
), une
implémentation de Python au-dessus de la machine virtuelle Parrot (laquelle supporte
également Perl 6 et d’autres VHL), et PyPy (
http://codespeak.net/pypy/
), une implémenta-
tion véloce et souple de Python, elle-même programmée en Python et qui peut
fonctionner par dessus plusieurs langages de bas niveau et machines virtuelles en utili-
sant des techniques avancées telles que la déduction des types de données.
ch01.fm Page 7 Vendredi, 19. janvier 2007 11:10 11