python

Fiche logiciel validé
  • Création ou MAJ importante : 12/09/13
  • Correction mineure : 12/09/13
Mots-clés

python : langage multi-paradigme et multi-usage

Description
Fonctionnalités générales

Le langage de programmation Python a été créé par Guido Von Rossum en 1989. Depuis, la communauté ne cesse de s'agrandir et nous retrouvons maintenant Python dans les systèmes de base des systèmes Linux et Mac. Python est un langage modulaire et orienté objet. Il peut être utilisé comme un langage de scripts mais également comme un langage de développement. Ce qui fait la force de ce langage est sa faculté d'adaptation. Il peut être utilisé dans de nombreux domaines grâce à des bibliothèques spécialisées (bases de données, réseaux, calcul scientifique, web, gui, ...).

Il existe différentes implémentations de ce langage :

  • CPython
    implémentation de base basée sur le langage C ANSI,
  • Jython
    implémentation permettant de mixer Python et JAVA dans le même JVM,
  • IronPython
    implémentation permettant d'utiliser Python pour Microsoft .NET,
  • PyPy
    implémentation de Python en Python,
  • CLPython
    implémentation de Python en Common Lisp.

Il existe également des interfaçages avec de très nombreux langages, entre autres .NET.

L'exécution d'un script Python se fait en deux étapes (transparentes pour l'utilisateur) : le script est dans un premier temps compilé dans un langage proche du langage machine appelé bytecode qui est ensuite transmis à l'interpréteur pour son exécution. L'avantage de cette transformation est que l'exécution du script est beaucoup plus rapide qu'un vrai langage interprété tel que bash. On retrouve une procédure similaire lorsque l'on fait du java.

Syntaxe et typage
Le langage Python a une syntaxe qui se veut très simple et contient des types de données évolués (liste, tuple, dictionnaire, ...) permettant d'avoir des codes concis et clairs et de produire rapidement du code utile. Un groupe d'instructions (conditions, boucles, ...) est délimité par un bloc défini par l'indentation, obligeant l'utilisateur à bien structurer son code. La lecture en est grandement facilitée.
Il n'est pas nécessaire de typer ses variables. Même si le typage n'est pas vérifié à la compilation, le langage ne permet pas de faire n'importe quoi. Il est, par exemple, impossible d'additionner un entier à une chaîne de caractères. Python est un langage à typage dynamique et fortement typé.

Python et l'objet
En Python, tout est objet mais il n'est pas nécessaire d'avoir de bonnes connaissances dans ce domaine pour pouvoir programmer dans ce langage. On notera quand même qu'il est possible de faire de l'héritage multiple et de la surcharge d'opérateurs beaucoup plus facilement qu'en C++. Les objets créés ne sont jamais détruits par l'utilisateur. Ils sont collectés par un ramasse-miette ("garbage collector") très efficace et détruits par celui-ci lorsqu'ils ne sont plus utilisés.
Étant donné que vous ne manipulez que des objets en Python, vous pouvez passer n'importe quoi dans une fonction. Ce ne sont que des références à ces objets.

Exceptions
Python intègre, comme java ou le C++, un système d'exceptions, qui permet de simplifier considérablement la gestion des erreurs.

Modules
Il est possible de créer ses propres modules Python qui pourront être réutilisés dans d'autres programmes. Cette création est très simple étant donné qu'un module n'est rien d'autre qu'un fichier python, une bibliothèque ou un dossier comprenant des scripts Python. Il existe de nombreux modules disponibles sur internet. Vous trouverez une liste non exhaustive ici.

Environnements de travail
Il existe différents IDE pour programmer agréablement en Python. Il y a bien évidemment Eclipse avec PyDev mais vous trouverez également un projet très intéressant nommé Spyder.

Autres fonctionnalités

Il est facile de programmer en Python et d'avoir rapidement des codes fonctionnels, même lorsqu'ils sont écrits par des étudiants ou des stagiaires qui n'ont au départ pas de connaissance dans le langage.

Néanmoins, un code écrit en pur Python peut parfois être lent. Il est donc nécessaire de l'optimiser en l'interfaçant avec des langages de plus bas niveau (C ou Fortran). Là encore, il se démarque des autres langages en mettant à disposition un ensemble d'outils permettant d'optimiser son code facilement.

L'API C, fournie avec Python, permet d'appeler et de manipuler des objets Python dans du C. Il faut néanmoins une certaine phase d'adaptation pour utiliser pleinement celle-ci. Heureusement, différents outils sont à notre disposition pour faire le travail à notre place :

Il existe d'autres outils permettant d'appeler directement des bibliothèques C dans du code Python tel que ctypes.

Ces interfaçages permettent d'offrir à la communauté des outils Python évolués dans certains domaines. On peut par exemple utiliser la bibliothèque MPI de manière très simple grâce à mpi4py, pyMPI,... ou encore faire du CUDA via pyCUDA ou de l'openCL via pyOpenCL. On peut voir par ces petits exemples que le langage s'adapte dans pas mal de situations.

L'installation de base de Python fournit également un ensemble d'outils permettant de faire du profiling, du debogage ou encore des tests unitaires facilement.

Contexte d'utilisation dans mon laboratoire/service

J'utilise ce langage dans plusieurs projets. Notamment dans un code de décomposition de domaine en éléments finis utilisant les bibliothèques numpy, scipy, VTK, petsc4py. Le code est parallélisé via mpi4py. Le but est d'avoir un code de calcul performant tout en gardant une certaine facilité de programmation et d'utilisation pour les personnes de mon laboratoire plus habituées à utiliser Matlab.

Le groupe ISGE du LAAS utilise python pour traiter rapidement les données issues des caractérisations électriques des composants microélectroniques étudiés. Python permet à la fois de traiter mathématiquement les données (algorithmes de corrections, calculs statistiques... bibliothèques numpy et scipy) et de les représenter grâce à la bibliothèque Matplotlib. Dans une moindre mesure, python sert également à piloter des bancs expérimentaux simples via la bibliothèque pyvisa. Enfin, pygtk est une boîte à outils graphique utilisée pour l'interface utilisateur d'un logiciel plus avancé de traitement des données d'un banc de caractérisation particulier.

Limitations, difficultés, fonctionnalités importantes non couvertes

Si Python est un langage facile à apprendre et à utiliser, il reste un langage plus ou moins interprété. Il souffre donc pour des gros projets de certaines lenteurs et il est nécessaire pour y palier de l'interfacer avec d'autres langages.

La première version 3 est sortie en décembre 2008 et les changements par rapport aux versions 2 successives sont très importants. L'idée de la version 3 était de faire un gros nettoyage dans le but d'éliminer les faiblesses des versions 2.x du langage. Depuis la version 2.6, il existe un outil "2to3" qui permet de faire une traduction de votre code compatible avec la version 2.6 vers une version 3. La version 2.7 est destinée à faire le passage entre les versions 2 et les versions 3. Néanmoins, on constate depuis que dans le domaine du calcul scientifique de nombreux modules n'ont toujours pas fait le passage et on peut donc se demander si on travaillera un jour pleinement avec la version 3.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré
  • Toutes les distributions Linux.
  • Mac OS X vient avec une installation Python fournie par Apple, mais il est fortement recommandé aux utilisateurs souhaitant installer des modules Python supplémentaires de commencer avec une deuxième installation Python afin d'éviter de perturber l'installation Mac OS dont dépendent certains services du système. Pour Mac OS X, le projet MacPorts donne accès à différentes versions de python et à un ensemble de bibliothèques très utiles. On peut également utiliser Anaconda.
  • Sous Windows, on peut citer 3 projets qui permettent de faire du Python sur ce système : Python(x,y), winpython et Anaconda.
Plates-formes

Unix-like, Windows et Mac OS X.

Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

Le développement du langage Python est assuré par la Python Software Foundation depuis la version 2.1.

Eléments de pérennité
  • Le langage existe depuis plus de 20 ans.
  • On assiste depuis quelques années à un vif engouement pour ce langage et le nombre de modules disponibles sur internet ne cesse d'augmenter.
  • Il y a de plus en plus d'applications qui sont installées sur un système Linux de base qui utilisent Python.
Références d'utilisateurs institutionnels

On peut trouver sur cette page quelques groupes d'utilisateurs.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur