Maison > Article > développement back-end > Réflexion d'un vieux programmeur étranger : On ne peut pas avoir C, Python et Java en même temps, concentrez-vous simplement sur l'apprentissage d'un seul langage de programmation !
Récemment, John Carmack, célèbre programmeur de jeux et co-fondateur d'id Software, a déclaré dans une interview que les programmeurs devraient se concentrer sur l'apprentissage d'un langage de programmation. Cela m'a un peu surpris. Même si je suis personnellement tout à fait d'accord avec ce conseil, ce point de vue est controversé dans les cercles de programmeurs actuels.
Je suppose que je suis ce que tout le monde appelle un "vieux programmeur". Je ne suis pas jeune, j'ai été engagé dans la programmation toute ma vie et je suis engagé dans ce travail professionnel depuis mon entrée dans la société. Parfois, je me sens comme un passionné de langages de programmation qui a été témoin du développement de nombreux langages de programmation. En repensant à cette histoire passionnante, nous ne pouvons nous empêcher de parvenir à la (fausse) conclusion qu'il n'est jamais mauvais de connaître quelques langages de programmation supplémentaires. Le développement historique des langages de programmation est très passionnant, mais la situation de développement actuelle est relativement paisible.
Dans cet article, je souhaite passer en revue l'histoire passée, résumer les leçons apprises et jeter un œil à quel langage de programmation est le langage le mieux standardisé.
À mesure que le matériel informatique et l'informatique en tant que discipline émergeaient progressivement, la programmation informatique (au-delà des instructions du processeur lui-même) a également commencé à se développer lentement. Au cours de leurs premières décennies, les langages de programmation étaient principalement l’apanage du monde universitaire et attiraient un petit groupe de chercheurs. Les options pour les programmeurs sont limitées et dépendent principalement du domaine.
COBOL est utilisé pour la programmation commerciale, Fortran est utilisé pour la programmation scientifique et il existe quelques autres langages qui sont généralement utilisés pour des domaines spécifiques, la recherche ou le matériel.
Pour la plupart des programmeurs, ils n'ont besoin de se concentrer que sur l'apprentissage d'un seul langage de programmation pendant toute leur carrière de programmeur ou pendant une longue période. Même si certaines personnes s’intéressaient à la conception de langages de programmation, le domaine était encore très jeune à l’époque. Malgré quelques innovations intéressantes, les éléments nécessaires à la conception d’un bon langage de programmation ne sont pas encore bien compris.
À mesure que le nombre de matériel informatique augmente et que ses utilisations se diversifient de plus en plus, le nombre de langages de programmation commence également à croître et le choix du langage de programmation devient un sujet populaire. Les gens ont commencé à classer les langages de programmation. Nous pouvons déterminer quel langage un programmeur choisira en fonction du type de programmeur qu'il est et du niveau d'expertise qu'il aspire à atteindre.
Les passionnés de programmation PC utilisent le BASIC, de plus en plus populaire. Il s'agit d'un langage de programmation très absurde et primitif, mais il est largement utilisé et est devenu un guide pour une génération de programmeurs (dont moi-même). Pascal a introduit la programmation structurée et a eu un impact énorme (Pascal a construit une communauté florissante avec Turbo-Pascal et Delphi, mais a finalement disparu).
C, originaire d'UNIX, est devenu un langage de programmation système. C++ est devenu le successeur du C et a emprunté la programmation orientée objet à Smalltalk, devenant ainsi le langage des développeurs professionnels d'applications et de services. Finalement, Visual Basic (qui n'avait rien à voir avec BASIC) a popularisé la « programmation visuelle », a répondu aux besoins du développement d'applications (qui ont connu une croissance rapide avec l'avènement de Windows) et est devenu le premier choix du grand public. Mais on pense généralement que les programmeurs VB sont des experts dans un domaine effectuant des tâches de programmation à temps partiel, tandis que C et C++ sont des programmeurs « professionnels ».
À ce stade, les gens ne comprennent toujours pas bien la conception des langages de programmation, ce qui fait que de nombreux aspects de la conception de nombreux langages de programmation populaires sont loin d'être idéaux. Le langage C est simple et puissant, mais il est difficile à maîtriser et il y a trop de choses qui peuvent mal tourner. Bien que le C++ ait de bonnes intentions, il finit par être mal conçu et désagréable à utiliser. Visual Basic était amusant et simple, mais c'était un peu un hack, et dans les conditions techniques de l'époque, ce n'était ni élégant ni efficace. Smalltalk et LISP étaient à la fois des langages intéressants et élégants, mais ils sont finalement tombés en disgrâce car ils étaient liés à du matériel spécialisé et à des outils coûteux.
Plus tard, Internet a émergé. L’étendue exacte de l’impact d’Internet sur les langages de programmation n’est peut-être pas connue, mais il s’agit sans aucun doute d’un facteur important. Il y a longtemps, les langages de programmation étaient rares, généralement nés dans les laboratoires de recherche et les grandes entreprises commerciales ; mais il semble désormais que n'importe qui puisse développer son propre langage de programmation. Pendant un certain temps, PERL est devenu un langage généraliste populaire, couvrant tout, de l'administration système à la programmation Web.
Plus tard, Python est passé d'un langage de recherche scientifique à un langage généraliste simple et facile à apprendre. Bien qu'il se soit développé lentement au début, il a finalement pris d'assaut le monde entier. Brandan Eich de Netscape aurait développé JavaScript (un langage d'extension de navigateur aux fonctionnalités très limitées) en quelques jours seulement. Cela prouve non seulement qu'Eich est un génie, mais prouve également que les gens de cette période avaient une bonne compréhension de la conception des langages de programmation.
De nombreux autres langages de programmation ont vu le jour durant cette période, dont le plus célèbre est Java. Il n'y a rien de spécial dans le langage lui-même, mais la JVM qu'il fournit est un environnement d'exécution universel qui réalise "écrire une fois, exécuter n'importe où", ce qui signifie que le langage est très universel et n'est pas limité à du matériel, des systèmes d'exploitation ou des limitations spécifiques. de l’environnement cible. À proprement parler, la première JVM n’avait rien d’extraordinaire, mais elle a marqué le début d’une ère de langages d’exécution et d’options de déploiement de plus en plus matures.
Depuis la JVM, les langages de programmation ont commencé à se développer rapidement dans une direction intéressante. Le compilateur juste à temps (JIT) dérivé du langage Self (le successeur de Smalltalk, bien qu'excellent mais un grand échec) a été étudié plus en détail, aboutissant à la naissance du HotSpot de Java, et Microsoft a lancé le .NET CLR pour lutter contre Java. . .NET va encore plus loin et utilise CLR (Common Language Runtime) comme environnement d'exécution universel pour plusieurs langages, pas seulement C#. Avec le recul, ce fut un moment décisif : le choix du langage de programmation n’a plus d’importance.
Ce n'est peut-être pas la principale raison pour laquelle Microsoft a fait ce choix (à cette époque, ils essayaient encore de continuer à prendre en charge les très populaires Visual Basic et C#. Couplé avec la licence fermée de Microsoft pendant cette période, le CLR n'était pas possible). devenir l’environnement d’exploitation le plus populaire. Mais au cours de la première décennie après le tournant du millénaire, les langages de programmation sont devenus plus nombreux et omniprésents.
En revanche, le nombre de programmeurs a également explosé. Alors que la demande de logiciels augmentait rapidement et que les outils et les connaissances devenaient plus largement disponibles, des millions de personnes dans le monde sont devenues programmeurs. Ces programmeurs sont des êtres humains et ils recherchent une forte identification de groupe. Tout comme les gens ordinaires ont des opinions bien arrêtées et irrationnelles sur les équipes sportives, les programmeurs commencent à prendre parti sur le choix des langages de programmation. De nombreux programmeurs sont obligés de choisir un langage de programmation nouveau, unique et spécial.
Par exemple, certaines personnes prétendent que la programmation fonctionnelle est reine, Ruby est meilleur que Python, Scala va complètement changer la science des données, et c'est votre perte si vous ne choisissez pas Clojure... À ce stade, les langages de programmation sont entrés dans une période chaotique darwinienne de survie de la période la plus apte du développement linéaire.
Je pensais que les gens de cette période se rendraient compte que certains langages de programmation sont trop fous pour soutenir le développement. Cependant, cela n’a pas été le cas, la situation a pris une tournure inattendue. À l'ère du « cloud computing », où de nombreuses applications et services sont déployés sur un grand nombre de nœuds distribués sur Internet, le langage de programmation utilisé ne semble plus avoir d'importance. Les programmeurs développent des composants indépendants qui communiquent entre eux, alors pourquoi s'embêter avec des langages de programmation ? Les composants n'ont pas besoin de savoir dans quelle langue ils sont écrits. Si les programmeurs aiment écrire des composants en langage X, utilisez ce langage. Qui s'en soucie.
Il en va de même pour les composants exécutés sur différentes machines. Avec la sortie de Docker, les conteneurs ont gagné en popularité, qu'il s'agisse d'une application exécutée sur une seule machine ou d'un logiciel exécuté en collaboration sur un cluster de machines via un logiciel d'orchestration. facilement géré en utilisant le même paradigme.
Les gens développent encore aujourd'hui de nouveaux langages de programmation, dont beaucoup sont prometteurs et très attendus. Certains sont spécifiques à un domaine (Swift, Kotlin et Dart pour les applications mobiles, Solidity pour les contrats intelligents Ethereum), tandis que d'autres sont plus généraux, mais chaque langage bénéficie des leçons apprises au fil des décennies (pour Go pour la programmation cloud, Rust pour le système). programmation, TypeScript, un surensemble de JavaScript, etc.).
Dans le même temps, le monde de la programmation a atteint un nouveau niveau de maturité où nous ne poursuivons plus chaque nouvelle tendance et n'adoptons plus chaque nouveau langage. Nous avons tous grandi.
Il ne fait aucun doute que certains langages de programmation sont effectivement meilleurs, tandis que d'autres sont mieux adaptés pour gérer certains cas d'utilisation. Quiconque programme depuis un certain temps sait qu’apprendre une nouvelle langue n’est pas difficile du tout. La plupart des programmeurs peuvent facilement apprendre les bases d’un nouveau langage en seulement un après-midi et devenir plus ou moins productifs après quelques jours d’utilisation. Les nouveaux programmeurs peuvent commencer avec n'importe lequel des principaux langages de programmation et appliquer facilement leurs connaissances en programmation à d'autres langages.
Cependant, changer fréquemment de langage de programmation n'est pas une bonne chose, pour deux raisons principales. Premièrement, apprendre un langage de programmation, c’est un peu comme apprendre à jouer aux échecs. Vous pouvez apprendre les règles rapidement, mais cela ne signifie pas que vous pouvez battre des joueurs expérimentés. Vous devez apprendre des stratégies, et cela prend du temps et de la pratique. Il s'agit d'un écosystème de bonnes pratiques, de pièges, de techniques d'optimisation, ainsi que de bibliothèques, d'outils et de communautés. Deuxièmement, même si la programmation est simple, elle est sujette aux erreurs.
Même avec une expérience commune en programmation et les meilleurs outils, convertir des idées en code informatique n'est pas un acte intuitif. Quelle que soit l’intuition développée par un programmeur, elle doit passer par un cycle d’utilisation répétée, de retour immédiat et de correction d’erreurs. Chaque fois que vous changez de langage de programmation, vous payez un prix. Ainsi, d’après mon expérience, le choix du langage de programmation est important, mais une fois que vous avez fait un choix, vous devez vous y tenir sur le long terme.
D'ici 2022, nous devons prendre en compte les points suivants lors du choix d'un langage de programmation.
Tout d'abord, la considération la plus critique est le champ d'application du langage. S'il s'agit d'un domaine spécifique et qu'un langage spécifique au domaine doit être utilisé, le langage le plus généralement applicable est préféré. Heureusement, depuis que Java a proposé « écrire une fois, exécuter n'importe où », le temps d'exécution et le déploiement ne sont plus un problème, et le coût et les licences ne sont plus des contraintes. Aujourd'hui, tous les langages de programmation, environnements d'exécution et divers outils sont disponibles gratuitement. Si une langue n’est pas adaptée à une occasion spéciale, on peut seulement dire qu’elle n’est pas assez populaire et qu’elle ne s’est pas répandue dans tout le monde ou que c’est à cause de certains facteurs fondamentaux qu’elle n’est vraiment pas adaptée à cette tâche ;
La popularité compte, et nous devrions choisir des langages qui ont une communauté forte, de riches sources d'informations et un grand nombre d'autres programmeurs avec lesquels travailler ou embaucher. Toute langue impopulaire ne vaut pas la peine d’être choisie. Si vous rencontrez des circonstances particulières, le choix sera plus difficile. Aucune langue ne convient à tous les scénarios, mais idéalement, une langue courante commune devrait suffire pour la plupart des scénarios.
Enfin, le langage de programmation que nous choisissons devrait être meilleur que la plupart des autres langages. Même en 2022, il existe encore des langages de programmation terribles, difficiles à apprendre et à utiliser, et qui peuvent facilement causer des ennuis aux programmeurs.
Compte tenu de la déclaration ci-dessus, je ne pense pas que nous ayons réellement le choix. Jetons maintenant un coup d’œil à ces meilleurs langages de programmation.
JavaScript dans le monde des langages de programmation, c'est comme Le même anglais que les humains utilisent pour communiquer. Il s'agit du langage de programmation le plus populaire et le plus polyvalent, adapté à de nombreux scénarios différents (navigateur/frontend, système/backend, intégré comme langage d'extension dans de nombreux environnements). Le runtime de JavaScript (V8/Node/Deno) est très efficace, dispose de nombreux outils formidables et d'une grande communauté.
TypeScript est un sur-ensemble de JavaScript qui introduit un typage puissant et des outils standard et devient rapidement le choix par défaut pour la programmation JS.
Rust possède toutes les fonctionnalités du C/C++, est plus facile à utiliser et ne présente pas trop de pièges. La communauté et l'écosystème de Rust sont forts et en croissance, et les outils sont excellents à utiliser. Si Rust offre toutes les fonctionnalités dont vous avez besoin, alors c'est certainement le meilleur choix. Là où auparavant vous ne pouviez utiliser que C ou C++, vous pouvez désormais choisir Rust. De plus, Rust construit également son propre langage universel pour WebAssembly (WebAssembly peut être considéré comme le runtime ultime « écrire une fois, exécuter n'importe où »). J'utilise Python depuis plus de 20 ans. Malheureusement, en 2022, Python n'est toujours pas un véritable langage de programmation à usage général. L’une des raisons est que Python est encore très inefficace et ne peut pas être utilisé dans de nombreuses situations axées sur les performances. Une autre raison est qu'il n'a pas été intégré aux environnements grand public destinés aux utilisateurs, tels que les navigateurs Web ou les téléphones mobiles. Malgré cela, Python reste un excellent langage de programmation et occupe une place importante dans l'ingénierie des données/science des données/apprentissage automatique, donc si vous travaillez dans ces domaines, Python est définitivement un langage qui mérite d'être connu et aimé. Dans l’état actuel des choses, Python continuera probablement à se développer en tant que langage universel pour la science des données, mais il ne sera peut-être pas en mesure de percer dans ce domaine.
C#/Java
C/C++
Mention Honorable
Ces langues sont en particulier champs Avoir une place. Si une programmation d’interface utilisateur mobile est requise, celles-ci constituent un bon choix. Mais JavaScript est plus universellement applicable et convient également au développement mobile, nous devrions donc choisir davantage JavaScript.
LISP est très spécial, même si vous n'avez pas ce besoin dans votre travail quotidien, vous devriez l'apprendre. Racket est un langage de pointe et très complexe (en fait, il s'agit d'une boîte à outils de création de langage). Clojure serait puissant car il cible la JVM et peut utiliser les bibliothèques Java. Mais je ne suis pas sûr de l’utilité de cet argument de vente.
Les langages fonctionnels sont importants. Dans certains cas, ils constituent un choix supérieur. Haskell est le représentant de la programmation fonctionnelle. F# a une meilleure applicabilité générale car il s'exécute sur le CLR et peut utiliser les bibliothèques .NET. Scala n'est pas purement fonctionnel, mais est très général et fonctionne sur la JVM.
Julia est très adaptée au domaine des mathématiques. R et MATLAB sont tous deux efficaces dans des situations spécifiques. Or, dans le domaine de l’ingénierie des données dominé par Python, il est difficile pour ces langages de programmation de survivre.
Si vous aimez la programmation shell, alors PowerShell est de loin le meilleur choix. Il fonctionne sur tous les systèmes d'exploitation, nous n'avons donc aucune raison d'utiliser un autre shell. PowerShell peut également être considéré comme un langage de programmation à usage général, mais en fait, personne ne l'utilise en dehors de la gestion non système.
Ces langages ont également connu leurs jours de gloire, principalement en tant que langages "backend" du web. Peu importe ce que vous pensez de ces langues, vous ne devriez plus y consacrer vos efforts. Ils sont tous en train de mourir.
VB a changé le monde mais est maintenant en train d'être progressivement abandonné, à la fois en tant que langage à usage général et en tant qu'extension à d'autres programmes. Les fonctions qui pouvaient être réalisées avec VB dans un passé lointain peuvent désormais être mieux réalisées avec d'autres langages modernes.
J'adore les langages de programmation et je suis toujours curieux de découvrir de nouveaux langages. Cependant, pour l'instant, TypeScript est mon premier choix pour C, Rust arrivant en deuxième position lorsque la puissance et l'accès de bas niveau sont nécessaires. Je crois que presque tous les programmeurs en 2022 auront des points de vue similaires aux miens.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!