Comme l'expliquait rewind, de toute manière tu ne veux pas enseigner tout le langage aux élèves de 1è année, c'est tout simplement impossible. Donc personnellement, C, C++, Perl, Python, Ruby, Scheme, Scala, OCaml, F#, etc., je m'en cogne un peu. :-)
Choisir un langage « suffisamment » fortement typé aide les élèves à trouver leurs erreurs à la compilation, du coup C++ n'est pas forcément une mauvaise idée, mais très honnêtement, Scala non plus, ni F#, ni OCaml, ni C (qui est faiblement typé, mais si on dit aux élèves qu'il faut mettre -Wall -Wextra -pedantic sur la ligne de compilation sinon on n'aidera pas, les élèves finissent par piger), etc.
Tu parlais des espaces de nommages : ça va passer à la trappe chez les élèves de 1è année. Ce sera déjà bien s'ils comprennent la notion de programmation modulaire (découper le programme en fonctions, etc.).
Pas de gestion des pointeurs : pour les tableau il y a le type std::array, que les étudiants peuvent apprendre sans chercher à comprendre comme ça marche sous le capot (ie. les templates)
J'ai tendance à bien aimer la notion d'enseigner « C + STL » aux élèves, mais j'avoue que même dans un commentaires à côté, j'ai un peu surestimé ce qu'on apprenait aux étudiants de fac classique en 1è année. Du coup, même du « C + cout/cin » et std::string c'est généralement suffisant.
Et surtout pas de problème de passage par référence/par valeur.
Ce n'est un réel problème que si tu désires discuter de la différence. En tant que prof, tu édictes les règles. Si tu dis « tout paramètre est copié lorsqu'il est passé à une fonction, sauf les tableaux qui eux seront modifiés pour de bon », les élèves accepteront la règle. Ils demanderont peut-être pourquoi, mais la réponse que je donnerais c'est « pour simplifier les choses dans un premier temps, et dans quelques semaines, on reviendra sur le sujet ».
Pourvu qu’on se restreigne aux notions simples le C++ fait l’affaire.
Oui, mais n'importe quel langage fait l'affaire dans ce cas. La question pour moi est de savoir quel langage il faut choisir lorsque les trucs de base (structures de contrôles, algos simples, etc.) ont été acquis : est-ce qu'on approfondit avec le même langage, ou bien est-ce qu'on change au risque de perdre encore quelques semaines à apprendre un nouveau langage ?
[^] # Re: Pascal...
Posté par lasher . En réponse au journal Python comme premier langage de programmation ?. Évalué à 4.
Comme l'expliquait rewind, de toute manière tu ne veux pas enseigner tout le langage aux élèves de 1è année, c'est tout simplement impossible. Donc personnellement, C, C++, Perl, Python, Ruby, Scheme, Scala, OCaml, F#, etc., je m'en cogne un peu. :-)
Choisir un langage « suffisamment » fortement typé aide les élèves à trouver leurs erreurs à la compilation, du coup C++ n'est pas forcément une mauvaise idée, mais très honnêtement, Scala non plus, ni F#, ni OCaml, ni C (qui est faiblement typé, mais si on dit aux élèves qu'il faut mettre
-Wall -Wextra -pedanticsur la ligne de compilation sinon on n'aidera pas, les élèves finissent par piger), etc.Tu parlais des espaces de nommages : ça va passer à la trappe chez les élèves de 1è année. Ce sera déjà bien s'ils comprennent la notion de programmation modulaire (découper le programme en fonctions, etc.).
J'ai tendance à bien aimer la notion d'enseigner « C + STL » aux élèves, mais j'avoue que même dans un commentaires à côté, j'ai un peu surestimé ce qu'on apprenait aux étudiants de fac classique en 1è année. Du coup, même du « C +
cout/cin» etstd::stringc'est généralement suffisant.Ce n'est un réel problème que si tu désires discuter de la différence. En tant que prof, tu édictes les règles. Si tu dis « tout paramètre est copié lorsqu'il est passé à une fonction, sauf les tableaux qui eux seront modifiés pour de bon », les élèves accepteront la règle. Ils demanderont peut-être pourquoi, mais la réponse que je donnerais c'est « pour simplifier les choses dans un premier temps, et dans quelques semaines, on reviendra sur le sujet ».
Oui, mais n'importe quel langage fait l'affaire dans ce cas. La question pour moi est de savoir quel langage il faut choisir lorsque les trucs de base (structures de contrôles, algos simples, etc.) ont été acquis : est-ce qu'on approfondit avec le même langage, ou bien est-ce qu'on change au risque de perdre encore quelques semaines à apprendre un nouveau langage ?