Python. Un langage qui facilite la réflexion

Bonjour, Habr!



Nous pouvons pré-commander la deuxième édition tant attendue de Simple Python . La traduction de la première édition a été publiée en 2016 et reste parmi les meilleures ventes à ce jour.







Puisque nous sommes convaincus que Python est le meilleur langage de programmation pour les débutants, ainsi que pour travailler avec la science des données et l'apprentissage automatique, nous vous proposons aujourd'hui la traduction de plusieurs articles de vision du monde du site Web Dropbox, où Guido van Rossum a terminé sa carrière - sur la signification et le caractère indispensable du langage Python.



Rien ne caractérise plus le 21e siècle que l'influence omniprésente de la programmation. Presque tout ce que nous faisons, en particulier au travail, se fait via le moniteur, via le moniteur, qui affiche les résultats d'un travail de calcul colossal, que nous tenons aujourd'hui pour acquis. Pour ces 99,7% de la race humaine qui ne sont pas impliqués dans la programmation, tout cela se passe comme par magie. Comme l'a noté le grand écrivain de science-fiction Arthur Clarke, "Toute technologie suffisamment avancée est indiscernable de la magie."



Bien sûr, ce n'est pas de la magie. Mais la programmation est à la fois un processus complexe et à plusieurs niveaux, la taille des bases de code dans les entreprises technologiques sérieuses est mesurée en millions de lignes de code. Lorsque vous pensez à la manière dont un système réel peut être implémenté au niveau du code, vous pensez à l'interaction complexe des différentes fonctions au fil du temps. Votre code peut être plus ou moins complexe au niveau de la structure, mais la complexité inhérente est inhérente au problème que vous résolvez, et cette complexité ne peut pas être réduite à quelque chose de plus simple.



Être programmeur, ce n'est pas seulement générer des idées, et vous ne durerez pas longtemps dans ce métier si vous ne savez pas comment décrire vos idées en code avec une précision chirurgicale. "Je suis un peu sceptique quant au fait que la pensée systémique est la plus importante dans ce cas, car il est beaucoup plus facile de décrire une idée de système que de prendre cette idée et de la transformer en code fonctionnel", déclare Guido van Rossum, créateur et retraité de The Generous Life Dictator of Python ... Le Web est toujours JavaScript et Java utilise 2,5 milliards de téléphones Android, mais Python est devenu la norme de facto en matière de programmation et d'éducation générales.



Celui qui a le plus contribué à faciliter le codage de leurs idées pour de nombreuses personnes est Guido van Rossum, qui a consacré 30 ans de sa vie au langage Python. De plus, il l'a fait avec une grâce sans prétention et un humour sourd. La langue porte le nom de la comédie grotesque "Monty Python", et non du serpent birman. Sans plus tarder, le langage de programmation Python a permis de simplifier certaines choses en programmation, notamment pour la compréhension.



Pour comprendre comment van Rossum a fait cela, jetons un coup d'œil à l'histoire de l'informatique et plongeons dans l'ère des mainframes et du langage machine. «Le mainframe est une machine d'un million de dollars, et les salaires combinés de tous ses programmeurs ne sont que quelques centimes par rapport au coût du mainframe», explique Rossum. Par conséquent, il est logique que le temps machine ait été considéré comme une priorité plus élevée que le temps humain. "Mais en ce qui concerne les postes de travail de bureau et les PC, je me suis rendu compte qu'il était grand temps de changer d'attitude à l'égard du rapport entre le temps humain et le temps machine." Van Rossum ne se considère pas comme le premier à remarquer ce changement, mais il l'a vraiment souligné lors de la conception du langage Python.



Cette simple idée de «machine pour l'homme, pas d'homme pour machine» est l'essence même de toute la philosophie du langage Python. Plus précisément, le fait qu'il s'agisse d'un langage interprété, pas d'un langage compilé, implique que le programmeur voit l'effet du code écrit dès qu'il l'écrit, sans avoir à le recompiler après chaque modification. Aujourd'hui, cette pratique est très courante, mais il y a de nombreuses années, elle était perçue de manière ambiguë, car il semblait certain que plus l'ordinateur est rapide, mieux c'est. Redéfinir cette croyance a eu un effet positif significatif sur la productivité des programmeurs.



«Il existe toute une série de problèmes de programmation courants qui sont plus faciles à résoudre en Python», déclare van Rossum. - "Pour ceux qui ne sont pas encore programmeurs, mais qui veulent seulement le devenir, le seuil d'entrée en Python est particulièrement bas." En effet, de nombreux cours de programmation commencent à s'éloigner de Java au profit de Python car il est beaucoup plus compréhensible pour les débutants. Les raisons de cette transition sont complexes, avec de nombreux facteurs, dont chacun a éliminé quelques aspérités. L'essence de la philosophie est au cœur de toutes les améliorations: tout doit avoir un but. Lorsqu'il n'y a pas de code redondant, il est plus facile de se concentrer sur ce sur quoi vous devez vraiment vous concentrer. «En Python, chaque caractère que vous saisissez compte», déclare van Rossum.



Cette concision garantit que Python est facile à obtenir des résultats tangibles, c'est pourquoi le langage trouve une utilisation si répandue. «Il est également important de présenter Python aux programmeurs novices. Vous pouvez montrer à une personne de très petits morceaux de code avec lesquels vous pouvez travailler, presque sans comprendre la terminologie et les concepts de programmation en tant que tels, jusqu'à ce que vous les compreniez », explique van Rossum,« alors que dans le plus petit programme Java, vous trouverez tout un tas de symboles qui ressemblera à des ondulations à l'œil non initié. "



Avec une conception aussi calme et simple du langage, il est plus facile de comprendre ce qui se passe dans le code. «Python me semble incroyablement descriptif», déclare van Rossum. «Quand je lis Python, je le vois définitivement comme une structure à deux niveaux, pas comme une structure à un seul niveau. C'est probablement parce que l'indentation est importante en Python, et peut-être parce que j'aime juste penser visuellement. "



Bien sûr, la pensée visuelle ne lui est pas propre. Nous pensons tous de cette manière dans une certaine mesure. Mais il met surtout l'accent sur le rôle de la composante visuelle dans l'activité cognitive. «Si le texte est mal formaté, cela peut me mettre en colère. Ensuite, l'analyse du flux de texte devient confuse dans ma tête, et dans ce sens, il est vraiment possible de dire que je pense en Python », admet van Rossum. "Je suis bien meilleur pour assimiler le code s'il est bien formaté." L'indentation dans le code est arbitraire, alors plus d'informations sont nécessaires pour démêler la signification du code que si chaque indentation a un but clair, comme en Python. Par conséquent, Python est pratique à utiliser: vous devez digérer moins d'informations pour comprendre ce qui se passe.



Python n'est pas seulement lisible en termes de typographie, mais aussi conceptuellement. Van Rossum pense que Python est peut-être plus précis que d'autres langages de programmation pour notre perception visuelle des structures représentées dans le code, car «en Python, l'adhérence à la structure est impérative».



Clive Thompson, auteur de CODERS", Dit que" en me préparant à écrire le livre, j'ai parlé avec beaucoup de développeurs qui sont complètement amoureux de Python. Presque tout le monde, sans exception, a dit quelque chose comme "Python est beau". Ils ont aimé la lisibilité et ont trouvé facile d'avoir un aperçu du code Python et de comprendre son objectif. Ce langage, dépourvu d'accolades, aux lignes disposées comme des étagères soignées, ressemble vraiment à la poésie moderne. " Ils pensent également que Python est amusant à écrire, ce qui est beaucoup plus important qu'il n'y paraît à première vue. Thompson écrit que "lorsque vous apprenez à connaître un codeur, vous voyez devant vous une personne dont le travail quotidien principal est plein d'échecs sans fin et de frustration oppressante".



Lorsque le respect du temps du programmeur est intégré dans un langage, il se reflète de manière intéressante dans la communauté linguistique. Il y a une philosophie sociale qui découle de Python: le programmeur est responsable de son code, sachant qu'il l'écrit pour d'autres personnes. Il y a une thèse tacite que van Rossum lui-même promeut activement dans ses textes et ses conférences: passer un peu plus de temps et faciliter la tâche à la personne qui lira votre code à l'avenir. Montrer votre propre respect à vos collègues et montrer que vous appréciez leur temps est une éthique que van Rossum promeut discrètement dans le monde entier. «Vous écrivez du code principalement pour communiquer avec d'autres programmeurs et dans une moindre mesure pour imposer votre volonté à l'ordinateur», dit-il.

La polyvalence de la culture autour de Python a permis une partie de la vision que van Rossum avait il y a une vingtaine d'années lorsqu'il a lancé le projet de courte durée CP4E (Computer Programming For Everyone). «Je ne peux généralement pas me vanter d'un talent visionnaire. Les gens me demandent ce que l'avenir réserve à Python, et je ne sais pas. Mais ma prophétie la plus importante, je considère la thèse selon laquelle le moment viendra où l'apprentissage de la programmation sera avantageux pour tout le monde. " À cette époque, les ordinateurs personnels existaient depuis environ 20 ans, mais la plupart d'entre eux étaient des machines à écrire et des calculatrices à la mode. Puis van Rossum s'est demandé: "N'est-ce pas fou que tant de gens aient des ordinateurs, mais si peu de gens apprennent à programmer?"



Depuis lors, il simplifie constamment la programmation, et ce travail peut facilement être retracé jusqu'au développement de Python, qui a maintenant atteint la version 3.7. You Rossum continue de croire que la programmation inculque des compétences généralement utiles, en particulier la capacité de résoudre des problèmes, de suivre attentivement une direction ou une autre et de comprendre le sens de cette direction. Mais il a également constaté qu '«il existe des options de programmation d'introduction qui intéressent les enfants, mais pas tout le monde; donc je ne pense pas que la programmation devrait être incluse dans le programme scolaire en tant que matière obligatoire. "



Dans le même temps, aujourd'hui, il n'est plus si important pour une personne de programmer son ordinateur, car de nombreux programmes prêts à l'emploi sont apparus, en particulier sur Internet, et ils vous permettent de faire face intuitivement à des tâches pour lesquelles des solutions nécessitaient auparavant une programmation.



Cependant, de plus en plus de personnes utilisent Python dans diverses disciplines. «Une théorie prévaut aujourd'hui qui explique le succès inattendu de Python», explique van Rossum, «selon laquelle il a eu la chance de prendre pied dans la science des données et l'apprentissage automatique, et la science des données en général. Une fois que vous avez développé une masse critique de compétences Python, il est plus facile de travailler avec le même système que vos pairs et vos concurrents que d'apprendre de nouvelles choses. " De plus, selon van Rossum, bien que Python ait commencé comme un outil commun pour les programmeurs, c'est aujourd'hui aussi un langage pour les amateurs et, selon van Rossum, c'est la meilleure utilisation de Python.



Un projet de logiciel open source réussi comme Python serait facile à apprendre pour les débutants, mais trouverait également une utilisation pratique pour résoudre des problèmes du monde réel dont les utilisateurs plus avancés auraient besoin. Tout comme lorsque nous travaillons avec des débutants, nous nous efforçons de ne pas compliquer la langue afin qu'ils puissent mettre toute leur force mentale dans l'apprentissage des complexités inhérentes à l'environnement de développement, donc lorsque vous travaillez avec des utilisateurs avancés, la simplicité du langage est utile, car elle permet à une personne d'apprendre plus facilement des abstractions concurrentes. Le désir de rendre l'implémentation de Python aussi simple que possible est en partie dû au fait que lorsqu'on travaille avec ce langage, il est facile de changer d'avis, d'apprendre, de répéter. «Ecrire un prototype en Python et le mettre en production n'est souvent pas si difficile», déclare van Rossum.«Ensuite, vous pouvez vous permettre de jeter ce prototype et de le mettre en œuvre en vous basant sur ce qui a déjà été appris. La deuxième version peut aussi être écrite en Python, mais elle sera bien meilleure que la première. "



L'appel incessant de Python est en partie dû à son optimisme et à la facilité avec laquelle il est de recommencer. "Si vous avez passé beaucoup de temps à écrire et à déboguer du code, vous ne voulez vraiment pas le jeter et recommencer." Le co-fondateur et PDG de Drpopbox, Drew Houston, a écrit le premier prototype du service en Python lors d'un trajet de cinq heures en bus de Boston à New York. «Les premiers prototypes de Dropbox ont été en grande partie mis au rebut, à plusieurs reprises», explique van Rossum.



Que pouvez-vous apprendre de Python sur la façon de créer des outils mentaux de qualité? Tim Peters, l'un des plus grands contributeurs à Python, fournit quelques conseils sur ce sujet dans le document écrit aphoristiquement « Zen of Python», Qui explique les principes qui ont guidé van Rossum. Dans le contexte de cet article, les deux éléments suivants sont les plus importants: «Le simple vaut mieux que le complexe. Mieux vaut être compliqué que trop compliqué. " C'est pratiquement une recette pour que le cerveau priorise ses propres fonctions pour une utilisation efficace de l'énergie.



Pour van Rossum, l'aspect social de la pensée et de la création d'outils est tout aussi important. Qu'a-t-il appris de son odyssée de trente ans avec Python? «J'ai appris qu'il était impossible de faire face à un tel problème seul, et ce fut une leçon difficile pour moi. J'ai appris que vous n'obteniez pas toujours le résultat que vous recherchiez, mais peut-être que le résultat n'est ni pire ni même meilleur que ce à quoi vous vous attendiez. "



All Articles