Introduction à Python

Python est un langage de programmation créé par Guido Van Rossum. La première version publique du langage est sortie en 1991. Son nom provient de la troupe de comiques anglais les Monty Python.

Python est un langage interprété, qui se veut simple à comprendre, modulable et aux applications multiples. C’est aujourd’hui un des langages les plus utilisés et les plus plébiscités par les développeurs.

Cette première leçon a pour but de présenter le langage Python et de poser quelques concepts fondamentaux relatifs aux langages de programmation qui nous seront utiles par la suite.

 

Python, un langage de programmation

Un ordinateur est une machine dont la fonction principale est de traiter des données, c’est-à-dire d’exécuter des séries d’instructions pour effectuer différentes tâches.

En tant que développeurs, nous allons vouloir fournir nos séries d’instructions aux ordinateurs afin qu’ils exécutent certaines tâches précises dans un certain ordre.

Pour cela, il va falloir que l’ordinateur nous comprenne et il va donc falloir qu’on exprime nos instructions dans un langage qu’il comprend. Le souci, ici, est que les ordinateurs ne comprennent qu’un seul langage : le binaire ou “langage machine” qui est très opaque pour nous (les Humains) et très long à écrire.

Pour pallier à ce problème, certaines personnes ont créé ce qu’on appelle des langages de programmation. Le but premier de tout langage de programmation est de passer des instructions à l’ordinateur.

Schématiquement, on utilise des langages de programmation car il est plus facile de nous exprimer et d’expliciter nos séries d’instruction en suivant leurs conventions d’écriture plutôt que de passer nos instructions directement en binaire à l’ordinateur.

Le langage de programmation se charge de la conversion : il reçoit nos instructions et les transforme en binaire pour les passer à l’ordinateur afin que celui-ci les exécute.

Tous les langages de programmation ne sont pourtant pas égaux : certains sont plus facilement compréhensibles pour nous que d’autres et certains nous permettent de transmettre uniquement certaines instructions à l’ordinateur.

Python est un langage de programmation dit de “très haut niveau”. Cela signifie qu’il possède un haut niveau d’abstraction par rapport au langage machine. Pour le dire très simplement : plus un langage de programmation est de “haut niveau”, plus sa syntaxe se rapproche de notre langage (l’anglais) plutôt que du langage machine. Un langage de haut niveau est donc plus facile à comprendre et à utiliser qu’un langage de plus bas niveau.

 

Python, un langage interprété

Comment font les langages de programmation pour transformer nos instructions en instructions compréhensibles par un ordinateur ? Ils leur faut un traducteur. Certains langages utilisent un interpréteur comme traducteur tandis que d’autres utilisent un compilateur.

Un interpréteur se distingue d’un compilateur par le fait que, pour exécuter un programme, les opérations d’analyse et de traductions sont réalisées à chaque exécution du programme (par un interprète) plutôt qu’une fois pour toutes (par un compilateur).

L’interprétation repose sur l’exécution dynamique du programme par un autre programme (l’interpréteur), plutôt que sur sa conversion en un autre langage (par exemple le langage machine).

Ainsi, contrairement au compilateur, l’interpréteur exécute les instructions du programme (ou en évalue les expressions), au fur et à mesure de leur lecture pour interprétation. Du fait de cette phase sans traduction préalable, l’exécution d’un programme interprété est généralement plus lente que le même programme compilé.

En revanche, les langages interprétés sont généralement plus simples à appréhender puisqu’on ne passe pas par une étape de compilation avant d’exécuter son programme et la portabilité.

En effet, un langage comme Python fonctionnera avec n’importe quel système d’opération (OS) du moment que l’OS en question possède l’interpréteur Python. Un compilateur, de l’autre côté, va produire un programme écrit en langage assembleur et ce langage assembleur va être différent pour chaque OS. Par conséquent, les programmes compilés ne peuvent s’exécuter que sur des ordinateurs dotés de la même architecture que l’ordinateur sur lequel ils ont été compilés.

 

Python, un langage extensible et polyvalent

Python est modulable et extensible : une fois qu’on connait les bases du langage, on va pouvoir relativement simplement ajouter de nouvelles fonctions ou modules pour étendre les possibilités de ce langage.

Python est un langage de programmation conçu dès le départ pour être “full stack”, c’est-à-dire pour avoir de multiples applications à la différence du PHP par exemple qui a clairement été imaginé pour fonctionner dans un contexte Web.

Ce langage est un langage orienté objet à la base mais Python supporte également d’autres paradigmes comme la programmation procédurale et fonctionnelle. Un paradigme est une “façon de coder” ou une “façon d’imaginer le code et de le structurer”. Nous reviendrons là dessus plus tard.

 

Un point sur les versions Python

Avant de passer à la suite, j’aimerais vous parler des différentes versions du langage Python car, sur ce point, l’équipe de développement de Python a fait des choix particuliers.

En informatique, les langages évoluent par “version”. Les équipes qui créent un langage travaillent sans cesse à l’amélioration de celui-ci mais chaque changement fait sur le langage n’est pas immédiatement intégré au langage ni disponible au public.

Au contraire, une liste de modifications / ajouts sont faits au langage en arrière plan et, dès que l’équipe gérant l’évolution du langage juge les changements suffisamment importants et stables, une nouvelle “version” du langage qui incorpore ces changement est distribuée.

La première grosse mise à jour de Python date de 2000 avec la version Python 2. Les versions se sont ensuite enchainées normalement avec Python 2.1, 2.2, 2.3, etc. jusqu’en 2009 avec la sortie de Python 3.

Pour Python 3, l’équipe qui gère l’évolution du Python a fait le choix audacieux de partir sur de nouvelles bases et de casser la compatibilité avec les anciennes versions.

Généralement, lorsqu’un langage évolue et que de nouvelles versions paraissent, les équipes de développement font bien attention à proposer une compatibilité ascendante, c’est-à-dire à faire en sorte que les codes créés sous d’anciennes versions fonctionnent toujours avec les nouvelles versions des langages. En effet, sans ce principe de compatibilité, la plupart des programmes et des sites Web ne fonctionneraient pas puisque les développeurs de ceux-ci devraient absolument les modifier à chaque nouvelle version d’un langage utilisé pour coller aux nouvelles normes.

A l’inverse, le fait de proposer une comptabilité ascendante entre chaque version pose de vrais problèmes d’héritage aux développeurs d’un langage puisque ces derniers sont obligés de conserver certaines syntaxes et fonctionnalités totalement obsolètes.

Voulant modifier en profondeur leur langage et proposer une version beaucoup plus “propre” et au goût du jour, la Python Software Foundation (l’équipe chargée du développement du Python) a donc décidé de faire table rase pour Python 3 et de partir sur de nouvelles bases.

Le souci ici est que Python 2.x était déjà très populaire à l’époque et que cela allait mettre de nombreuses personnes dans l’embarras. L’équipe de Python a donc fait le choix de conserver deux versions du langage : Python 2.x et Python 3.x et de les faire évoluer de front. Pour être tout à fait précis, la version 3 est la version dont les fonctionnalités allaient continuer d’évoluer tandis que la version 2 n’allait recevoir que des mises à jour liées à la sécurité.

Aujourd’hui encore, on retrouve ces deux versions de Python qui co-existent. Pour nous, cependant, le problème ne se pose pas : nous travaillerons bien évidemment avec la dernière version en date de Python qui est à l’heure où j’écris la version 3.7.3.

Laisser un commentaire