Article de reference

Histoire de Python

Ancien logo des Pythons, années 1990-2006 Nouveau logo Python, 2006-présent Guido van Rossum en 2014 Le langage de programmation Python a été conçu à la fin des années 1980 et s...

Ancien logo des Pythons, années 1990-2006
Nouveau logo Python, 2006-présent
Guido van Rossum en 2014

Le langage de programmation Python a été conçu à la fin des années 1980 et son implémentation a débuté en décembre 1989 sous l' impulsion de Guido van Rossum au CWI aux Pays-Bas, en tant que successeur d' ABC , capable de gérer les exceptions et d'interagir avec le système d'exploitation Amoeba . Van Rossum était le principal auteur de Python et a joué un rôle central dans son orientation (comme en témoigne le titre que lui a attribué la communauté Python : « Dictateur bienveillant à vie » ) jusqu'à sa démission le 12 juillet 2018 . Python tire son nom de l' émission télévisée de la BBC, Monty Python's Flying Circus .

Python 2.0 a été publié le 16 octobre 2000, avec de nombreuses nouvelles fonctionnalités majeures, telles que les compréhensions de listes , le ramasse -miettes détectant les cycles , le comptage de références , la gestion de la mémoire et la prise en charge d' Unicode , ainsi qu'un changement dans le processus de développement lui-même, avec un passage à un processus plus transparent et soutenu par la communauté.

Python 3.0, une version majeure incompatible avec les versions précédentes, a été publiée le 3 décembre 2008 après une longue période de tests. Nombre de ses principales fonctionnalités ont également été rétroportées vers les versions Python 2.6 et 2.7 , compatibles avec les versions précédentes, jusqu'à l'arrêt définitif du support de Python 2 début 2020. Les versions de Python 3 jusqu'à la version 3.12 incluent l' 2to3utilitaire qui automatise la traduction du code Python 2 vers Python 3.

les classes avec héritage , la gestion des exceptions, les fonctions et divers types de données fondamentaux tels que `int` système de modules emprunté à Modula-3 ; Van Rossum décrit ce module comme « l'une des principales unités de programmation de Python ». Le modèle d'exceptions de Python ressemblait également à celui de Modula-3, avec l'ajout d'une forum de discussion principal pour Python, `comp.lang.python` , a été créé.

Version 1

Python a atteint la version 1.0 en janvier 1994. Les principales nouveautés de cette version étaient les outils de programmation fonctionnelle lambda lambda, reduce() map, filter() filteret reducemap(). Van Rossum a déclaré que « Python a acquis lambda, reduce(), filter() et map() grâce à un développeur Lisp qui les regrettait et a soumis des correctifs fonctionnels ».

La dernière version publiée pendant que Van Rossum travaillait au CWI était Python 1.2. En 1995, Van Rossum a poursuivi son travail sur Python à la Corporation for National Research Initiatives (CNRI) à Reston, en Virginie, d'où il a publié plusieurs versions.

À partir de la version 1.4, Python s'est enrichi de plusieurs nouvelles fonctionnalités. Parmi celles-ci, on peut citer les arguments nommés inspirés de Modula-3 (qui sont également similaires aux arguments nommés de Common Lisp ) et la prise en charge intégrée des nombres complexes . On y trouve également une forme rudimentaire de masquage des données par altération de noms , bien que celle-ci soit facilement contournable.

Durant son séjour au CNRI, Van Rossum a lancé l'initiative « Programmation informatique pour tous » (CP4E), visant à rendre la programmation plus accessible à un plus grand nombre de personnes, en leur fournissant une « littératie » de base en langages de programmation, comparable aux compétences de base en anglais et en mathématiques requises par la plupart des employeurs. Python a joué un rôle central : grâce à sa syntaxe claire, il était déjà adapté, et les objectifs de CP4E présentaient des similitudes avec ceux de son prédécesseur, ABC. Le projet était financé par la DARPA . Digital Creations .

La version 1.6 de Python incluait une nouvelle licence CNRI, nettement plus longue que la licence CWI utilisée pour les versions précédentes. Cette nouvelle licence stipulait que le droit de l' État de Virginie s'appliquait . La Free Software Foundation (FSF) a fait valoir que cette clause de choix de loi était incompatible avec la licence publique générale GNU (GPL) . BeOpen, CNRI et la FSF ont négocié une modification de la licence libre de Python afin de la rendre compatible avec la GPL. Python 1.6.1 est essentiellement identique à Python 1.6, à quelques corrections de bogues mineurs près, et utilise la nouvelle licence compatible avec la GPL.

Version 2

Python 2.0, sorti en octobre 2000 a introduit les compréhensions de listes , une fonctionnalité empruntée aux langages de programmation fonctionnelle SETL et Haskell . La syntaxe de Python pour cette construction est très similaire à celle de Haskell, à l'exception de la préférence de Haskell pour les caractères de ponctuation et de Python pour les mots-clés alphabétiques. Python 2.0 a également introduit un ramasse-miettes capable de supprimer les références circulaires

Python 2.1 était proche de Python 1.6.1 et de Python 2.0. Sa licence a été renommée Licence de la Fondation Python pour le logiciel logiciel . L'ensemble du code, de la documentation et des spécifications ajoutés depuis la sortie de la version alpha de Python 2.1 appartiennent à la Fondation Python pour le logiciel logiciel (PSF), une organisation à but non lucratif créée en 2001, sur le modèle de la Fondation Apache pour le logiciel logiciel . Cette version incluait une modification de la spécification du langage afin de prendre en charge les portées imbriquées, comme d'autres langages à portée statique . (Cette fonctionnalité était désactivée par défaut et n'était pas requise jusqu'à Python 2.2.)

Python 2.2 est sorti en décembre 2001 ; une innovation majeure a été l’unification des types (types écrits en C ) et des classes (types écrits en Python) en une seule hiérarchie. Cette unification a rendu le modèle objet de Python purement et systématiquement orienté objet. Des générateurs , inspirés d’ Icon , ont également été ajoutés .

Un serpent vert, la tête relevée et la langue tendue
Un poids en chute libre étiqueté « 16 tonnes »
Un symbole très abstrait évoquant les extrémités de deux serpents formant une double hélice vue de face, incurvée dans le sens horaire vers le spectateur : un serpent bleu arrive par derrière à gauche, la tête repliée sur son corps en haut, et un serpent jaune arrive par derrière à droite, la tête repliée sur son corps en bas ; la silhouette générale du symbole forme un signe plus grossier, et la position des yeux évoque le yin et le yang.
Logos historiques de Python utilisés sur Windows (à gauche) et sur Macintosh (au centre), et le logo utilisé depuis la version 2.5 (à droite).

Python 2.5 a été publié en septembre 2006 et a introduit l' verrou avant que le bloc de code ne soit exécuté et en libérant le verrou par la suite, ou en ouvrant un fichier puis en le fermant), permettant un comportement similaire à l'acquisition de ressources lors de l'initialisation (RAII) et remplaçant un idiome try/finally courant.

Python 2.6 a été publié en même temps que Python 3.0 et intégrait certaines fonctionnalités de cette version, ainsi qu'un mode « avertissements » signalant l'utilisation de fonctionnalités supprimées dans Python 3.0. De même, Python 2.7 a été publié en même temps que Python 3.1 et intégrait ses fonctionnalités, sorti le 26 juin 2009. Les publications parallèles des branches 2.x et 3.x ont ensuite cessé, et Python 2.7 a été la dernière version de la série 2.x. En novembre 2014, il a été annoncé que Python 2.7 serait pris en charge jusqu'en 2020, mais les utilisateurs ont été encouragés à migrer vers Python 3 dès que possible. Le support de Python 2.7 a pris fin le 1er janvier 2020, avec le gel du code de la branche de développement 2.7. Une dernière version, la 2.7.18, a été publiée le 20 avril 2020 et comprenait des correctifs pour des bogues critiques et des problèmes bloquants. Cela a marqué la fin du cycle de vie de Python 2.

Version 3

Zen de Python : « Il devrait y avoir une seule façon évidente de faire les choses, et de préférence une seule. »

Néanmoins, Python 3.0 restait un langage multi-paradigme . Les développeurs pouvaient toujours suivre les paradigmes de programmation orientée objet , structurée et fonctionnelle , entre autres, mais au sein de ces vastes choix, les détails étaient censés être plus évidents dans Python 3.0 que dans Python 2.x.

Compatibilité

Python 3.0 a rompu la rétrocompatibilité, et une grande partie du code Python 2 ne s'exécute pas sans modification sous Python 3. Le typage dynamique de Python , combiné aux modifications prévues de la sémantique de certaines méthodes de dictionnaires, par exemple, a rendu la traduction mécanique parfaite de Python 2.x vers Python 3.0 très difficile. Un outil appelé «2to3 » effectue les parties de la traduction qui peuvent être réalisées automatiquement. À ce titre, 2to3il semblait assez performant, bien qu'une première évaluation ait noté que certains aspects de la traduction ne seraient jamais pris en charge par un tel outil. Avant le déploiement de Python 3, il était recommandé aux projets nécessitant une compatibilité avec les séries 2.x et 3.x d'avoir une source unique (pour la série 2.x) et de produire des versions pour la plateforme Python 3.x à l'aide de 2to3. Les modifications du code Python 3.x étaient déconseillées tant que le code devait fonctionner sous Python 2.x. Cette pratique n'est plus recommandée. En 2012, l'approche privilégiée consistait à créer une base de code unique pouvant s'exécuter sous Python 2 et 3 à l'aide de modules de compatibilité.

Caractéristiques

Voici quelques-uns des principaux changements apportés par Python 3.0 :

  • En modifiant la fonction fonction intégrée et non une instruction, on facilite la modification d'un module pour utiliser une autre fonction d'affichage, tout en uniformisant la syntaxe. En Python 2.6 et 2.7, elle est disponible en tant que fonction intégrée, mais est masquée par la syntaxe de l'instruction d'affichage, qui peut être désactivée en ajoutant `print()` en haut du fichier des déclarations de type informelles ou à d'autres fins
  • Unifier les types octets
  • Suppression des fonctionnalités de rétrocompatibilité, notamment les classes de style ancien, les exceptions de chaînes de caractères et les importations relatives implicites.
  • Changement dans le comportement de la division entière : en Python 2, la division entière renvoie toujours un entier. Par exemple , `division(1/2) ` donne `division(1/2 )` ; tandis qu’en Python 3, `division( 1/2) ` donne `division(1/2)` . (En Python 2 ( à partir de la version 2.2 ) et en Python 3, un opérateur distinct permet de retrouver l’ancien comportement : `division(1/2)` .)Python 3.2 a défini une ABI stable , permettant aux modules d'extension de s'appuyer sur des fonctions présentes dans différentes versions de Python.

    Python 3.5 a introduit le module typing, qui permet les annotations de type et de signature de fonction . Il a également introduit la syntaxe async/await.pyo . De plus, les fichiers ont été supprimés, les fichiers représentant à la fois le bytecode.pyc non optimisé et optimisé .

    Python 3.6 a ensuite introduit les générateurs asynchrones et les compréhensions asynchrones ( pour les listes , les dictionnaires et les ensembles), ainsi que les littéraux de chaînes formatées (f-strings).

    Python 3.10 a introduit la correspondance de modèles structurée via les instructions match/case. De plus, il a fourni des messages d'erreur améliorés qui « s'inspiraient des travaux précédents dans l'interpréteur PyPy » et a ajouté l' opérateur |de type union .

    Python 3.11 a étendu les fonctionnalités de gestion des exceptions . Cette version s'est concentrée sur l'amélioration des performances de Python ; la version 3.11 serait 10 à 60 % plus rapide que la version 3.10 , et la version 3.12 offre un gain supplémentaire de 5 %.

    Python 3.12 a ajouté le nouveau mot-clé typeet amélioré les messages d'erreur.

    Python 3.13 a introduit un compilateur JIT (Just-In-Time) expérimental , la possibilité de désactiver le verrou global de l'interpréteur , un interpréteur interactif ( REPL ) nouveau et amélioré , ainsi qu'un ramasse-miettes incrémental . À partir de Python 3.13, cette version et les suivantes bénéficient de deux ans de support complet (contre un an et demi auparavant), suivis de trois ans de support de sécurité ; la durée totale de support reste inchangée.

    Python 3.14 a introduit un nouvel interpréteur d'appel terminal en tant que fonctionnalité optionnelle, offrant des performances améliorées de 3 à 5 %.

    Python 3.15 activera le mode UTF-8 par défaut ; Ce mode est pris en charge par toutes les versions actuelles de Python, mais son activation reste pour l’instant optionnelle. L’UTF-8 est déjà utilisé par défaut sous Windows (et d’autres systèmes d’exploitation ) pour la plupart des usages, à l’exception de l’ouverture de fichiers. L’activation de l’UTF-8 rend également le code entièrement multiplateforme .

    Sécurité

    Les mises à jour de sécurité ont été accélérées en 2021 et à nouveau à deux reprises en 2022. D'autres problèmes ont été corrigés en 2023 et en septembre 2024 (pour les versions Python 3.8.20 à 3.12.6) — toutes les versions (y compris la 2.7) étaient vulnérables en raison de problèmes pouvant entraîner une exécution de code à distance et un empoisonnement du cache Web .

Tableau des versions

Versions antérieures aux versions numérotées :

  • Mise en œuvre commencée décembre 1989 Centrum Wiskunde & Informatica 1990 VersionDernière version microdate de sortieFin du soutien completFin des correctifs de sécurité29/07/1993 14/07/1994 1994-11-10 Non pris en chargeNon pris en chargeNon pris en charge13 avril 1999 2000–09 2001-06-22 2002-04-09 30/05/2003 11/03/2008 19/12/2008 2011-05-26 2020-01-01 2009-06-27

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index