Ce n'est pas un question d'aller trop vite, mais de ne pas les perdre dans des détails qui leur seront inutiles. Pour cela, on va faire en sorte d'aller le bon ordre.
Ce n'est pas une question de leur parler de la STL, mais de la SL au fil des besoins. On veut rentrer le nom d'une personne ? -> std::string. On veut un tableau non statique -> std::vector. C'est un bon début et il n'y a pas besoin de rentrer dans les détails.
std::string a une sémantique de valeur, je ne concèderai pas que c'est moins simple à utiliser que des char*, ou même des tableaux statiques de caractères. Et puis, on veut présenter les tableaux ? "Tiens, je vous montre un truc juste avant : pour accéder au premier caractère d'une chaine ch, on écrit ch[0]". Chapitre d'après, "vous vous souvenez des chaines ? Et bien les tableaux ça y ressemble."
Un gars qui doit concevoir des bibliothèques bas niveau doit maitriser ces détails, c'est un fait. Le gars qui assemble des petits modules pour arriver à un truc un peu plus gros mais dont les résultats devront être vite perceptibles n'a pas besoin de ces détails.
Le Pascal et mieux l'Ada sont des langages royaux sur le plan pédagogique. Et pourtant on ne montre jamais dans ces premiers cours comment on manipule les pointeurs, leur arithmétique, ... A la place, on utilise au maximum leur types dédiés pour les tableaux et les chaines. Est-ce un problème de ne pas savoir comment ça marche en interne ? Non, absolument pas.
Pourquoi le C++ devrait être présenté comme une surcouche du C, ce qu'il n'est plus ?
Raison de plus parce que ce sont des gens inexpérimentés, on devrait leur montrer le côté utilisation avec des exemples pratiques et motivants -> gérer un carnet d'adresse/ bibliothèque/médiathèque personnelle, un jeu du pendu, un jeu de puissance 4 (pour jouer à deux, l'élève sur 30 qui est motivé et en avance pourra s'amuser à faire l'IA)
Algorithmiquement parlant, cela ne manque pas de challenges. Et à aucun moment, on n'a besoin de voir un seul pointeur!!
Pour la convertion chaine <-> nombre, le langage propose déjà des outils. Pour un informaticien, OK on va montrer l'algo. Pour un débutant, il y a d'autres algorithmes tout aussi valables et qui plus est des qui ne supposent pas des connaissances en mathématiques qu'ils risquent d'avoir oublier depuis longtemps.
L'Accelerated C++ suppose des bases en agorithmique, en revanche la démarche de que Francis Glassborrow expose dans son bouquin a semble-t-il été testée avec succès sur de parfaits débutants. Je maintiens mon conseil quant au bien fondé de sa consultation.
Bref, cette approche est au contraire pragmatique. On montre juste ce qui est nécessaire de savoir pour concevoir des programmes simples. Les pointeurs on n'en a guère un besoin crucial avant l'introduction du polymorphisme et de la sémantique de référence. Et peut-etre même qu'ils pourraient être familiers avec les itérateurs au moment de les aborder.
Et si il y a un élève sur les 10 qui pose la question de savoir "comment c'est fabriqué std::string", et bien on aura tout le temps de lui expliquer la chose entre deux cours ou lui dire de patienter jusqu'aux annexes.
PS: je ne casse pour ma part pas du prof. Je sais très précisément à quel point monter un cours de C++ n'est pas un problème facile et évident entre les contraintes de cohérence avec le cursus, le public, ce que l'on voudrait montrer, les heures dont on dispose, le temps dont on dispose pour préparer le cours ou reprendre un truc qui existe, ....
J'estime qu'il y a un réel problème dans l'enseignement du C++ et mes remarques ne sont qu'à vocation d'améliorer le support de quelqu'un ouvert aux critiques.
Partager