• [^] # Re: Pascal...

    Posté par . En réponse au journal Python comme premier langage de programmation ?. Évalué à 4.

    Pourquoi pas le C++ ?

    Y’a tout ce qu’il faut.

    Typage statique : écrire « int n » ce n’est ni plus ni moins que l’équivalent en mathématique de « soit n ∈ N ». Si les étudiants ne sont pas dans un cursus spécialisé, il me semble qu’à un certain niveau dans une filière technique/scientifique c’est jouable.

    I/O simplifiées (par rapport au C, ou même des langages comme Python – cf. la discussion sous un autre journal sur comment on doit écrire les chaînes de caractères) et unifiées (on écrit dans un fichier comme on écrit sur cout/cerr). Je reconnais que les << & >> c’est assez spécial et surtout très spécifique à ce langage, mais c’est plutôt intuitif !

    Espace de nom : permet de limiter la casse par rapport aux variables globales, histoire d’éviter d’avoir des signatures de fonctions à rallonge.

    Pas de gestion des pointeurs : pour les tableau il y a le type std::array<T,n>, que les étudiants peuvent apprendre sans chercher à comprendre comme ça marche sous le capot (ie. les templates). Par qu’il faut bien voir que la seule raison pour laquelle on a littéralement fait chier toute une génération d’étudiants avec les pointeurs, c’est parce que c’est le seul moyen en C de traiter des tableaux.

    Et surtout pas de problème de passage par référence/par valeur. Au besoin on peut introduire le &, plus facile à appréhender dans un premier temps que les pointeurs. Et il est explicite, ce qui en terme didactique est beaucoup mieux que tous les langages du style Python/Java/etc. Et ça pour moi c’est un truc crucial : c’est une question de rigueur, car l’un dans l’autre il faudra bien finir par leur expliquer, en TP, à ces étudiants pourquoi certaines variables sont modifiées dans les fonctions et pourquoi pas d’autres, alors que vous venez de leur expliquer en cours magistral pendant deux heures ce qu’est la programmation "fonctionnelle" (du moins à mon époque on apprenait le C comme un langage fonctionnel : pas de variable globale, la question ne se posait même pas pour static, etc.)

    Au final le C++ est le seul langage, à ma connaissance (C++/Java/Python donc pas les trucs confidentiels), qui offre un traitement simple et propre de la gestion des variable sans se préoccuper des questions de mémoire. Tout cela parce que c’est le seul à respecter un principe de base de la programmation fonctionnelle (pas d’effet de bord des fonctions).

    Compilo avec messages d’erreurs et quantité de bugs évités ainsi. En théorie, au niveau débutant on ne se prend pas dans la gueule les messages abscons (assez typiques quand on s’amuse avec les templates par exemple). Et puis parce que savoir ce qu’est un code source, un compilateur et un exécutable, c’est pour moi un point essentiel d’apprentissage de l’informatique. Y compris et surtout! pour ceux qui ne se destinent pas à être programmeur.

    Pourvu qu’on se restreigne aux notions simples le C++ fait l’affaire.

    Et au moins le jour où y’a besoin d’attaquer l’objet, on n’est pas dépaysé. On peut même imaginer une introduction en douceur avec la classe string, nécessairement abordée assez tôt dans l’apprentissage, parce que c’est bien utile... et sans aborder l’objet proprement dit, les étudiants peuvent avoir un aperçu de l’utilité de la chose.