Python vs JavaScript pour Pythonistas – Real Python

By | mai 18, 2020

trouver un expert Python

Si vous êtes sérieux au sujet de développement web, alors vous devrez en savoir plus sur Javascript à un moment donné. Année après année, de nombreuses enquêtes ont montré que JavaScript est l'un des langages de programmation les plus populaires au monde, avec une communauté de développeurs importante et croissante. Tout comme Python, le JavaScript moderne peut être utilisé presque partout, y compris le frontal, le back-end, le bureau, le mobile et l'Internet des objets (IoT). Parfois, ce n'est pas un choix évident entre Python et JavaScript.

Si vous n'avez jamais utilisé JavaScript auparavant ou que vous vous êtes senti dépassé par le rythme rapide de son évolution ces dernières années, cet article vous mettra sur la bonne voie. Vous devez déjà connaître les bases de Python pour profiter pleinement des comparaisons faites entre les deux langages.

JavaScript en un coup d'œil

Si vous connaissez déjà les origines de JavaScript ou si vous voulez simplement voir le code en action, n'hésitez pas à passer à la section suivante. Sinon, préparez-vous à une brève leçon d'histoire qui vous guidera à travers l'évolution de JavaScript.

Ce n'est pas Java!

Beaucoup de gens, notamment certains recruteurs informatiques, pensent que JavaScript et Java sont la même langue. Il est difficile de les blâmer, car inventer un nom aussi familier était une astuce marketing.

JavaScript s'appelait à l'origine Moka avant qu'il ne soit renommé LiveScript et enfin rebaptisé Javascript peu de temps avant sa sortie. À l'époque, Java était une technologie Web prometteuse, mais elle était trop difficile pour les webmasters non techniques. JavaScript a été conçu comme un langage quelque peu similaire mais adapté aux débutants pour compléter les applets Java dans les navigateurs Web.

Pour ajouter à la confusion, Microsoft a développé sa propre version du langage, qu'il a appelé JScript en raison d'un manque de droits de licence, pour une utilisation avec Internet Explorer 3.0. Aujourd'hui, les gens appellent souvent JavaScript JS.

Bien que Java et JavaScript partagent quelques similitudes dans leurs Syntaxe de type C ainsi que dans leurs bibliothèques standard, ils sont utilisés à des fins différentes. Java a divergé du côté client en un langage plus général. JavaScript, malgré sa simplicité, était suffisant pour valider les formulaires HTML et ajouter de petites animations.

C'est ECMAScript

JavaScript a été développé au début du Web par une entreprise relativement petite connue sous le nom de Netscape. Pour gagner le marché contre Microsoft et atténuer les différences entre les navigateurs Web, Netscape devait normaliser leur langue. Après avoir été refusée par l'international Consortium World Wide Web (W3C), ils ont demandé à un organisme européen de normalisation ECMA (aujourd'hui Ecma International) pour aider.

L'ECMA a défini une spécification formelle pour le langage appelé ECMAScript parce que le nom Javascript avait été déposé par Sun Microsystems. JavaScript est devenu l'une des implémentations de la spécification qu'il a initialement inspirée.

Alors que les implémentations individuelles de la spécification étaient conformes à ECMAScript dans une certaine mesure, elles étaient également livrées avec des API propriétaires supplémentaires. Cela a conduit à des pages Web ne s'affichant pas correctement sur différents navigateurs et à l'avènement de bibliothèques telles que jQuery.

Y a-t-il d'autres scripts?

À ce jour, JavaScript reste le seul langage de programmation pris en charge nativement par les navigateurs Web. C'est le lingua franca du Web. Certaines personnes l'adorent, d'autres non.

Il y a eu et continue d'exister de nombreuses tentatives pour remplacer ou supplanter JavaScript par d'autres technologies, notamment:

  • Applications Internet riches: Flash, Silverlight, JavaFX
  • Transpilers: Haxe, Google Web Toolkit, pyjs
  • Dialectes JavaScript: CoffeeScript, TypeScript

Ces tentatives ont été motivées non seulement par des préférences personnelles, mais aussi par les limitations des navigateurs Web avant HTML5 est entré en scène. À cette époque, vous ne pouviez pas utiliser JavaScript pour des tâches gourmandes en calcul telles que le dessin de graphiques vectoriels ou le traitement audio.

Applications Internet riches (RIA), d'autre part, offrait une expérience de type bureau immersive dans le navigateur via des plugins. Ils étaient parfaits pour les jeux et le traitement des médias. Malheureusement, la plupart d'entre eux étaient des sources fermées. Certains avaient des failles de sécurité ou des problèmes de performances sur certaines plateformes. Pour couronner le tout, ils ont tous considérablement limité la capacité des moteurs de recherche Web à indexer les pages créées avec ces plugins.

À peu près au même moment transpilers, qui a permis une traduction automatisée d'autres langues en JavaScript. Cela a rendu la barrière d'entrée au développement frontal beaucoup plus faible, car soudainement, les ingénieurs back-end pouvaient tirer parti de leurs compétences dans un nouveau domaine. Cependant, les inconvénients étaient un temps de développement plus lent, une prise en charge limitée des normes Web et un débogage encombrant du code JavaScript transposé. Pour le lier au code d'origine, vous avez besoin d'une carte source.

Pour écrire du code Python pour le navigateur, vous pouvez utiliser l'un des transpilateurs disponibles, tels que Transcrypt ou pyjs. Ce dernier est un port de Google Web Toolkit (GWT), qui était un transpileur Java vers JavaScript très populaire. Une autre option consiste à utiliser un outil comme Brython, qui exécute une version simplifiée de l'interpréteur Python en JavaScript pur. Cependant, les avantages peuvent être compensés par de mauvaises performances et un manque de compatibilité.

Le transpiling a permis l'émergence d'une tonne de nouveaux langages dans le but de remplacer JavaScript et de combler ses lacunes. Certaines de ces langues étaient étroitement liées dialectes de JavaScript. Le premier était peut-être CoffeeScript, qui a été créé il y a une dizaine d'années. L'un des derniers en date était Google's Dart, qui était la langue à la croissance la plus rapide en 2019 selon GitHub. De nombreuses autres langues ont suivi, mais la plupart d'entre elles sont désormais obsolètes en raison des récentes avancées de JavaScript.

Une exception flagrante est le TypeScript de Microsoft, qui a gagné en popularité ces dernières années. Il s'agit d'un surensemble de JavaScript entièrement compatible qui ajoute des options vérification de type statique. Si cela vous semble familier, c'est parce que l'indication de type de Python a été inspirée par TypeScript.

Intérêt pour la recherche dans TypeScript selon les tendances de Google
Intérêt pour la recherche dans TypeScript selon les tendances de Google

Bien que le JavaScript moderne soit mature et activement développé, le transpilage est toujours une approche courante pour assurer la rétrocompatibilité avec les navigateurs plus anciens. Même si vous n'utilisez pas TypeScript, qui semble être le langage de choix pour de nombreux nouveaux projets, vous devrez toujours transposer votre nouveau JavaScript brillant dans une ancienne version du langage. Sinon, vous courez le risque d’obtenir un erreur d'exécution.

Certains transpilers synthétisent également des API Web de pointe, qui peuvent ne pas être disponibles sur certains navigateurs, avec ce que l'on appelle polyfill.

Aujourd'hui, JavaScript peut être considéré comme le langage d'assemblage du Web. De nombreux ingénieurs frontaux professionnels ont tendance ne pas pour l'écrire à la main plus. Dans un tel cas, il est généré à partir de zéro grâce au transpiling.

Cependant, même le code manuscrit est souvent traité d'une manière ou d'une autre. Par exemple, la minification supprime les espaces et renomme les variables pour réduire la quantité de données à transférer et pour obscurcir le code afin qu'il soit plus difficile de procéder à une rétro-ingénierie. Ceci est analogue à la compilation du code source d'un langage de programmation de haut niveau en code machine natif.

En plus de cela, il convient de mentionner que les navigateurs contemporains prennent en charge la norme WebAssembly, qui est une technologie assez nouvelle. Il définit un format binaire pour le code qui peut s'exécuter avec des performances presque natives dans le navigateur. Il est rapide, portable, sécurisé et permet une compilation croisée de code écrit dans des langages comme C ++ ou Rust. Avec lui, par exemple, vous pouvez prendre le code vieux de plusieurs décennies de votre jeu vidéo préféré et l'exécuter dans le navigateur.

Pour le moment, WebAssembly vous aide à optimiser les performances des parties critiques du calcul de votre code, mais il est livré avec un prix. Pour commencer, vous devez connaître l'un des langages de programmation actuellement pris en charge. Vous devez vous familiariser avec les concepts de bas niveau tels que la gestion de la mémoire car il n'y a pas encore de garbage collector. L'intégration avec du code JavaScript est difficile et coûteuse. De plus, il n'y a aucun moyen facile d'appeler des API Web à partir de celui-ci.

Il semble qu'après toutes ces années, JavaScript ne disparaîtra pas de si tôt.

Kit de démarrage JavaScript

L'une des premières similitudes que vous remarquerez en comparant Python vs JavaScript est que les barrières à l'entrée pour les deux sont assez faibles, ce qui rend les deux langues très attrayantes pour les débutants qui souhaitent apprendre à coder. Pour JavaScript, la seule exigence de départ est d'avoir un navigateur Web. Si vous lisez ceci, alors vous avez déjà couvert cela. Cette accessibilité contribue à la popularité de la langue.

La barre d'adresse

Pour avoir un aperçu de ce que c'est que d'écrire du code JavaScript, vous pouvez arrêter de lire maintenant et taper le texte suivant dans la barre d'adresse avant d'y accéder:

JavaScript dans la barre d'adresse

Le texte littéral est javascript: alert ('bonjour le monde'), mais ne vous contentez pas de le copier-coller!

Cette partie après la javascript: le préfixe est un morceau de code JavaScript. Une fois confirmé, votre navigateur devrait afficher une boîte de dialogue avec le Bonjour le monde message en elle. Chaque navigateur affiche cette boîte de dialogue légèrement différemment. Par exemple, Google Chrome l'affiche comme ceci:

Boîte de dialogue d'alerte en JavaScript

Copier et coller un tel extrait dans la barre d'adresse échouera dans la plupart des navigateurs, qui filtrent le javascript: préfixe comme mesure de sécurité contre l'injection de code malveillant.

Certains navigateurs, comme Mozilla Firefox, vont encore plus loin en bloquant complètement ce type d'exécution de code. Dans tous les cas, ce n'est pas la façon la plus pratique de travailler avec JavaScript, car vous êtes limité à une seule ligne et limité à un certain nombre de caractères. Il y a une meilleure façon.

Outils de développement Web

Si vous affichez cette page sur un ordinateur de bureau ou un ordinateur portable, vous pouvez profiter de la outils de développement web, qui offrent une expérience comparable sur les navigateurs Web concurrents.

Pour basculer entre ces outils, reportez-vous à la documentation de votre navigateur ou essayez l'un de ces raccourcis clavier courants:

  • F12

  • Ctrl+Décalage+je

  • Cmd+Option+je

Cette fonctionnalité peut être désactivée par défaut si vous utilisez Apple Safari ou Microsoft Edge, par exemple. Une fois les outils de développement Web activés, vous verrez une myriade d'onglets et de barres d'outils avec un contenu similaire à celui-ci:

Outils de développement Web dans Google Chrome
Outils de développement Web dans Google Chrome

Collectivement, il s'agit d'un puissant environnement de développement équipé d'un débogueur JavaScript, d'un profileur de performances et de mémoire, d'un gestionnaire de trafic réseau et bien plus encore. Il existe même un débogueur à distance pour les appareils physiques connectés via un câble USB!

Pour le moment, cependant, concentrez-vous console, auquel vous pouvez accéder en cliquant sur un onglet situé en haut. Alternativement, vous pouvez rapidement l'amener à l'avant en appuyant sur Esc à tout moment lors de l'utilisation des outils de développement Web.

La console est principalement utilisée pour inspecter messages de journal émis par la page Web actuelle, mais il peut également être une excellente aide à l'apprentissage JavaScript. Tout comme avec l'interpréteur Python interactif, vous pouvez taper du code JavaScript directement dans la console pour l'avoir réalisé à la volée:

Console JavaScript dans les outils de développement Web
Console JavaScript dans les outils de développement Web

Il a tout ce que vous attendez d'un REPL outil et plus. En particulier, la console est livrée avec une coloration syntaxique, une saisie semi-automatique contextuelle, un historique des commandes, une modification de ligne similaire à GNU Readline et la possibilité de rendre des éléments interactifs. Ses capacités de rendu peuvent être particulièrement utiles pour introspecter des objets et des données tabulaires, passer au code source à partir d'une trace de pile ou afficher des éléments HTML.

Vous pouvez enregistrer des messages personnalisés sur la console à l'aide d'un prédéfini console objet. JavaScript console.log () est l'équivalent de Python impression():

console.Journal('Bonjour le monde');

Cela fera apparaître le message dans l'onglet console des outils de développement Web. En dehors de cela, il existe quelques méthodes plus utiles disponibles dans le console objet.

Document HTML

L'endroit le plus naturel pour le code JavaScript est de loin quelque part près d'un document HTML, qu'il manipule généralement. Vous en apprendrez plus à ce sujet plus tard. Vous pouvez référencer JavaScript à partir de HTML de trois manières différentes:

Méthode Exemple de code
Attribut de l'élément HTML
HTML
Fichier externe

Vous pouvez en avoir autant que vous le souhaitez. Les première et deuxième méthodes incorporent en ligne JavaScript directement dans un document HTML. Bien que cela soit pratique, vous devriez essayer de garder le JavaScript impératif séparé du HTML déclaratif pour favoriser la lisibilité.

Il est plus courant d'en trouver un ou plusieurs