L'apprentissage et l'enseignement moderne du C++

Le
Mathieu STEFANI
Bonjour tous,

Comme le dit le sujet, j'cris ce post pour parler et dbattre autour d=
e l'apprentissage et l'enseignement _moderne_ du C++.

En effet, comme vous le savez sans doute, dans la majorit des cursus inf=
ormatiques (tout du moins, en France), l'on retrouve toute une partie sur l=
'apprentissage de la programmation, et sur le C++.
De mon point de vue, il s'agit de l'un des langages les plus complexes =
apprhender, ce qui rend son enseignement trs dlicat. Les cours dis=
penss dans les diffrentes coles se doivent d'tre rigoureux, en =
rduisant le plus possible les approximations que l'on pourrait y trouver=
.

Cependant, de ma propre constatation, au sein du corps enseignant, rares so=
nt les enseignants se tenir au gout du jour (l'informatique tant un =
secteur voluant trs vite), et imposer une relle rigueur dans l=
es cours dispenss aux lves. Au final, on se retrouve donc avec un =
cours plutt approximatif, aux exemples mal choisis et idioms et pratique=
s courantes pas toujours respectes.

C'est pour cela que je souhaite instaurer le dbat, avec des personnes d'=
exprience, venant de l'industrie mme, et ayant dans la plupart des ca=
s vu voluer le langage, voire son enseignement (dans les diffrents bo=
uquins, cours, ). En outre, avec l'arrive rcente du nouveau standa=
rd C++11, cela risque de remettre pas mal de choses et de cours en question=
.

Pensez-vous qu'il est pour l'instant trop prmatur d'introduire certai=
nes notions et fonctionnalits de C++11 dans les cours actuels ? Pensez-v=
ous que cela rentre dans le cadre de la renaissance du C++, et doit=
donc faire parti de l'enseignement moderne du C++ ? A l'heure actuelle, ra=
res sont les bouquins ayant t mis jour pour C++11 ( part les b=
ouquins faisant tat de TR1). Cela ne risque donc t-il pas de poser un pr=
oblme au niveau des ressources disponibles pour les tudiants ?

D'autre part, certains cours de C++ se basent et supposent, de la part des =
tudiants, qu'ils possdent dj des bases en C. Ainsi, ces cours r=
eposent sur des notions acquises en C. Pensez-vous qu'aujourd'hui, en 2011,=
cela a t-il encore rellement un sens ? Scott Meyers nous disait que l'u=
tilisation de C++ rassemblait 4 entits :
- le C
- L'orient objet
- La programmation gnrique avec les templates
- la STL

Est-il donc encore, en 2011, rellement productif et justifi de passer=
par la case C avant d'introduire le C++ ?

Enfin, si aujourd'hui, on vous demandait d'enseigner le C++, quelles seraie=
nt les lignes directrices de votre cours ? Quel serait le plan de v=
otre cours ? Passeriez-vous du temps pour vrifier les acquis du =
C, ou bien vous concentreriez-vous exclusivement sur le C++, ses pratiques =
et ses idioms en voquant les parties hrites du C lorsqu'il le faut=
?


Si je pose ces questions, c'est car j'aimerais rcolter l'avis de personn=
es ayant pass de nombreuses annes dans l'industrie, et non pas seulem=
ent dans le domaine accadmique. Les deux ne sont, selon moi, pas incompa=
tible, et peuvent travailler ensemble.

Cordialement.
  • Partager ce contenu :
Vos réponses Page 5 / 6
Trier par : date / pertinence
espie
Le #24084631
In article Wykaaa
Marc Espie a écrit :
In article Wykaaa
Pour moi, il y a 4 personnes très importantes sur l'objet, ce sont :
Grady Booch, Bertrand Meyer (auteur du langage Eiffel), Stanley B.
Lippman (pour la pédagogie sur C++ dans les années 90) et James O.
Coplien. Stroustrup ne vient qu'après.



Et Koenig ?



Merci Marc. Je l'avais totalement oublié et c'est impardonnable.
D'ailleurs sur l'objet, je le mets juste derrière Grady Booch et
Bertrand Meyer.

Sinon tu sembles d'accord avec ma liste puisque tu n'as pas fait
d'autres remarques.



Oh, dans l'optique C++, et pionniers, oui pas mal. Si on parle d'objet
en general, faudrait quand meme rajouter les createurs de Smalltalk,
Alan Kay en tete...

Cote vulgarisation moderne, j'ai un faible pour les ouvrages de Martin
Fowler. Son bouquin sur le refactoring est franchement plutot correct.

Apres, si on doit taper un peu sur Stroustrup, je trouve qu'il a beaucoup
beaucoup tendance a se perdre dans des details... j'avais teste le C++
il y a longtemps, a l'epoque de l'ARM, et j'avais laisse tomber, vu que
ca me paraissait beaucoup trop touffu et technique.

Son bouquin d'apprentissage est un peu du meme tonneau... C'est aride, tres
aride, et ca manque de purete. Si on doit se prendre la tete, je prefere
largement du Knuth... ;-)
Wykaaa
Le #24084761
Marc Espie a écrit :
In article Wykaaa
Marc Espie a écrit :
In article Wykaaa
Pour moi, il y a 4 personnes très importantes sur l'objet, ce sont :
Grady Booch, Bertrand Meyer (auteur du langage Eiffel), Stanley B.
Lippman (pour la pédagogie sur C++ dans les années 90) et James O.
Coplien. Stroustrup ne vient qu'après.


Et Koenig ?


Merci Marc. Je l'avais totalement oublié et c'est impardonnable.
D'ailleurs sur l'objet, je le mets juste derrière Grady Booch et
Bertrand Meyer.

Sinon tu sembles d'accord avec ma liste puisque tu n'as pas fait
d'autres remarques.



Oh, dans l'optique C++, et pionniers, oui pas mal. Si on parle d'objet
en general, faudrait quand meme rajouter les createurs de Smalltalk,
Alan Kay en tete...



Là c'est sûr. Entièrement d'accord.

Cote vulgarisation moderne, j'ai un faible pour les ouvrages de Martin
Fowler. Son bouquin sur le refactoring est franchement plutot correct.



D'accord aussi. D'autant plus que c'est un sujet qui n'est pas si
souvent abordé.

Apres, si on doit taper un peu sur Stroustrup, je trouve qu'il a beaucoup
beaucoup tendance a se perdre dans des details... j'avais teste le C++
il y a longtemps, a l'epoque de l'ARM, et j'avais laisse tomber, vu que
ca me paraissait beaucoup trop touffu et technique.



Voilà. C'est ce que je pense. Il n'est pas pédagogue et n'a pas assez de
recul. Je ne crois pas que les créateurs de langages soient les mieux
placés pour en parler. Le K&R n'est pas, de loin, le meilleur bouquin
sur C car si les exemples montrent les possibilités du langage C, d'un
point de vue strictement qualité logicielle, c'est loin du top...

Son bouquin d'apprentissage est un peu du meme tonneau... C'est aride, tres
aride, et ca manque de purete. Si on doit se prendre la tete, je prefere
largement du Knuth... ;-)



Knuth, l'indépassable, en ce qui me concerne...
ptyxs
Le #24089121
Apres, si on doit taper un peu sur Stroustrup, je trouve qu'il a beauc oup
beaucoup tendance a se perdre dans des details... j'avais teste le C++
il y a longtemps, a l'epoque de l'ARM, et j'avais laisse tomber, vu qu e
ca me paraissait beaucoup trop touffu et technique.



Voilà. C'est ce que je pense. Il n'est pas pédagogue et n'a pas ass ez de
recul. Je ne crois pas que les créateurs de langages soient les mieux
placés pour en parler.

Son bouquin d'apprentissage est un peu du meme tonneau... C'est aride,
tres
aride, et ca manque de purete.





Aride ? PPP ? Alors là je suis sidéré, c'est au contraire à mes y eux un
ouvrage très pédagogique et séduisant (issu de plusieurs années
d'enseignement à des débutants à l'université), qui a le grand mé rite
d'enraciner des principes méthodologiques essentiels, trop souvent omis
dans l'enseignement en France, dans des exemples tout à fait concrets e t
détaillés, ce qui me semble exactement ce que l'on doit faire... La
'pureté' n'est sûrement pas l'objectif à mon avis ! Ce qui caracté rise
ce livre, c'est au contraire le va-et-vient incessant et fructueux entre
principes généraux et programmation la plus concrète.

Par moments, je me demande si vous ne confondez pas ce livre avec le
précédent 'Le langage C++' qui pour le coup, était quelque peu arid e et
touffu et peu pédagogique. Mais PPP (rédigé avec un collège péd agogue
décédé entre temps) ce n'est pas du tout, du tout cela...

Je ne veux rien supposer de désobligeant, mais c'est un gros livre et
pour l'évaluer il faut plonger dedans et pas seulement le parcourir...

Une chose intéressante aussi par parenthèses : PPP est un des rares
exemples d'ouvrages publiés qui montre qu'on peut (et à mon sens qu'o n
doit) commencer l'enseignement du C++ par ... du C++ et non par du C (le
C est abordé dans les tout derniers chapitres). Beaucoup gagneraient en
France à s'en inspirer aussi à cet égard...
Fabien LE LEZ
Le #24093101
On Mon, 19 Dec 2011 17:46:17 +0100, ptyxs
Une chose intéressante aussi par parenthèses : PPP est un des rares
exemples d'ouvrages publiés qui montre qu'on peut (et à mon sens qu'on
doit) commencer l'enseignement du C++ par ... du C++ et non par du C



En fait, c'est forcément un des deux meilleurs livres de C++ pour les
débutants, vu qu'il n'y en a que deux (celui-là et Accelerated C++).
espie
Le #24192941
In article
ca va etre beaucoup moins casse-bonbons en C++2011 qu'en 98, hein. Une fois
qu'on pourra faire vraiment plus que le cours theorique, et qu'on sera
certain qu'en lachant les etudiants sur du projet, ils vont tomber sur des
trucs existants, et pas sur un bout de bibliotheque encore manquante a emuler
a la main...



pas encore fini de lire le brouillon de la nouvelle norme (faudra que je
vois si Wiley a upgrade son edition papier, d'ailleurs).

J'en retire que ca va BEAUCOUP changer la facon d'enseigner le C++...

- il y a plein de concepts C qui vont disparaitre completement. Deja
std::array<type, size> plus les initialiseurs generalises, c'est une tuerie.

- on va pouvoir expliquer les histoires de reference plus tard. Les
histoires de move constructor et move assignment, tordues a expliquer, font
qu'a priori, la bibliotheque standard va etre beaucoup plus efficace (tout
ce qui est dequeue ne va plus du tout du tout faire de copie).

- faudra a peu pres totalement oublier les boucles a la C, au moins au debut.
C'est le grand vrai retour de la programmation fonctionnelle, entre les
range for et les lambda.

- cote pointeur, la-aussi ca va etre fun, entre shared_ptr<> et unique_ptr<>,
on peut a peu pres oublier tout ce qui est pointeur "de base" avant tres
tres tard...

je dis pas qu'il faudra pas expliquer beaucoup de choses pour aller vraiment
loin, mais d'un coup, on va pouvoir quasiment directement utiliser la
bibliotheque standard "pour de vrai" des le debut (hop, plus besoin
d'iterateur, hop, plus besoin de const iterator, hop, les && font que les
temporaires d'un coup sont beaucoup moins chiant, hop, plus besoin d'expliquer
les foncteurs a la bind_two pour pouvoir utiliser les algo de base).
P'tet une chance de reduire la reputation de C++ comme langage chiant,
incomprehensible, et inutilisable sans s'etre mange 50 heures de cours ?...

Allez, il y a a peu pres autant de rapport entre C++98 et C++2011 qu'entre
Java et Scala...
espie
Le #24192931
In article
Apres, si on doit taper un peu sur Stroustrup, je trouve qu'il a beaucoup
beaucoup tendance a se perdre dans des details... j'avais teste le C++
il y a longtemps, a l'epoque de l'ARM, et j'avais laisse tomber, vu que
ca me paraissait beaucoup trop touffu et technique.



Voilà. C'est ce que je pense. Il n'est pas pédagogue et n'a pas assez de
recul. Je ne crois pas que les créateurs de langages soient les mieux
placés pour en parler.

Son bouquin d'apprentissage est un peu du meme tonneau... C'est aride,
tres
aride, et ca manque de purete.





Aride ? PPP ? Alors là je suis sidéré, c'est au contraire à mes yeux un
ouvrage très pédagogique et séduisant (issu de plusieurs années
d'enseignement à des débutants à l'université), qui a le grand mérite
d'enraciner des principes méthodologiques essentiels, trop souvent omis
dans l'enseignement en France, dans des exemples tout à fait concrets et
détaillés, ce qui me semble exactement ce que l'on doit faire... La
'pureté' n'est sûrement pas l'objectif à mon avis ! Ce qui caractérise
ce livre, c'est au contraire le va-et-vient incessant et fructueux entre
principes généraux et programmation la plus concrète.

Par moments, je me demande si vous ne confondez pas ce livre avec le
précédent 'Le langage C++' qui pour le coup, était quelque peu aride et
touffu et peu pédagogique. Mais PPP (rédigé avec un collège pédagogue
décédé entre temps) ce n'est pas du tout, du tout cela...



Non, non, j'ai bien vu le nouveau bouquin du Stroustrup. Meme s'il y a
des progres par rapport au precedent, il reste "la patte" du Stroustrup:
c'est souvent tres touffu sur des details techniques assez vite qui peuvent
noyer le debutant ou le decourager.

Par exemple, je suis pas sur qu'attaquer sur un projet de recursive
descent parser, ca soit la meilleure facon d'aborder un langage
de programmation (je suis meme a peu pres sur que c'est l'une des pires,
vu qu'on va melanger les difficultes de theorie des langages avec
l'apprentissage du langage).
Wykaaa
Le #24206811
Marc Espie a écrit :
In article


[couic]

Aride ? PPP ? Alors là je suis sidéré, c'est au contraire à mes yeux un
ouvrage très pédagogique et séduisant (issu de plusieurs années
d'enseignement à des débutants à l'université), qui a le grand mérite
d'enraciner des principes méthodologiques essentiels, trop souvent omis
dans l'enseignement en France, dans des exemples tout à fait concrets et
détaillés, ce qui me semble exactement ce que l'on doit faire... La
'pureté' n'est sûrement pas l'objectif à mon avis ! Ce qui caractérise
ce livre, c'est au contraire le va-et-vient incessant et fructueux entre
principes généraux et programmation la plus concrète.

Par moments, je me demande si vous ne confondez pas ce livre avec le
précédent 'Le langage C++' qui pour le coup, était quelque peu aride et
touffu et peu pédagogique. Mais PPP (rédigé avec un collège pédagogue
décédé entre temps) ce n'est pas du tout, du tout cela...



Non, non, j'ai bien vu le nouveau bouquin du Stroustrup. Meme s'il y a
des progres par rapport au precedent, il reste "la patte" du Stroustrup:
c'est souvent tres touffu sur des details techniques assez vite qui peuvent
noyer le debutant ou le decourager.

Par exemple, je suis pas sur qu'attaquer sur un projet de recursive
descent parser, ca soit la meilleure facon d'aborder un langage
de programmation (je suis meme a peu pres sur que c'est l'une des pires,
vu qu'on va melanger les difficultes de theorie des langages avec
l'apprentissage du langage).



Je suis entièrement d'accord avec toi Marc, Stroustrup n'est jamais
passé pour un grand pédagogue.
D'ailleurs, au niveau pédagogie, le K&R pour le langage C, c'est du même
tonneau. Ce n'est pas le premier bouquin qu'il faut lire pour apprendre
le C car les exemples montrent, en gros, tout ce qu'il ne faut pas
écrire pour produire du logiciel de qualité.
espie
Le #24206941
In article Wykaaa
Je suis entièrement d'accord avec toi Marc, Stroustrup n'est jamais
passé pour un grand pédagogue.
D'ailleurs, au niveau pédagogie, le K&R pour le langage C, c'est du même
tonneau. Ce n'est pas le premier bouquin qu'il faut lire pour apprendre
le C car les exemples montrent, en gros, tout ce qu'il ne faut pas
écrire pour produire du logiciel de qualité.



Un jour, j'essaierai de trouver du temps pour rassembler ce que je raconte
a mes etudiants et en faire au moins un bout de bouquin...

Les trucs comme ce qu'on a raconte dans fr.comp.lang.c sur les types
opaques, par exemple, ca fait partie des trucs que je mets explicitement
dans mes cours des qu'on a vu les structures... Ca fait partie des trucs
"de base" en programmation C pour moi (comme l'utilisation des tableaux
plus realloc pour faire des "growable array" a la std::vector... le genre
de truc qui est bien plus souvent utilise en pratique que les listes
chainees, en fait...)
Wykaaa
Le #24207961
Marc Espie a écrit :
In article Wykaaa
Je suis entièrement d'accord avec toi Marc, Stroustrup n'est jamais
passé pour un grand pédagogue.
D'ailleurs, au niveau pédagogie, le K&R pour le langage C, c'est du même
tonneau. Ce n'est pas le premier bouquin qu'il faut lire pour apprendre
le C car les exemples montrent, en gros, tout ce qu'il ne faut pas
écrire pour produire du logiciel de qualité.



Un jour, j'essaierai de trouver du temps pour rassembler ce que je raconte
a mes etudiants et en faire au moins un bout de bouquin...

Les trucs comme ce qu'on a raconte dans fr.comp.lang.c sur les types
opaques, par exemple, ca fait partie des trucs que je mets explicitement
dans mes cours des qu'on a vu les structures... Ca fait partie des trucs
"de base" en programmation C pour moi (comme l'utilisation des tableaux
plus realloc pour faire des "growable array" a la std::vector... le genre
de truc qui est bien plus souvent utilise en pratique que les listes
chainees, en fait...)



Moi, j'utilisais les "virtual memory files" sur les DPS7 (Bull). Ce que
je faisais ressemblait à ça :
http://developers.sun.com/solaris/articles/virtual_memory_arrays.html
mais adapté au système hôte.
espie
Le #24208031
In article Wykaaa
Marc Espie a écrit :
Les trucs comme ce qu'on a raconte dans fr.comp.lang.c sur les types
opaques, par exemple, ca fait partie des trucs que je mets explicitement
dans mes cours des qu'on a vu les structures... Ca fait partie des trucs
"de base" en programmation C pour moi (comme l'utilisation des tableaux
plus realloc pour faire des "growable array" a la std::vector... le genre
de truc qui est bien plus souvent utilise en pratique que les listes
chainees, en fait...)



Moi, j'utilisais les "virtual memory files" sur les DPS7 (Bull). Ce que
je faisais ressemblait à ça :
http://developers.sun.com/solaris/articles/virtual_memory_arrays.html
mais adapté au système hôte.



J'ai lu un peu en diagonale, mais c'est pas ce genre de truc qui conduit
a de l'overcommit ?..

Pour ce qui est des growable array classiques, j'ai deja retroffite ce genre
de trucmuche sur le m4 BSD, avec toute la joie qu'on peut imaginer, vu qu'il
y a des pointeurs a deplacer... c'est pas super-simple, mais ca marche, et
c'etait plus court que tout reecrire...

Apres, pour moi, un des interets pedagogiques des growable arrays, c'est qu'on
peut en profiter pour parler de bande passante memoire et de notion de
localite d'acces (sans compter les optimisations habituelles des proc. pour
les acces sequentiels), toutes ces petites choses que nos chers etudiants
n'ont generalement pas vu, surtout quand ils ont passe 3 ans a faire de
l'algo "classique" et s'imaginent que le O(1) des listes chainees ne coute
pas si cher que ca par rapport a des tableaux classiques...
Poster une réponse
Anonyme