Python, une définition en un clic

En quelques années, Python est devenu un des langages les plus populaires auprès des développeurs : en août, il était deuxième à l’index TIOBE. C’est un incontournable de l’IA et du machine learning. Pourquoi un tel succès ?

Python, une définition en un clic

Python a plus de 20 ans. Guido van Rossum l’a créé en 1989. Mais il faut reconnaître que les débuts sont timides, et le langage reste particulièrement discret. Le langage décolle réellement dans les années 2000, avant de s’imposer dans les années 2010 comme un des langages les plus importants. Plusieurs facteurs expliquent ce succès : son utilisation dans le machine learning, la stabilité du langage et sa prise en charge par de plus en plus d’outils de développement et de plateformes. Parallèlement à cela, il s’impose aussi comme un des langages pour l’apprentissage de la programmation à l’école.

publicité

Les usages de Python

Le langage s’utilise dans de nombreux domaines :

  • le développement web (back-end) ;
  • le machine learning, traitement de données et de modèles : PyTorch est sans doute le meilleur exemple ;
  • le développement de logiciels : oui, on peut développer des apps en Python même si ce n’est pas un langage compilé ;
  • les scripts système ;
  • l’apprentissage de la programmation.

Le difficile passage de Python 2 à Python 3

Pour assurer le bon développement et la gouvernance du langage, une fondation est créée : la Python Software Foundation. En décembre 2008, Python 3.0 sort. Pour faire évoluer le langage et reconstruire des fondations nouvelles, les développeurs provoquent une cassure : la v3 du langage sera incompatible avec la version 2. Le langage, entre les deux versions, reste fondamentalement le même, mais de nombreuses évolutions apparaissent, notamment sur la programmation objet et le comportement de certains éléments. Et la v3 va aussi déprécier beaucoup de fonctionnalités et les retirer au fur et à mesure. La librairie standard, le cœur du langage, est refondue.

La 2.7 sera la dernière version majeure de Python 2. Elle sort en 2010. La fondation fait évoluer la version 3. Le débat entre Python 2 et 3 est désormais révolu. Et désormais, la fondation sortira une version majeure du langage chaque année, pour éviter d’attendre plusieurs années. Cette cadence évite le big bang et les casses de compatibilité trop importantes. Moins de nouveautés, mais des évolutions “douces” et régulières.

Un langage objet et asynchrone

Python est un langage interprété et non compilé. Cela signifie que l’on doit utiliser un interpréteur, comme la machine virtuelle en Java, pour exécuter le code, sans passer par un compilateur. Le code est immédiatement exécutable.

Il suffit d’écrire la commande suivante : python3 hello.py.

On peut interagir directement en Python avec le shell du langage (REPL). Il suffit de taper dans le terminal : python3 et on ouvre une session interactive. Le plus simple reste d’utiliser un éditeur de texte ou un IDE Python. Autre mécanisme incontournable du langage : PIP. C’est l’outil d’installation des modules Python. Il est installé par défaut.

Python est un langage à typage fort dynamique. C’est-à-dire que le typage se fait à l’exécution du code et non au codage. Depuis longtemps, il y a débat pour savoir si le typage dynamique est une bonne chose ou non. En Python, par défaut, le type des variables est défini “au dernier moment”.

L’avantage : on ne soucie pas du type des données. L’inconvénient : on ne découvre le problème qu’au dernier moment.

Autre caractéristique de Python : il est objet. Dans ce langage, on a l’habitude de dire que tout est objet. Cela signifie que le développeur crée et manipule des objets, et notamment via les classes (class nomdelaclasse). La puissance de Python vient aussi des mécanismes de multithreading et de la concurrence. Cela signifie que l’on déclare et utilise plusieurs threads dans un projet. A cela se rajoute la notion d’asynchronisme. Cela signifie que plusieurs processus peuvent s’exécuter simultanément sans qu’il y ait de blocage : le processus B doit attendre que le A se termine, etc. Sur ce dernier point, tout développeur qui veut faire de l’asynchronisme passera par asyncio.

Asyncio est LA librairie gérant la concurrence et donc pour implémenter dans son code l’async/await.

Ces mécanismes de programmation sont présents dans tous les principaux langages, mais ils sont souvent difficiles à maîtriser et le code nécessite une grande rigueur de structure.

Un autre élément de base, incontournable, est la fameuse librairie standard. Cette librairie est au cœur du langage : elle décrit la syntaxe et la sémantique de Python. Elle décrit tous les composants et les composants optionnels du langage. Les modules inclus sont écrits en C, pour des questions de performances et d’accès bas niveau. Si la librairie vient avec des modules standards, elle est extensible via les modules additionnels, non obligatoires.

Pour véritablement comprendre et maîtriser le langage, il faut impérativement maîtriser la librairie standard. Nous y trouvons notamment (la liste est non exhaustive) : les fonctions, les constants, les types, les exceptions, la gestion des textes, les types de données, les modules numériques et mathématiques, les accès aux fichiers, le format des fichiers supportés, les services de cryptographie, l’exécution concurrente, les couches réseau et les communications interprocessus, etc.

En Python, ce qui déroute, au début, c’est l’indentation du code. Le formatage du code permet de définir clairement les blocs de code, mais aussi d’apporter une lisibilité du code. L’usage d’un IDE permettra d’avoir un formatage automatique.

Python a la réputation d’être un langage abordable et d’un apprentissage relativement simple, du moins pour les bases du langage. Cette “simplicité” fait qu’il est le langage référence pour l’apprentissage de la programmation à l’école.

Python a aussi la réputation d’être moins verbeux que Java par exemple. Ce qui est un avantage.

Les interfaces graphiques

Si Python est très utilisé en IA / machine learning, il est possible de créer des interfaces graphiques. Il existe de nombreuses librairies graphiques dédiées au langage. Tkinter est la couche graphique standard de Python et il est installé avec Python 3. Il est disponible sur la plupart des systèmes supportés. L’autre GUI est PyQT. Ce projet est construit sur le framework multiplateforme Qt.

Quelques autres librairies : wxPython, PySimpleGUI, PyForms, PySide.

Python pour le web

On oublie parfois que Python peut être utilisé comme langage de développement web. L’avantage est d’utiliser un langage puissant, objet et modulaire. Parmi les environnements Python pour le web, nous avons Django. Django est un framework web open source. Nous pouvons aussi citer Flask, Zope, Pylons, Falcon.

Micropython

Pour les MCU, on dispose d’une édition spécifique : MicroPython. Le MicroPython est un sous-ensemble de Python incluant une partie de la librairie standard. Par définition, un MCU possède des ressources matérielles limitées (processeur, mémoire, stockage). MicroPython dérive de Python 3. On peut l’utiliser (liste non exhaustive) sur PybStick, ESP ou encore Raspberry Pi Pico.

Leave a Reply

Your email address will not be published. Required fields are marked *