J'ai construit Boot.dev en tant que projet parallèle au cours des deux dernières années et de nombreux nouveaux étudiants ont récemment posé la même question :
« Pourquoi votre programme d'études en informatique exige-t-il que j'apprenne plus d'un langage de programmation ? »
Il semble qu'un bon nombre d'étudiants rejoignent la plateforme avec l'opinion qu'ils préféreraient « maîtriser pleinement une seule langue » plutôt que de « partager leurs efforts ». Alors que je prévois de mieux expliquer cela dans l'application elle-même à l'avenir, je voulais écrire ce billet de blog pour fournir une explication approfondie de la raison pour laquelle nous vous avons fait apprendre plusieurs langues au cours de notre programme CS.
Afin que vous puissiez comprendre d'où je viens, laissez-moi vous expliquer ce qu'est Boot.dev et quels sont ses objectifs en tant que plate-forme éducative.
Boot.dev est un programme d'informatique intégré dans le navigateur. Nous avons des opinions bien arrêtées sur la meilleure façon d'apprendre à coder. Par exemple:
Si vous regardez le programme CS complet que nous avons prévu dans notre feuille de route publique sur Github , vous verrez que c'est fondamentalement impossible. Certains concepts sont si étroitement liés à des technologies spécifiques qu'il est insensé d'essayer de les enseigner tous de la même manière. Regardons quelques exemples triviaux.
En bref, nous avons 2 objectifs concurrents :
Au cours de mon diplôme universitaire traditionnel en informatique, j'ai utilisé plus de 12 langages de programmation. Je pense que c'est trop. Je ne veux pas enseigner les langues pour le plaisir de les enseigner. C'est vraiment un problème d'optimisation où nous voulons introduire le moins de langues possible, tout en enseignant efficacement chaque concept que nous voulons enseigner. Je suis convaincu que le programme complet pour Boot.dev ne nécessitera que l'utilisation d'environ 6 langues au total, et que la majorité du programme peut simplement utiliser JavaScript, Python et Go.
Il y a un avantage supplémentaire à apprendre quelques langages de programmation différents dont nous n'avons pas encore parlé. En vous exposant à différents langages, vous commencerez à voir certains des avantages, des inconvénients, des similitudes et des différences entre les différentes approches de la programmation .
Si vous n'écrivez qu'un seul langage de programmation, il est facile de supposer qu'une certaine façon de faire les choses est la « meilleure façon », la « bonne façon », ou peut-être même la « seule façon ».
Par exemple, JavaScript et Go ont des approches très différentes du flux d'erreur :
// JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }
En vous familiarisant avec plusieurs langues, je crois fermement que vous aurez une compréhension plus approfondie de chaque technologie et quand vous voudrez peut-être utiliser différents outils.
Personnellement, je ne pense pas. Je pense vraiment que si vous deviez vous concentrer sur un seul langage de programmation depuis le début de votre parcours d'apprentissage jusqu'à votre premier travail de codage, vous seriez en fait dans un état pire que si vous aviez passé du temps à élargir vos horizons.
Certaines personnes supposent que « apprendre à coder » consiste à « apprendre un langage de programmation ». Ils pensent que si vous apprenez Python, et que vous voulez ensuite apprendre JavaScript, vous recommencerez à partir de 0.
Cela ne pourrait pas être plus éloigné de la vérité.
Apprendre votre deuxième langage de programmation prendra 1/5 du temps qu'il a fallu pour apprendre votre premier, car environ 80 % des concepts que vous avez appris s'appliqueront aux deux langages. Une fois que vous avez utilisé 3 ou 4 langages de codage différents, vous pouvez regarder le code dans presque n'importe quelle langue et comprendre ce qu'il dit. Vous pourriez avoir besoin de rechercher la syntaxe de temps en temps, mais tout le monde le fait de toute façon .
Si vous avez parcouru le programme, vous avez peut-être remarqué que nous avons opté pour 3 langues pour enseigner la majorité du contenu :
Nous allons essayer d'utiliser ces 3 langages autant que possible , en ne mélangeant d'autres technologies que si le sujet l'exige. Par exemple, utiliser SQL lorsque nous parlons de bases de données relationnelles.
Laissez-moi vous expliquer pourquoi nous avons choisi ces trois-là en particulier.
Vous ne pouvez pas vraiment vous éloigner de JavaScript de nos jours. Il est difficile d'apprendre la programmation backend (ce qui intéresse la plupart de nos étudiants) sans d'abord comprendre pourquoi un backend existe. Un backend n'existe que pour alimenter un front-end, il est donc logique que nous devions d'abord vous apprendre quelques bases du front-end. Si vous allez créer un front-end sur le Web, il utilisera presque certainement JavaScript, donc notre main est forcée sur celui-ci.
Python s'écarte de votre chemin, syntaxiquement parlant. Les algorithmes et les structures de données sont des concepts que les étudiants ont souvent plus de mal à maîtriser, il était donc logique pour nous de choisir un langage qui permettrait à nos étudiants de se concentrer le plus possible sur la logique. Python se lit également comme l'anglais à bien des égards, ce qui permet encore une fois de voir plus facilement ce que fait un algorithme en Python en un coup d'œil. De plus, nous avons du contenu d'IA et de ML vers la fin du programme, c'est donc une situation de deux oiseaux sur pierre où nous pouvons revoir Python à ce stade sans que nos étudiants aient besoin d'apprendre une langue supplémentaire.
Notre diplôme en informatique met l'accent sur la programmation backend , et j'ai personnellement eu un énorme succès avec Go en tant que langage backend. Go facilitera l'enseignement de choses telles que la concurrence, les compilateurs et les systèmes distribués que certains des autres choix auxquels j'ai pensé. Je pense que nous pourrions éventuellement avoir un cours Rust qui va à un niveau encore plus bas en termes de gestion manuelle de la mémoire, mais je n'ai pas encore décidé de cela.
Le meilleur moyen de me joindre directement est de rejoindre le serveur Boot.dev Discord . Vous pouvez aussi me @ me sur Twitter . Dites-moi ce que vous pensez de notre approche !
Également publié ici https://blog.boot.dev/education/learn-multiple-programming-languages/