python
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.
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.
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.
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.