JavaScript est le meilleur langage de programmation pour les débutants. C'est vrai ou pas?

JavaScript, malgré ses nombreuses lacunes, est sans doute le meilleur langage de programmation pour les développeurs débutants, et le meilleur langage avec lequel les enfants peuvent jouer.

image

C'était en 2007. Excellent éditeur de livres techniques, O'Reilly Media m'a contacté avec une idée. Ils m'ont demandé si j'aimerais écrire un livre sur JavaScript qui serait pour les débutants absolus en programmation. "Pourquoi diable?" J'ai immédiatement posé une contre-question.

On ne pouvait pas dire que JavaScript était un langage complètement inutile à cette époque. Mais ce n'était qu'un élément, loin de l'ingrédient le plus important d'un ensemble soigneusement sélectionné de technologies nécessaires au développement de sites Web. Oui, de petits morceaux de code JS peuvent être utilisés pour valider des formulaires ou pour mettre en surbrillance des boutons qui survolent. Mais JavaScript n'était qu'un ajout facultatif à la fonctionnalité du site. Si vous le supprimez de la page, tout a continué à fonctionner presque de la même manière qu'avec son utilisation.

JavaScript, en outre, a tiré beaucoup de bagages, présentés par d'autres technologies. Ainsi, des problèmes d'incompatibilité du navigateur y étaient associés; il était lent, peu sûr, totalement peu fiable. Je n'étais pas intéressé à apprendre à quelqu'un à créer des widgets inutiles pour les pages Web en JavaScript. Ces widgets m'ont paru aussi insignifiants que des gifs animés avec un globe en rotation, qui étaient très populaires à l'aube d'Internet.


La façon la plus évidente d'utiliser JavaScript, comme je le pensais alors naïvement, était quelque chose comme ceci: un grand framework de serveur devrait générer tout le code JS nécessaire et l'intégrer dans une page conçue spécifiquement pour votre navigateur. Le code JavaScript généré par le serveur peut être trop lourd, mais il serait conçu pour une version spécifique du navigateur. Et étant donné que JS ne jouait que le rôle d'un mécanisme auxiliaire, tout fonctionnerait comme il se doit même si le visiteur du site a complètement désactivé JavaScript.

Inutile de dire que je n'ai pas écrit de livre sur JavaScript. J'ai continué à faire de la programmation côté serveur et à écrire sur mes technologies préférées (généralement sur C # et le .NET Framework). De nombreuses années ont passé.

Puis quelque chose d'étrange s'est produit.

JavaScript a littéralement décollé.

Je ne pense toujours pas que JavaScript mérite l'honneur d'être appelé le meilleur langage de programmation au monde. Même si, honnêtement, je ne le considère pas comme une très bonne langue. Mais à certains égards, j'ai changé d'avis. Maintenant, je pense que JavaScript est probablement le meilleur premier langage pour les enfants et les programmeurs novices. Le fait est que JavaScript a un avantage majeur sur tous les autres langages de programmation.

L'étonnante prévalence de JavaScript est son principal avantage.


L'un des avantages uniques de JavaScript est sa prévalence.

Cette langue peut être trouvée littéralement partout. Il est pris en charge sur tous les systèmes d'exploitation, dans tous les types de navigateurs, ainsi que sur les ordinateurs de bureau et les appareils mobiles. Il est également très important que les applications JavaScript fonctionnent sans les installer sur les ordinateurs des utilisateurs. En fait, il est déjà difficile de se rappeler les jours pas si anciens où les entreprises, déployant des applications client-serveur sur leurs réseaux internes, ont passé des semaines à lutter avec les problèmes de configuration de ces applications et avec des erreurs inattendues. Face à ces cauchemars, vous apprécierez peut-être l'attrait de JavaScript.

JavaScript, en raison de sa prévalence, ne doit pas être le meilleur langage de programmation. Il a juste besoin d'être une assez bonne langue.

Des mécanismes similaires fonctionnent lorsqu'il s'agit d'apprendre la programmation. Dans un premier temps, le problème de la prévalence de la langue ne semble pas particulièrement important pour quelqu'un dont le but est d'apprendre des techniques pratiques éprouvées pour l'élaboration de programmes. Mais bon nombre des mêmes problèmes sont pertinents, comme pour la programmation professionnelle, dans l'enseignement de la programmation. Si vous voulez que quelqu'un utilise ce que vous avez créé, alors JavaScript est la seule alternative.

Supposons que vous développez une merveilleuse application qui, en posant des questions à un utilisateur, détermine son profil de personnalité. La mise en place d'un environnement de développement est assez simple. Mais que se passe-t-il lorsque vous souhaitez envoyer votre programme à un ami? Aura-t-il besoin d'installer un environnement d'exécution ou de recréer le même environnement de développement que le vôtre? Sera-t-il nécessaire de «modifier» les paramètres de sécurité de son ordinateur avant qu'il ne puisse télécharger et installer votre programme? Peut-être que votre ami utilise un système d'exploitation qui ne prend tout simplement pas en charge votre programme, ou une plate-forme mobile sur laquelle, si vous n'entrez pas dans les détails, vous pouvez installer uniquement des applications professionnelles distribuées via iTunes ou Google Play? Si vous utilisez JavaScript pour développer le programme et utilisez un simple site Web pour le distribuer (par exemple, GitHub vous permet de créer de tels sites gratuitement), tous ces problèmes disparaîtront simplement.

Et si notre futur programmeur est un enfant, alors voici un fait indéniable pour vous: les enfants et les navigateurs sont très fortement connectés. Si vous avez regardé un enfant qui travaille sur un ordinateur (pas sur un appareil mobile), vous avez peut-être remarqué qu'il passe au moins 98% de son temps à travailler avec un navigateur. Les enfants jouent à des jeux par navigateur, utilisent les réseaux sociaux et vont à l'école avec Google Classroom et Google Docs. Et si le code que les enfants écrivent fonctionnera dans leur monde de navigateur natif, ce sera tout à fait naturel.

Nous discutons maintenant des points forts de JavaScript. Mais, bien sûr, en parlant de JavaScript en tant que langage de programmation pour les débutants, on ne peut s'empêcher de rappeler ses lacunes.

Failles JavaScript


Qu'en est-il des problèmes javascript? Ce langage a de graves défauts, ses caprices, ses contradictions et ses limites peuvent être extrêmement désagréables pour quelqu'un qui commence tout juste à apprendre la programmation. Heureusement, il existe des solutions modernes qui peuvent atténuer la plupart des lacunes de JavaScript.

Analysons quatre plaintes principales concernant cette langue.

▍1. Le problème avec l'utilisation des types de données en JavaScript


Le concept le plus important que les programmeurs débutants apprennent très tôt est l'idée de variables, des conteneurs qui stockent des informations pendant l'exécution du programme. Le problème avec JavaScript est que ce langage est trop lâche et compliqué avec les variables. Il vous permet de faire quelque chose qui ne semble pas correct et ignore les incohérences évidentes. Sa négligence peut transformer des fautes de frappe mineures en catastrophes qui perturbent le fonctionnement des programmes.

Voici un exemple de code voué à l'échec:

var myNumber = 100; myNumber = myNumbr + 1; 

Avez-vous vu une erreur? En fait, la deuxième ligne utilise deux variables: la variable myNumber , qui a été déclarée dans la première ligne, et une variable factice myNumbr . Nous savons que la deuxième variable est le résultat d'une faute de frappe, mais JavaScript nous avertira uniquement lors de l'exécution du programme, donnant un message d'erreur qui ressemble à ReferenceError: myNumbr is not defined . La même chose se produit si lors de l'écriture du nom d'une variable, les lettres myNumber et minuscules sont mélangées (par exemple, une variable de myNumber transformée accidentellement en MyNumber ). Un problème, mais de nature différente, peut survenir si vous, considérant qu'une certaine variable stocke un nombre, y ajoutez un autre nombre, et que cette variable, en fait, contenait une chaîne ou autre chose. Dans ce cas, JavaScript ne signalera pas d'erreur, mais le résultat des calculs sera complètement différent de ce que vous attendez de l'ajout de deux nombres. Chaque développeur JavaScript peut se souvenir d'une histoire désagréable de ce type, lorsque la confusion de types a causé d'étranges erreurs dans les programmes.

Il est déjà assez difficile d'apprendre à programmer et, en même temps, de vous inquiéter de la façon dont le langage de programmation que vous apprenez peut vous nuire. Mais, heureusement, les problèmes de travail en toute sécurité avec les types de données peuvent être facilement résolus à l'aide d'outils de développement appropriés.

Visual Studio Code est l'un de mes éditeurs de code préférés qui convient à l'apprentissage de la programmation et à un usage professionnel. Il est gratuit, peu exigeant pour les ressources, son code est ouvert, il peut être étendu à l'infini. L'une de ses fonctionnalités les plus remarquables est de prendre en charge l'organisation de la vérification du code JavaScript pour les problèmes courants avec TypeScript. Vous pouvez activer cette vérification en utilisant le fichier de configuration approprié ou en insérant le commentaire suivant en haut du fichier JavaScript:

 // @ts-check 

Voici un exemple dans lequel il y a deux erreurs, dont aucune, du point de vue de JavaScript, n'est une erreur.


Problèmes JavaScript ne prend pas en compte les erreurs

Si vous ajoutez le commentaire // @ts-check au début de ce fichier, VS Code mettra en surbrillance les lignes de code qui contiennent des erreurs potentielles.


Lignes de code en surbrillance

Si vous survolez une ligne en surbrillance, une fenêtre contextuelle apparaît pour expliquer le problème.


Explication du problème

Quelles conclusions peut-on en tirer? Bien que JavaScript tolère beaucoup de mauvaises choses, si vous combinez JavaScript avec un éditeur de code de qualité et les bons outils supplémentaires, vous pouvez créer un environnement de développement similaire à ceux des autres langages de programmation modernes. En conséquence, le développement en JavaScript est aussi pratique que dans d'autres langages et, bien sûr, ses autres avantages ne disparaissent pas.

▍2. JavaScript ne prend pas en charge la POO


La programmation orientée objet (POO) est une approche de modélisation et d'organisation du code. Si les techniques de POO sont appliquées correctement, elles aident le programmeur à créer du code simple et bien organisé. La POO facilite également la réutilisation des fonctionnalités importantes du programme.

JavaScript est connu pour son manque de support pour la programmation orientée objet. En fait, les développeurs JavaScript ont traditionnellement contourné cette lacune en utilisant toutes sortes de constructions étranges. Ces constructions peuvent signifier quelque chose pour quelqu'un qui a déjà étudié la POO (et même pour quelqu'un qui n'a pas étudié, mais qui a simplement copié un modèle dans son code et est habitué à travailler avec). Mais si vous êtes une personne complètement nouvelle en programmation, l'utilisation de ces constructions douteuses qui implémentent des concepts de programmation de base est complètement fausse.

Heureusement, il existe de belles solutions qui prennent en charge la POO en JavaScript. Ma solution préférée de ce type est TypeScript , un projet open source lancé par Microsoft en 2012. TypeScript est un peu un type amélioré de JavaScript qui prend en charge la POO (ainsi que de nombreuses autres fonctionnalités utiles telles que la vérification de type forte).

Quelqu'un peut dire que nous parlons de JavaScript et que TypeScript n'est néanmoins pas JavaScript. Et, en fait, ça l'est. Mais voici un détail intéressant. Le code est écrit en TypeScript puis converti en JavaScript avant d'être exécuté. Cela vous permet de profiter du meilleur des mondes de TypeScript et JavaScript. Si vous choisissez TypeScript, vous disposerez d'un langage de programmation moderne dans lequel vous pourrez écrire votre code et de la prise en charge la plus large que JavaScript ordinaire utilise.

Et, mieux encore, le code TypeScript est automatiquement converti en JavaScript. Bien sûr, le code JavaScript généré par ordinateur utilise des constructions plutôt lourdes pour refléter en lui les concepts implémentés par TypeScript, mais cela ne change rien. Le programmeur étudie les concepts de la POO et le code fini fonctionne correctement, traité sans problème au moyen d'ordinateurs modernes.

Ne croyez pas? Pensez ensuite au fait que certaines des applications de bureau innovantes les plus modernes utilisent une combinaison de TypeScript et d' Electron , un cadre qui vous permet d'exécuter du code JavaScript en dehors d'un navigateur traditionnel (bien qu'il convient de noter qu'Electron utilise des capacités de navigateur). L'éditeur VS Code est l'un des exemples les plus impressionnants d'une telle application. Il s'avère que l'outil même avec lequel il est très pratique d'écrire du code JavaScript est lui-même écrit en JavaScript. Certes, pour être plus précis, VS Code est écrit en TypeScript, mais le code écrit dans ce langage est toujours converti en code JavaScript.

Bien sûr, lors de l'apprentissage de la programmation, il n'est pas nécessaire d'utiliser TypeScript, et les nouveaux programmeurs JavaScript, s'ils décident de le faire, pourront faire beaucoup sans étudier les principes de la POO. C'est, en fait, une question de choix. Dans tous les cas, on peut noter que JavaScript est un langage à développement dynamique, et des fonctionnalités y sont progressivement ajoutées qui le rapprochent de toute la valeur de TypeScript.

▍3. Around est plein de code JavaScript de mauvaise qualité


Que puis-je dire. Un code de mauvaise qualité peut être écrit dans n'importe quel langage de programmation. Avez-vous déjà entendu parler de Visual Basic ?

▍4. Le développement JavaScript nécessite des bibliothèques et des cadres supplémentaires


Afin d'accéder à un éventail de fonctionnalités plus large que dans le langage (et non pour réinventer la roue), les programmeurs JavaScript doivent utiliser des bibliothèques et des frameworks tiers. Choisir les bons ingrédients utilisés pour créer un projet n'est pas aussi simple qu'il y paraît à première vue. Il est, en particulier, que les outils supplémentaires sélectionnés doivent résoudre correctement les tâches qui leur sont assignées, il est nécessaire que le programmeur ait confiance qu'ils continueront à utiliser le support de leurs développeurs pendant longtemps, qu'ils n'entrent pas en conflit les uns avec les autres ami.

Les développeurs utilisant d'autres langages sont également confrontés à une sorte de problème. Cependant, il convient de noter que peu de langues souffrent autant de ce problème que JavaScript. Afin de devenir un programmeur sérieux dans un monde ouvert à tous les JavaScript, vous devez assembler votre propre ensemble d'outils de développement. Dans le même temps, chacun des choix possibles est si complexe et multiforme que vous ne pouvez comprendre que si une bibliothèque vous convient, si vous l'étudiez très bien (et lorsque vous l'étudiez, il peut s'avérer qu'elle perd déjà sa pertinence en sa place viendra quelque chose de nouveau, attrayant, peut-être - pour une courte période, d'intérêt général).

Peu importe à quel point tout cela peut être triste, ces problèmes, en fait, n'affectent pas les débutants. Si quelqu'un apprend la programmation en utilisant JavaScript, il est préférable de rester loin des frameworks et des bibliothèques, que ce soit quelque chose de largement connu, comme jQuery , Angular , React ou Vue , ou quelque chose d'inventé à un moment où cette phrase a été écrite, ou la seconde lorsque cet article a été publié. Bien sûr, un débutant, ayant bien maîtrisé les choses fondamentales, voudra probablement se familiariser avec au moins l'un des outils supplémentaires populaires. Mais c'est une histoire complètement différente.

Résumé


En effet, le choix du premier langage de programmation est une question à laquelle il est impossible de trouver la réponse absolument correcte. L'auteur de ce document n'a partagé ici que sa propre opinion à ce sujet, a donné des exemples qui lui sont proches en raison de son expérience et de ses préférences. Mais, dans tous les cas, tous les programmeurs commencent quelque part, et peu importe la difficulté du choix de la première langue, ce choix doit encore être fait.

Chers lecteurs! Êtes-vous d'accord pour dire que JavaScript est, dans les conditions modernes, le meilleur langage pour apprendre la programmation? Si vous n'êtes pas d'accord, alors peut-être connaissez-vous une langue mieux adaptée à cette fin?

Source: https://habr.com/ru/post/fr445272/


All Articles