Python : des implémentations non standards

Le langage orienté objets a été décliné pour de nombreux environnements. Des implémentations qui ne sont pas compatibles entre elles, et qui présentent des différences notables.

Python est apparu en 1990. C'est un langage de programmation orienté objet de haut niveau. Sa syntaxe est simple, il est portable sur de nombreux systèmes d'exploitation. Sa bibliothèque standard est très riche et il existe de nombreuses bibliothèques gratuites. Python est extensible, c'est-à-dire qu'il est interfaçable avec d'autres langages.

 

Comme Java, Python a besoin d'une machine virtuelle (un interpréteur). Plusieurs implémentations ont été développées, et permettent de compiler le code source Python en un code intermédiaire s'exécutant sur différentes plates-formes. Son interpréteur de référence est CPython, une implémentation en C. Cette version est appelée couramment Python. C'est la plus connue et la plus maintenue. Elle est conseillée aux débutants.

 

Jython est l'interpréteur Python écrit en Java. Il s'appellait anciennement JPython mais son nom fut modifié à cause d'un problème de licence. Pour utiliser Jython, il faut d'abord installer le JDK, puis installer Jython. Jython compile le code source Python en bytecode Java. Il produit un ficher .class qui permet de faire tourner les programmes Python sur n'importe quelle machine virtuelle Java. Jython intègre la syntaxe et les classes de Python, ainsi que les classes de Java. Jython est plus lent que CPython, il a souvent du retard dans l'implémentation des nouvelles fonctionnalités apportées à CPython.

 

Python intégré à la plate-forme .Net

 

Microsoft voulait montrer que sa plate-forme supportait les langages dynamiques. IronPython fut codé en C#. Cette implémentation compile le code source Python en un fichier intermédiaire s'exécutant sur .Net ou sur d'autres versions de la machine virtuelle Microsoft comme Mono ou dotGNU. Les développeurs bénéficient également des bibliothèques de .Net.

 

Pypy est un projet de recherche libre financé par l'Union Européenne. Il a pour objectif d'implémenter un interpréteur Python en Python, qui devrait tourner plus vite que CPython. Il compile le code Python en langage machine, et produit du code exécutable. Ce projet a abouti à Rpython, qui apporte de nombreuses améliorations. Cependant, Pypy est toujours en développement. Il est encore deux fois plus lent que CPython.

 

La simplicité de Python en fait un support de cours idéal pour les débutants en programmation

Stackless Python est une version qui vise à éliminer complètement l'utilisation de la pile du langage C. C'est une version totalement différente, elle ne peut pas être ajoutée à une installation existante. La plupart de ses fonctions ont été implémentées dans Pypy, l'interpréteur Python en Python.

 

Les implémentations ont toutes leurs spécificités qui les différencient les unes des autres. Ces spécificités peuvent concerner les messages d'erreur ou plus important, l'implémentation de certaines classes. Par exemple, le module cmath n'est pas supporté par IronPython. Pour comparer, la déclaration d'une classe en IronPython s'écrit :

 

class foo(object): pass

......

 

alors qu'en Cpython elle ressemble à ceci :

 

class C(object):       

    def foo(self): pass

......

 

Autre exemple, Jython écrit "1.0E20" alors que CPython affiche "1e+020".

 

L'évolution de Python s'effectue à travers les PEP, les propositions d'amélioration de Python. Ce sont des documents textuels proposant des modifications et des améliorations du langage. Un PEP peut être une proposition d'orientation pour le développement (Process PEP), une proposition technique (Standard Track PEP) ou une simple recommandation (informational PEP).