Quel langage pour apprendre la programmation?
Pendant longtemps, le langage Pascal a été le langage de l'apprendissage de la programmation dans les universités. Il imposait la programmation structurée et donc un comportement plus rigoureux de la part de l'élève.
Il a été remplacé par Java, plus en phase avec ce que l'on utilise dans les entreprises. Pourquoi apprendre à programmer dans un langage qu'on n'utilisera plus ensuite? Plus récemment, c'est Python qui a été plébiscité pour sa simplicité, ce qui permet de se concentrer sur le résolution du problème et d'ignorer les questions matérielles liés à l'ordinateur. Python est interprété et on peut exécuter un programme aussitôt qu'on l'a écrit, sans passer par une phase de compilation, ce qui est plutôt pratique pour l'apprentissage. Porter un nom de serpent de l'a pas empêché de devenir en 2014 le langage peut-être le plus utilisé pour l'apprentissage. Cependant il n'est pas sûr qu'il le restera en 2015. En effet il se trouve de plus en plus remis en question et il pourrait bien laisser sa place à un autre langage qui offre les mêmes avantages, avec en plus la capacité de produire des applications pour mobiles, ce qui intéresse quasiment tout le monde de nos jours...
Le choix d'un langage pour apprendre la programmation se base sur une liste de critères:
- Il doit permettre de comprendre les aspects les plus importants de la programmation: le code procédural, la programmation orientée objet (qui n'était pas connue à l'époque de Pascal), les fonctions lambdas, et de nombreux autres (voir la liste des attributs des langages de programmation).
- Si l'on veut créer une génération de programmeurs, il faut un langage incitatif, qui suscite de l'intérêt pour la programmation. La simplicité d'utilisation, la clarté et la concision de la syntaxe, contribueront à cet engouement.
- De préférence, le langage doit être populaire, largement utilisé, il disposera ainsi d'un ecosystème, de bibliothèques et d'outils de développement perfectionnés.
Pascal répondait au premier critère et au troisième (dans la version Delphi), mais pas du tout au second. Il en est de même pour Java. Il y a certainement peu d'étudiants qui avaient ajouté un module de programmation à leur cursus pour compléter leur savoir et qui ont eu envie de devenir programmeurs de par l'attrait de ces langages.
Python dispose de cette qualité de séduction tant il est simple de passer de l'idée au code Python. Cependant il se trouve maintenant dépassé. C'est un langage de script, fonctionnant en ligne de commande, mal adapté aux applications sur mobile. Ce que l'on désire maintenant quand on apprend à programmer, c'est réaliser une application pour la voir tourner sur l'appareil que l'on utilise tous les jours, son mobile...
JavaScript, quand à lui, répond aux trois critères. Ce n'était pas le cas encore l'année dernière, mais la popularisation du standard ECMAScript 6, qui ajoute les classes et les générateurs au langage lui a procuré ce qui lui manquait jusque là en fonctionnalités, et l'utilisation du mode strict, supprime les défauts du langage.
Il est possible d'utiliser JavaScript en ligne de commande avec node.js pour ses premiers pas, ou Electron. On crée ensuite des applications en ligne avec HTML comme interface, puis des applications pour mobile avec Cordova comme interface au matériel. Elle fonctionneront sur tous les appareils ce qui est indispensable dans le cadre de l'enseignement.
JavaScript, plus encore que Python, a cette qualité de donner l'envie de programmer. Tout est simple et intuitif dans la syntaxe. Il est également interprété, donc le programme s'exécute immédiatement sans compilation, et l'exécution de JavaScript est dix fois plus rapide que celle de Python. Et cela fonctionne aussi avec une interface graphique dans le navigateur, les modifications du code sont appliquées immédiatement, et les navigateurs disposent en outre d'outils de développement intégrés pour la mise au point (taper ctrl-maj-i sur Chrome).
Les plateformes comme Electron ou NW.js (anciennement Node-Webkit), permettent de réaliser des applications de bureau en JavaScript, avec HTML comme interface.
En conclusion, JavaScript, devenu plus complet, fonctionnant sur le Web, sur mobiles et sur le bureau, est maintenant le langage le plus intéressant pour à la fois apprendre les concepts de la programmation, et donner l'envie d'aller plus loin et de réaliser de vrais programmes.
C'est aussi l'opinion de ce programmeur qui réalise des jeux vidéos depuis 1980 et qui a écrit de nombreux articles sur la programmation. Après avoir conseillé Python pour l'apprentissage de la programmation durant dix ans, il a en 2015 changé d'avis. Maintenant, dans l'article Retiring Python as a Teaching Language (c'est en anglais), il arrive à la constatation que Python ne convient plus aux étudiants actuels et conseille maintenant d'utiliser plutôt JavaScript, pour les raisons similaires à celles que je viens de mentionner...
On peut également utiliser TypeScript et Dart qui tous deux produisent du code JavaScript. Dart permet en outre de réaliser des applications mobiles pour tous systèmes, et est très apprécié des programmeurs.
Mise à jour du 23 avril 2017
L'Université de Stanford explique pourquoi elle a choisi JavaScript comme langage d'initiation à l'informatique pour ses étudiants, pour remplacer Java:
- Pour essayer JavaScript, il n'y a rien à installer: des sites en lignes permettent de tester le code directement, il suffit de partager l'URL avec les étudiants.
- On peut dès le premier jour réaliser des progammes amusants avec graphismes et animation, dans un navigateur.
- Pour les classes avec des étudiants étrangers, on peut localiser les nombres et les dates, dès le premier jour.
- C'est le langage le plus utilisé au monde et il fonctionne sur tous les matériels. Il est facile de trouver des informations sur les problèmes rencontrés et de travailler chez soi.
- JS dispose de fonctions de premier ordre et de closures, on peut donc étudier ces problèmes.
- L'orientation évènement est un modèle très facile à assimiler.
- La séparation des préoccupations: l'interface et le traitement sont séparés, cela facilte l'apprentissage. Et une interface en langage déclaratif, le HTML, est aussi plus simple à apprendre.
Source. (Anglais)