L'Origine de Python
L'auteur de Python, Guido von Rossum, est bien un Néerlandais. En 1982, Guido a obtenu une maîtrise en mathématiques et informatique de l'Université d'Amsterdam. Cependant, même s’il était un mathématicien en quelque sorte, il appréciait encore plus les ordinateurs. Selon lui, malgré sa double qualification en mathématiques et en informatique, il a toujours tendance à faire des travaux liés à l'informatique et aime faire tout ce qui touche à la programmation.
Guido von Rossum
A cette époque, il était exposé et utilisait des langages tels que Pascal, C, Fortran et ainsi de suite. Le principe de conception de base de ces langages est de rendre les machines plus rapides. Dans les années 1980, bien qu'IBM et Apple aient lancé une vague d'ordinateurs personnels, la configuration de ces ordinateurs personnels était très faible (dans les termes d'aujourd'hui). Par exemple, les premiers Macintosh n'avaient qu'une fréquence de processeur de 8 MHz et 128 Ko de RAM. Une grande matrice pouvait remplir la mémoire. Le cœur de tous les compilateurs est d’optimiser pour que le programme puisse s’exécuter. Afin d'augmenter l'efficacité, le langage oblige également les programmeurs à penser comme un ordinateur afin de pouvoir écrire des programmes plus conformes aux goûts de la machine. À cette époque, les programmeurs étaient impatients d’exploiter chaque centimètre de la puissance de l’ordinateur avec leurs mains. Certains pensent même que les pointeurs du langage C sont un gaspillage de mémoire. Quant à la saisie dynamique, à la gestion automatique de la mémoire, à l'orientation objet... n'y pensez pas, cela paralysera votre ordinateur.
Cependant, cette façon de penser trouble Guido. Guido sait écrire une fonction en C, mais l'ensemble du processus d'écriture prend beaucoup de temps (même s'il sait déjà exactement comment l'implémenter). Son autre option est la coquille. Bourne Shell existe depuis longtemps en tant qu'interprète (interPReter) pour les systèmes UNIX. Les administrateurs UNIX utilisent souvent le shell pour écrire des scripts simples afin d'effectuer certains travaux de maintenance du système, tels que des sauvegardes régulières, la gestion du système de fichiers, etc. Le shell peut être comme une colle qui relie de nombreuses fonctions sous UNIX entre elles. De nombreux programmes comportant des centaines de lignes en langage C peuvent être complétés en quelques lignes seulement dans le shell. Cependant, l’essence du shell est d’invoquer des commandes. Ce n'est pas vraiment une langue. Par exemple, le shell n'a pas de types de données numériques et les opérations d'addition sont très compliquées. Bref, le shell ne peut pas mobiliser pleinement les fonctions de l'ordinateur.
(Pour le shell, vous pouvez vous référer à l'architecture Linux et à la ligne de commande et aux commandes Linux)
Guido espère avoir un langage qui puisse, comme le langage C, le pleinement appelle l'interface fonctionnelle de l'ordinateur et peut être facilement programmé comme un shell. La langue ABC donne de l'espoir à Guido. ABC a été développé par le CWI (Centrum Wiskunde & Informatica, Mathematics and Computer Research Institute) aux Pays-Bas. Guido travaille chez CWI et est impliqué dans le développement du langage ABC. La langue ABC est destinée à l’enseignement. Contrairement à la plupart des langues de l'époque, l'objectif du langage ABC était de « faire en sorte que les utilisateurs se sentent mieux ». ABC Language espère rendre le langage facile à lire, facile à utiliser, facile à mémoriser et facile à apprendre, et stimuler l'intérêt des gens pour l'apprentissage de la programmation. Par exemple, ce qui suit est un programme ABC de Wikipédia. Ce programme est utilisé pour compter le nombre total de mots (Mot) apparaissant dans le texte :
COMMENT RETOURNER un document de mots :
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
HOW TO est utilisé pour définir une fonction. Un programmeur Python devrait facilement comprendre ce programme. Le langage ABC utilise les deux points (:) et l'indentation pour représenter les blocs de programme (le langage C utilise {} pour représenter les blocs de programme). Il n'y a pas de point-virgule à la fin de la ligne. Il n'y a pas non plus de parenthèses () dans les structures for et if. Si vous remplacez HOW TO par def, la ligne PUT par collection = [] et la ligne INSERT par collection.append(word), il s'agit presque d'une fonction Python standard. La fonction ci-dessus se lit comme un texte naturel.
Malgré sa bonne lisibilité et sa facilité d'utilisation, le langage ABC n'est finalement pas devenu populaire. À cette époque, le compilateur du langage ABC nécessitait un ordinateur relativement haut de gamme pour fonctionner. Les utilisateurs de ces ordinateurs maîtrisent généralement l'informatique et considèrent l'efficacité du programme plus que la difficulté de son apprentissage. En plus des difficultés matérielles, la conception du langage ABC présente également quelques problèmes fatals :
Une mauvaise évolutivité. Le langage ABC n'est pas un langage modulaire. Si vous souhaitez ajouter des fonctions au langage ABC, comme un support graphique, vous devez changer de nombreux endroits.
Impossible d'effectuer des IO directement. Le langage ABC ne peut pas faire fonctionner directement le système de fichiers. Bien que vous puissiez importer des données via des méthodes telles que les flux de texte, ABC ne peut pas lire et écrire directement des fichiers. La difficulté d’entrée et de sortie est fatale aux langages informatiques. Pouvez-vous imaginer une voiture de sport avec des portes qui ne peuvent pas être ouvertes ?
Innovation excessive. ABC utilise le langage naturel pour exprimer la signification du programme, comme COMMENT FAIRE dans le programme ci-dessus. Cependant, pour les programmeurs, ils sont plus habitués à utiliser function ou à définir pour définir une fonction. De même, les programmeurs sont habitués à utiliser le signe égal (=) pour attribuer des variables. Bien que cela donne au langage ABC un aspect spécial, cela rend en réalité son apprentissage plus difficile pour les programmeurs (la plupart des programmeurs connaissent plus d’un langage).
Difficulté à se propager. Le compilateur ABC était volumineux et devait être stocké sur bande. Lors de sa visite, Guido devait disposer d'une grande cassette pour installer le compilateur ABC pour d'autres. De cette manière, il est difficile pour le langage ABC de se propager rapidement.
Lecteur de bande IBM : lecture et écriture de bandes
En 1989, afin de passer les fêtes de Noël vacances, Guido Commencez à écrire un compilateur/interprète pour le langage Python. Python vient de la série télévisée bien-aimée de Guido, Monty Python's Flying Circus (une sitcom en salle diffusée par la BBC dans les années 1960 et 1970, basée sur la vie britannique de l'époque). Il espère que ce nouveau langage appelé Python pourra concrétiser son concept (un langage complet, facile à apprendre, à utiliser et évolutif entre C et Shell). En tant que passionné de conception de langages, Guido a déjà fait des tentatives (sans grand succès) dans ce domaine. Cette fois, il ne s’agissait que d’un pur acte de piratage.
La naissance de Python
En 1991, le premier compilateur Python (également interpréteur) est né. Il est implémenté en langage C et peut appeler des bibliothèques C (fichiers .so). Depuis sa naissance, Python a eu : des classes, des fonctions, une gestion des exceptions, des types de données de base comprenant des listes et des dictionnaires, et une extension du système basée sur des modules.
Logo Python original : conçu par le frère de Guido, Just von Rossum
Beaucoup de syntaxe Python vient du C, mais elle est également influencé par ABC Forte influence du langage. Certaines règles du langage ABC sont encore controversées à ce jour, comme l'indentation forcée. Mais ces règles de syntaxe rendent Python facile à lire. Python, quant à lui, choisit astucieusement d’obéir à certaines conventions (notamment celles du langage C). Par exemple, utilisez le signe égal pour attribuer des valeurs et utilisez def pour définir des fonctions. Guido estime que si quelque chose est établi sur la base du « bon sens », il n'est pas nécessaire de s'y attarder trop.
Python a accordé une attention particulière à l'extensibilité dès le début. Python peut être étendu à plusieurs niveaux. À un niveau élevé, vous pouvez importer des fichiers .py. Sous le capot, vous pouvez référencer les bibliothèques C. Les programmeurs Python peuvent rapidement utiliser Python pour écrire des fichiers .py en tant que modules d'extension. Mais lorsque les performances sont un facteur important à prendre en compte, les programmeurs Python peuvent aller plus loin dans la couche inférieure, écrire des programmes C, les compiler dans des fichiers .so et les introduire dans Python pour les utiliser. Python, c'est comme construire une maison en acier. Définissez d'abord la grande charpente. Les programmeurs peuvent développer ou modifier assez librement dans ce cadre.
Le Python original a été entièrement développé par Guido lui-même. Python est populaire parmi les collègues de Guido. Ils fournissent des commentaires rapides et participent aux améliorations de Python. Guido et quelques collègues forment l'équipe principale de Python. Ils passent la majeure partie de leur temps libre à pirater Python (y compris leur temps de travail, puisqu'ils utilisent Python pour leur travail). Par la suite, Python s’est étendu au-delà de CWI. Python cache de nombreux détails au niveau de la machine et les laisse au compilateur pour les gérer, et met en évidence la réflexion en matière de programmation au niveau logique. Les programmeurs Python peuvent passer plus de temps à réfléchir à la logique du programme plutôt qu'aux détails spécifiques de l'implémentation (Guido a un T-shirt qui dit : La vie est courte, j'utilise Python). Cette fonctionnalité attire un grand nombre de programmeurs. Python est devenu populaire.
Nous devons suspendre notre temps Python et jeter un œil à l'aperçu de l'ordinateur à ce moment-là. Au début des années 1990, les ordinateurs personnels ont commencé à faire leur apparition dans les foyers ordinaires. Intel a lancé le processeur 486 et Windows a publié une série de systèmes de fenêtres commençant par Windows 3.0. Les performances de l'ordinateur sont grandement améliorées. Les programmeurs ont commencé à s'intéresser à la facilité d'utilisation des ordinateurs (comme les interfaces graphiques).
Windows 3.0
À mesure que les performances des ordinateurs s'amélioraient, le monde des logiciels a commencé à changer. Le matériel est suffisant pour de nombreux ordinateurs personnels. Les fabricants de matériel sont même impatients de voir émerger des logiciels très demandés pour piloter la mise à niveau du matériel. C et Java sont devenus populaires l'un après l'autre. C et Java fournissent des paradigmes de programmation orientés objet et de riches bibliothèques d'objets. Au détriment de certaines performances, C et Java ont considérablement amélioré le rendement des programmes. La facilité d'utilisation de la langue a été portée à un nouveau niveau. Nous rappelons également qu'une raison importante de l'échec d'ABC était les limitations de performances du matériel. À cet égard, Python est bien plus chanceux qu’ABC.
Un autre changement qui se produit discrètement est Internet. Les années 1990 étaient encore l’ère des ordinateurs personnels et Windows et Intel dominaient le monde avec les PC et devenaient très populaires pendant un certain temps. Bien que la révolution de l'information basée sur Internet ne soit pas encore arrivée, de nombreux programmeurs et utilisateurs d'ordinateurs expérimentés utilisent déjà fréquemment Internet pour communiquer (y compris le courrier électronique et les groupes de discussion). Internet a considérablement réduit le coût de l'échange d'informations. Un nouveau modèle de développement logiciel devient populaire : l'open source. Les programmeurs utilisent leur temps libre pour développer des logiciels et du code open source. En 1991, Linus a publié le code source du noyau Linux sur le groupe de discussion comp.os.minix, attirant ainsi un grand nombre de pirates informatiques. Linux et GNU travaillent ensemble pour former une plateforme open source dynamique.
Les performances matérielles ne sont pas un goulot d'étranglement et Python est facile à utiliser, c'est pourquoi de nombreuses personnes se tournent vers Python. Guido gère une liste de diffusion et les utilisateurs de Python communiquent par e-mail. Les utilisateurs de Python viennent de nombreux domaines, ont des parcours différents et ont des besoins différents en Python. Python est assez ouvert et facile à développer, donc lorsque les utilisateurs ne sont pas satisfaits des fonctions existantes, il est facile d'étendre ou de transformer Python. Ces utilisateurs envoient ensuite leurs modifications à Guido, qui décide d'ajouter les nouvelles fonctionnalités à Python ou à la bibliothèque standard. Ce serait un grand honneur si le code pouvait être incorporé dans Python lui-même ou dans la bibliothèque standard. Python lui-même est meilleur pour cela.
(Guido a dû prendre de nombreuses décisions, c'est pourquoi il est appelé Benevolent Dictator For Life)
Python est appelé "Batterie incluse", en référence à lui et à sa bibliothèque standard Puissante. Ce sont des contributions de toute la communauté. Les développeurs Python viennent de différents domaines et apportent à Python les avantages de différents domaines. Par exemple, les expressions régulières de la bibliothèque standard Python font référence à Perl, tandis que les fonctions lambda, map, filter et Reduction font référence à Lisp. Certaines fonctionnalités de Python lui-même et la plupart de la bibliothèque standard proviennent de la communauté. La communauté Python continue de se développer et possède son propre groupe de discussion, son propre site Web (python.org) et sa propre fondation (Python Software Foundation). À partir de Python 2.0, Python est également passé d'une méthode de développement de listes de diffusion à une méthode de développement entièrement open source. Une atmosphère communautaire s'est formée, le travail est partagé par l'ensemble de la communauté et Python a également atteint un développement plus rapide.
(Étant donné que Guido jouit de droits d'arbitrage absolus, de nombreux passionnés étaient très inquiets pour la vie de Guido au cours des premiers jours du développement de la liste de diffusion de Python. Ils ont même émis des hypothèses : qu'arriverait-il à Python si Guido mourait. Voir si Guido était touché en bus)
À ce jour, le framework Python est établi. Le langage Python organise le code avec les objets comme noyau (Everything is object), prend en charge plusieurs paradigmes de programmation (multi-paradigme), utilise le typage dynamique et effectue automatiquement le recyclage de la mémoire (garbage collection). Python prend en charge l'interprétation et peut appeler des bibliothèques C pour l'expansion. Python dispose d'une puissante bibliothèque standard (batterie incluse). Depuis que le système de bibliothèques standard s'est stabilisé, l'écosystème Python a commencé à s'étendre aux packages tiers. Ces packages, tels que Django, web.py, wxpython, numpy, matplotlib et PIL, font évoluer Python vers une forêt tropicale humide riche en espèces.
Aujourd'hui, Python est entré dans l'ère 3.0. Puisque Python 3.0 n’est pas rétrocompatible, la transition de 2.0 à 3.0 n’est pas facile. D'un autre côté, les performances de Python méritent encore d'être améliorées, et les performances informatiques de Python sont inférieures à celles de C et Java (voir la discussion de Google). Python est encore un langage en développement. J'ai hâte de voir ce que l'avenir réserve à Python.
Python Revelation
Python prône l'élégance, la clarté et la simplicité. C'est un langage excellent et largement utilisé (TIOBE se classe huitième parmi les langages et est le troisième plus grand développeur. par Google Language, le langage de base de Dropbox, le langage serveur de Douban). Les excellents langages ne manquent pas dans le monde, mais l'histoire du développement de Python, en tant que représentant, m'a donné beaucoup d'inspiration.
Dans le processus de développement de Python, la communauté joue un rôle important. Guido pense qu'il n'est pas un programmeur polyvalent, il est donc uniquement responsable de la formulation du framework. Si le problème est trop compliqué, il choisira de le contourner, c'est-à-dire de prendre des raccourcis. Ces problèmes sont finalement résolus par d’autres membres de la communauté. Le talent de la communauté est extrêmement riche. Même les choses qui sont légèrement éloignées du développement, comme la création de sites Web et la collecte de fonds, il y a des gens qui sont prêts à s'en occuper. Le développement de projets d'aujourd'hui devient de plus en plus complexe et plus vaste. La coopération et l'ouverture d'esprit sont devenues les clés du succès ultime du projet.
Python a beaucoup appris des autres langages, que ce soit ABC qui est entré dans l'histoire, ou C et Perl qui sont encore utilisés, et bien d'autres langagesnon répertoriés. On peut dire que le succès de Python représente le succès de tous les langages dont il s'inspire. De même, Ruby emprunte à Python, et son succès représente également le succès de Python à certains égards. Chaque langue est un hybride, avec ses forces et ses faiblesses. Dans le même temps, le jugement du « bon ou du mauvais » d’un langage est souvent soumis à des facteurs externes tels que la plate-forme, le matériel, l’époque, etc. Les programmeurs sont confrontés à de nombreuses batailles linguistiques. Je me suis demandé pourquoi ne pas distinguer les avantages et les inconvénients spécifiques de chaque langue avec un esprit ouvert et une analyse objective, et faire la distinction entre les facteurs internes et externes. Peut-être qu'un jour je découvrirai qu'une langue que je n'aime pas contient exactement ce dont j'ai besoin.
Quel que soit le sort futur de Python, l'histoire de Python est déjà un roman intéressant.
Ce qui précède est le contenu du didacticiel rapide Python (Supplément 04) : Une brève histoire de Python Pour plus de contenu connexe, veuillez prêter attention à. le site PHP chinois (www.php.cn) !