Comme je l'expliquais dans mon précédent billet, les meilleurs langages en production ne sont pas souvent les meilleur langage pour l'enseignement. Je vais donc aujourd'hui vous expliquer pourquoi le JavaScript est pour moi le langage le plus adapté pour enseigner la programmation à des débutants.
C'est un langage interprété
Pas besoin d'écrire son programme dans un fichier, de le compiler puis de l’exécuter : il suffit d'écrire les instructions dans la console et il se passe directement quelque chose !
En plus il n'est pas typé, du coup on s'évite des prises de tête inutiles.
La syntaxe est souple
Vous voulez mettre un ';' à la fin de vos ligne, vous pouvez. Mais si vous en oubliez un par erreur, votre programme ne plantera pas lamentablement.
Déclarer un objet se fait de la façon la plus naturelle possible, au cours de l’exécution : pas besoin de créer une classe dans un fichier à part puis de l'instancier.
Il n'y a rien à installer !
Tout le monde a un navigateur web sur son PC, et même un vieille version d'IE peut faire tourner du JavaScript. Ceci dit, l'idéal est quand même d'utiliser Firefox, qui offre des outils très puissants pour apprendre à programmer. (c.f. plus loin)
Vous pouvez facilement déployer un environnement de développement pour tous vos élèves
Vous allez maintenant comprendre pourquoi je conseille d'utiliser Firefox.
Firefox dispose d'un outil incroyable : le scrachpad . Il s'agit d'un éditeur de texte dans lequel vous pouvez saisir du code JavaScript qui s’exécutera sur la page courante.
Pour déployer un environnement de développement commun à tous vos élèves, par exemple 2 librairie et un cadre HTML défini, il vous suffit de réaliser une page HTML incluant les 2 librairies que vous souhaitez faire utiliser à vos élèves et le cadre HTML de base, puis de l'uploader sur un serveur web.
Tous ce que vos élèves auront alors à faire sera de se connecter au serveur depuis leur navigateur et d'ouvrir le scrachpad : tous les scripts qu'ils écriront s’exécuteront alors dans le contexte de la page avec les librairies chargées. Vos élèves n'auront donc rien à installer ou à configurer pour commencer à programmer !
On peut facilement faire quelque chose de visuel et interactif
J'ai toujours aimé les maths, mais programmer une factorielle ou la suite de Fibonacci ça devient vite barbant. Avec JavaScript vous allez pouvoir faire travailler facilement vos élèves sur des interfaces graphiques. Apprendre à programmer, c'est facile si vous travaillez sur des trucs qui vous motivent, mais si vous avez l'impression que programmer ça sert à faire des maths alors que vous détestez les maths, ça risque d'être un peu plus difficile de se motiver.
On peut expérimenter tous les paradigmes de programmation
Vous voulez expliquer la POO, vous pouvez. Vous voulez faire de la programmation fonctionnelle, vous pouvez. La programmation asynchrone ? Pareil.
Tags de l'article : enseignement, javascript, programmation
Je suis toujours surpris quand je parle à des gens qui suivent (ou ont suivi) des cours de programmation : Dans la majorité des cas autour de moi, l'enseignement de la programmation se fait en C ou en Java. Sérieusement, en C ?! C'est quoi cette idée à la con ?
Ce n'est pas parce qu'un langage est très utilisé que c'est un bon langage pour apprendre à programmer, je dirais même que c'est même plutôt l'inverse. Pourquoi le C est-il encore utilisé ?
- Parce que c'est un langage compilé (donc performant)
- Parce que c'est un langage proche de la machine (donc pratique pour faire des système embarqués où chaque Ko de RAM compte)
Et c'est justement ces 2 qualités qui en font un mauvais langage pour apprendre :
- Ça fait chier de devoir compiler un programme juste pour faire un "hello world", d'autant que ça implique d'installer un compilateur et de savoir le faire marcher.
- Devoir affecter et désaffecter soi-même sa mémoire c'est utile, mais pas vraiment pertinent pour débuter en programmation.
L'exemple du C est extrême, mais on retrouve le même genre de problème avec Java ou encore C++. Voici 3 exemple de "Hello world" respectivement en C, en C++ et en Java
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
#include <iostream>
int main()
{
std::cout << "Hello, new world!" << std::endl;
return 0;
}
/* Affichage console */
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Vous voyez le problème ? Pour écrire un simple "Hello world",
- en C et C++ vous êtes obligé d'écrire une fonction main et de faire un appel à #include
- en Java vous devez déclarer une classe et une fonction, les 2 avec un syntaxe effrayante.
Pour éliminer les éléments parasites autant que possible il faut donc travailler avec :
- un langage de script : comme ça on s'évite les joies de la compilation et on peut directement s'amuser à tester des trucs dans la console.
- un langage non typé (ou typé dynamiquement si vous préférez) : ça rend toute les déclarations plus légère et ça évite de se prendre la tête.
Attention, je n'ai jamais dit que les langages non-typés étaient mieux ! Le typage statique vous sauve la vie quand vous voulez maintenir un gros projet, mais quand vous voulez apprendre les bases de la programmation à un électronicien, à un thermicien ou à n'importe qui sauf un développeur, se prendre la tête avec un langage typé est toujours contre-productif.
Tags de l'article : C, C++, Java, enseignement, programmation