Le blog de StyMaar

'Let the hate flow through you'

Arrêtez d'enseigner la programmation en C ou en Java !

Publié le 25/11/2013 - Aucun commentaire

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 : , , , ,