Voilà, il y a encore 1 mois, j'étais sous Windoz XP et je "bidouillais"
en VisualBasic 6.0
Depuis je suis passé sous Linux Suse 9.1 et je souhaiterais continuer à
"bidouiller", je ne cherche pas à développer des applications énormes,
mais juste des petits trucs pour m'amuser.
J'ai vu que sous Linux, le C++ avait l'air très répendu, j'ai donc
installé KDevelop qui permet de programmer en C++.
Et voilà, j'en suis à ce stade, j'ai acheté un bouquin sur le C++, j'en
suis à la page 10 ! et je me dis que ça a l'air un peu compliqué ...
Pouvez vous me conseiller ? est ce que le C++ est un bon choix pour moi
qui n'y connait rien ?
Merci pour votre aide.
A Bientot
--
Mail envoyé depuis Thunderbird
Sous Linux Suse 9.1 Pro
"Jean-Marc Bourguet" a écrit dans le message news:
J'ai pas commencé les maths par Bourbaki non plus. J'ai jamais lu Bourbaki ni même eu un cours à ce niveau de construction à partir des bases.
Oui mais les tableaux de char ne sont pas implémentés avec std:string, il me semble bien que c'est juste l'inverse ;-)
La pédagogie de TC++PL 1ère et 2ième édition est en effet bien reconnue... pour être déficiente. Je connais quelqu'un qui a appris le C++ dans la 1ère édition qui l'a brulée parce qu'il ne pouvait plus la voir.
Il reste quand même tous les autres, ce qui fait beaucoup de monde si l'on exclut les culottes courtes.
Je ne crois pas qu'on rende service à un débutant en le lancant à l'eau dans un marais infesté de crocodiles.
Mais ça c'est vraiment un peu méprisant d'enfermer son auditoire dans une étiquette de débutant. Enseigner à utiliser sans savoir ce qu'on utilise, c'est évidemment rassurant pour le prof qui est sûr d'avoir en face de lui d'éternels débutants. J'ai l'impression que vous essayez de refaire aujourd'hui, en informatique, le coup du taylorisme.
Ca tiens du procès d'intention.
Aucune méchanceté de ma part, au sens où j'aurais sous-entendu une volonté délibérée, etc. Mais on peut participer à une tendance très forte aujourd'hui, sous la pression des évènements. Et, pourquoi pas, avec les meilleurs intentions du monde ; quel prof ne serait pas rongé à la longue par la constatation que ses élèves sont au chômage ? Et c'est vrai qu'on écrit plus vite et plus sûrement avec std:string. Le seul problème, c'est que celui qui a inventé std:string a reçu une formation tellement "mauvaise" qu'elle lui a inculqué l' "insight" pour pouvoir l'inventer. Evidemment cette formation ignorait std:string :-) C'est là où, sans intention méchante, je dis que le but de l'enseignement n'est pas forcément la production immédiate. A savoir, il peut y avoir autant d'enseigements que de buts qu'on lui assigne. J'espère que ce n'est pas une question taboue, tout de même.
--
Français *==> "Musique renaissance" <==* English midi - facsimiles - ligatures - mensuration http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/ Alain Naigeon - - Strasbourg, France
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit dans le message news:
ld6bfc.481.ln@news.bourguet.org...
J'ai pas commencé les maths par Bourbaki non plus. J'ai
jamais lu Bourbaki ni même eu un cours à ce niveau de
construction à partir des bases.
Oui mais les tableaux de char ne sont pas implémentés
avec std:string, il me semble bien que c'est juste l'inverse ;-)
La pédagogie de TC++PL 1ère et 2ième édition est en effet
bien reconnue... pour être déficiente. Je connais
quelqu'un qui a appris le C++ dans la 1ère édition qui l'a
brulée parce qu'il ne pouvait plus la voir.
Il reste quand même tous les autres, ce qui fait beaucoup de
monde si l'on exclut les culottes courtes.
Je ne crois pas qu'on rende service à un débutant en le
lancant à l'eau dans un marais infesté de crocodiles.
Mais ça c'est vraiment un peu méprisant d'enfermer son
auditoire dans une étiquette de débutant. Enseigner à
utiliser sans savoir ce qu'on utilise, c'est évidemment
rassurant pour le prof qui est sûr d'avoir en face de lui
d'éternels débutants. J'ai l'impression que vous essayez
de refaire aujourd'hui, en informatique, le coup du
taylorisme.
Ca tiens du procès d'intention.
Aucune méchanceté de ma part, au sens où j'aurais
sous-entendu une volonté délibérée, etc. Mais on peut
participer à une tendance très forte aujourd'hui, sous
la pression des évènements. Et, pourquoi pas, avec les
meilleurs intentions du monde ; quel prof ne serait pas
rongé à la longue par la constatation que ses élèves
sont au chômage ? Et c'est vrai qu'on écrit plus vite
et plus sûrement avec std:string. Le seul problème,
c'est que celui qui a inventé std:string a reçu une formation
tellement "mauvaise" qu'elle lui a inculqué l' "insight" pour
pouvoir l'inventer. Evidemment cette formation ignorait
std:string :-)
C'est là où, sans intention méchante, je dis que le but de
l'enseignement n'est pas forcément la production immédiate.
A savoir, il peut y avoir autant d'enseigements que de buts
qu'on lui assigne. J'espère que ce n'est pas une question
taboue, tout de même.
--
Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - anaigeon@free.fr - Strasbourg, France
"Jean-Marc Bourguet" a écrit dans le message news:
J'ai pas commencé les maths par Bourbaki non plus. J'ai jamais lu Bourbaki ni même eu un cours à ce niveau de construction à partir des bases.
Oui mais les tableaux de char ne sont pas implémentés avec std:string, il me semble bien que c'est juste l'inverse ;-)
La pédagogie de TC++PL 1ère et 2ième édition est en effet bien reconnue... pour être déficiente. Je connais quelqu'un qui a appris le C++ dans la 1ère édition qui l'a brulée parce qu'il ne pouvait plus la voir.
Il reste quand même tous les autres, ce qui fait beaucoup de monde si l'on exclut les culottes courtes.
Je ne crois pas qu'on rende service à un débutant en le lancant à l'eau dans un marais infesté de crocodiles.
Mais ça c'est vraiment un peu méprisant d'enfermer son auditoire dans une étiquette de débutant. Enseigner à utiliser sans savoir ce qu'on utilise, c'est évidemment rassurant pour le prof qui est sûr d'avoir en face de lui d'éternels débutants. J'ai l'impression que vous essayez de refaire aujourd'hui, en informatique, le coup du taylorisme.
Ca tiens du procès d'intention.
Aucune méchanceté de ma part, au sens où j'aurais sous-entendu une volonté délibérée, etc. Mais on peut participer à une tendance très forte aujourd'hui, sous la pression des évènements. Et, pourquoi pas, avec les meilleurs intentions du monde ; quel prof ne serait pas rongé à la longue par la constatation que ses élèves sont au chômage ? Et c'est vrai qu'on écrit plus vite et plus sûrement avec std:string. Le seul problème, c'est que celui qui a inventé std:string a reçu une formation tellement "mauvaise" qu'elle lui a inculqué l' "insight" pour pouvoir l'inventer. Evidemment cette formation ignorait std:string :-) C'est là où, sans intention méchante, je dis que le but de l'enseignement n'est pas forcément la production immédiate. A savoir, il peut y avoir autant d'enseigements que de buts qu'on lui assigne. J'espère que ce n'est pas une question taboue, tout de même.
--
Français *==> "Musique renaissance" <==* English midi - facsimiles - ligatures - mensuration http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/ Alain Naigeon - - Strasbourg, France
Alain Naigeon
"Jean-Marc Bourguet" a écrit dans le message news:
ce qui interdit de qualifier de "merde" une autre façon de faire.
Est-ce que je l'ai fait?
Ce n'était pas toi, mes excuses ! Il y a, en gros, deux thèses, et je répondais (un peu vite) à un défenseur de la thèse opposée à la mienne - dans un NG public, ça peut se concevoir, de toute façon, dans le contexte, ce mot "merde" n'avait pas valeur d'injure.
--
Français *==> "Musique renaissance" <==* English midi - facsimiles - ligatures - mensuration http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/ Alain Naigeon - - Strasbourg, France
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit dans le message news:
h17bfc.481.ln@news.bourguet.org...
ce qui interdit de qualifier de "merde" une autre façon de
faire.
Est-ce que je l'ai fait?
Ce n'était pas toi, mes excuses ! Il y a, en gros, deux thèses,
et je répondais (un peu vite) à un défenseur de la thèse
opposée à la mienne - dans un NG public, ça peut se concevoir,
de toute façon, dans le contexte, ce mot "merde" n'avait pas
valeur d'injure.
--
Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - anaigeon@free.fr - Strasbourg, France
"Jean-Marc Bourguet" a écrit dans le message news:
ce qui interdit de qualifier de "merde" une autre façon de faire.
Est-ce que je l'ai fait?
Ce n'était pas toi, mes excuses ! Il y a, en gros, deux thèses, et je répondais (un peu vite) à un défenseur de la thèse opposée à la mienne - dans un NG public, ça peut se concevoir, de toute façon, dans le contexte, ce mot "merde" n'avait pas valeur d'injure.
--
Français *==> "Musique renaissance" <==* English midi - facsimiles - ligatures - mensuration http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/ Alain Naigeon - - Strasbourg, France
Alexandre Bacquart
Fabien LE LEZ wrote:
A condition de vouloir rester débutant. J'ai des doutes sur la formation qu'apporte l'apprentissage du Basic.
Il a le mérite d'être facile à apprendre pour les autoditactes. Il apporte les bases de la programmation, de la manière la plus simple possible. Introduction de concepts dont peu de langages peuvent se passer : les variables, les structures de contrôle, les fonctions... c'est déjà tout un monde à découvrir pour beaucoup de gens. En C++, ce monde là se perd au beau milieu d'une puissance qui les dépasse souvent et d'outils spécifiques à dompter.
On commence par son radio-réveil, puis le magnétoscope... peut-être les tableurs... BASIC ou autres langages faciles d'accès... puis pourquoi pas C++. Je pense qu'il faut être exceptionnellement motivé et courageux pour apprendre seul C++ sans aucune notion de programmation (et moi aussi je suis autodidacte). Mais peut-être y a-t-il d'autres autoditactes ici qui sont passés directement à C++, dans ce cas j'espèrent qu'ils ne manqueront pas de nous faire part de leur expérience (et des livres avec lesquelles ils ont abordé la chose).
-- Tek
Fabien LE LEZ wrote:
A condition de vouloir rester débutant. J'ai des doutes sur la
formation qu'apporte l'apprentissage du Basic.
Il a le mérite d'être facile à apprendre pour les autoditactes. Il
apporte les bases de la programmation, de la manière la plus simple
possible. Introduction de concepts dont peu de langages peuvent se
passer : les variables, les structures de contrôle, les fonctions...
c'est déjà tout un monde à découvrir pour beaucoup de gens. En C++, ce
monde là se perd au beau milieu d'une puissance qui les dépasse souvent
et d'outils spécifiques à dompter.
On commence par son radio-réveil, puis le magnétoscope... peut-être les
tableurs... BASIC ou autres langages faciles d'accès... puis pourquoi
pas C++. Je pense qu'il faut être exceptionnellement motivé et courageux
pour apprendre seul C++ sans aucune notion de programmation (et moi
aussi je suis autodidacte). Mais peut-être y a-t-il d'autres
autoditactes ici qui sont passés directement à C++, dans ce cas
j'espèrent qu'ils ne manqueront pas de nous faire part de leur
expérience (et des livres avec lesquelles ils ont abordé la chose).
A condition de vouloir rester débutant. J'ai des doutes sur la formation qu'apporte l'apprentissage du Basic.
Il a le mérite d'être facile à apprendre pour les autoditactes. Il apporte les bases de la programmation, de la manière la plus simple possible. Introduction de concepts dont peu de langages peuvent se passer : les variables, les structures de contrôle, les fonctions... c'est déjà tout un monde à découvrir pour beaucoup de gens. En C++, ce monde là se perd au beau milieu d'une puissance qui les dépasse souvent et d'outils spécifiques à dompter.
On commence par son radio-réveil, puis le magnétoscope... peut-être les tableurs... BASIC ou autres langages faciles d'accès... puis pourquoi pas C++. Je pense qu'il faut être exceptionnellement motivé et courageux pour apprendre seul C++ sans aucune notion de programmation (et moi aussi je suis autodidacte). Mais peut-être y a-t-il d'autres autoditactes ici qui sont passés directement à C++, dans ce cas j'espèrent qu'ils ne manqueront pas de nous faire part de leur expérience (et des livres avec lesquelles ils ont abordé la chose).
-- Tek
Mario
Wow! Vive la francophonie! Quel discussion, que de mots.
J'espère que Fuxy en a assez pour réfléchir pendant ses heures creuses... Surtout, choisi un livre en anglais, c'est plus court :-)
Bonne nuit.
-- Mario
"Fuxy" a écrit dans le message de news:cf60rq$n9$
Bonsoir à tous,
Voilà, il y a encore 1 mois, j'étais sous Windoz XP et je "bidouillais" en VisualBasic 6.0
Depuis je suis passé sous Linux Suse 9.1 et je souhaiterais continuer à "bidouiller", je ne cherche pas à développer des applications énormes, mais juste des petits trucs pour m'amuser.
J'ai vu que sous Linux, le C++ avait l'air très répendu, j'ai donc installé KDevelop qui permet de programmer en C++.
Et voilà, j'en suis à ce stade, j'ai acheté un bouquin sur le C++, j'en suis à la page 10 ! et je me dis que ça a l'air un peu compliqué ...
Pouvez vous me conseiller ? est ce que le C++ est un bon choix pour moi qui n'y connait rien ?
Merci pour votre aide.
A Bientot
-- Mail envoyé depuis Thunderbird Sous Linux Suse 9.1 Pro
Wow! Vive la francophonie! Quel discussion, que de mots.
J'espère que Fuxy en a assez pour réfléchir pendant ses heures creuses...
Surtout, choisi un livre en anglais, c'est plus court :-)
Bonne nuit.
--
Mario
"Fuxy" <seuxf@wanadoo.fr> a écrit dans le message de
news:cf60rq$n9$1@news-reader5.wanadoo.fr...
Bonsoir à tous,
Voilà, il y a encore 1 mois, j'étais sous Windoz XP et je "bidouillais"
en VisualBasic 6.0
Depuis je suis passé sous Linux Suse 9.1 et je souhaiterais continuer à
"bidouiller", je ne cherche pas à développer des applications énormes,
mais juste des petits trucs pour m'amuser.
J'ai vu que sous Linux, le C++ avait l'air très répendu, j'ai donc
installé KDevelop qui permet de programmer en C++.
Et voilà, j'en suis à ce stade, j'ai acheté un bouquin sur le C++, j'en
suis à la page 10 ! et je me dis que ça a l'air un peu compliqué ...
Pouvez vous me conseiller ? est ce que le C++ est un bon choix pour moi
qui n'y connait rien ?
Merci pour votre aide.
A Bientot
--
Mail envoyé depuis Thunderbird
Sous Linux Suse 9.1 Pro
Wow! Vive la francophonie! Quel discussion, que de mots.
J'espère que Fuxy en a assez pour réfléchir pendant ses heures creuses... Surtout, choisi un livre en anglais, c'est plus court :-)
Bonne nuit.
-- Mario
"Fuxy" a écrit dans le message de news:cf60rq$n9$
Bonsoir à tous,
Voilà, il y a encore 1 mois, j'étais sous Windoz XP et je "bidouillais" en VisualBasic 6.0
Depuis je suis passé sous Linux Suse 9.1 et je souhaiterais continuer à "bidouiller", je ne cherche pas à développer des applications énormes, mais juste des petits trucs pour m'amuser.
J'ai vu que sous Linux, le C++ avait l'air très répendu, j'ai donc installé KDevelop qui permet de programmer en C++.
Et voilà, j'en suis à ce stade, j'ai acheté un bouquin sur le C++, j'en suis à la page 10 ! et je me dis que ça a l'air un peu compliqué ...
Pouvez vous me conseiller ? est ce que le C++ est un bon choix pour moi qui n'y connait rien ?
Merci pour votre aide.
A Bientot
-- Mail envoyé depuis Thunderbird Sous Linux Suse 9.1 Pro
Luc Hermitte
"M. B." wrote in news:cf9tpa$s4s$:
Pour ma part j'ai toujours suivi la demarche de Stroustrup dans l'enseignement du C++.
Tu veux parler de : http://www.research.att.com/~bs/bs_faq.html#prerequisite ? (pdf très intéressant)
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
"M. B." <m_binder@magicnet.com> wrote in
news:cf9tpa$s4s$1@news-reader1.wanadoo.fr:
Pour ma part j'ai toujours suivi la demarche de Stroustrup dans
l'enseignement du C++.
Tu veux parler de :
http://www.research.att.com/~bs/bs_faq.html#prerequisite
? (pdf très intéressant)
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
Pour ma part j'ai toujours suivi la demarche de Stroustrup dans l'enseignement du C++.
Tu veux parler de : http://www.research.att.com/~bs/bs_faq.html#prerequisite ? (pdf très intéressant)
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Luc Hermitte
drkm wrote in news::
Moi je distingue deux choses : - Apprendre le C++ avec les concept de la POO - Apprendre l'utilisation d'une bibliothèque : MFC, VCL, STL, ...
Tu enseignerais donc, si je comprend bien, l'allocation dynamique, l'utilisation des pointeurs, la conception de modèles de classes, etc., et pas l'utilisation de std::vector<> ? Dans un cours destiné aux débutants ?
J'irais même plus loin. Débutant ou pas, il y a un ordre logique. En Ada, langage fort pédagogique, on ne va apprendre à faire des allocations dynamiques avant de manipuler des chaines et des tableaux. On utilise les abstractions que le langage nous fournit en standard.
Continuer à vouloir montrer les "char*" _avant_ un type chaine quelconque [1], dans un cours qui _présente_ le langage n'a aucun intérêt. En ce qui me concerne, les raisons historiques ne suffisent pas à justifier un tel _ordre_ de présentation.
Car au fond, ce qui me gêne avec ces anciennes approches, c'est l'ordre. Le comment on met en oeuvre les chaines ou les vecteurs, cela peut être fort intéressant, mais ne se justifie pas au début d'une formation pour "débutant" en C++. À la fin, avant le polymorphisme (peut-être), OK. Avant, je trouve que c'est trop tôt, et que c'est noyer l'élève dans des détails pas si utiles que ça.
char buf[80]; // ou n'importe quelle allocation dynamique /*std::*/cin >> buf ; ? AMA, c'est complètement assassin (déjà je me demande pourquoi une telle syntaxe est acceptée par les compilateurs (la norme, je sais) alors que le typage fort du C++ nous permet de détecter ce genre de constructions).
Les abstractions possibles (standard ou propriétaires) permettent d'avoir un code aussi simple, et sans buffer-overflow-et-son-petit-frère- l'injection-de-code. (dans l'approche dynamique, c'est encore pire car cela revient à leur donner un code qui un jour les trahira à cause d'un new qui foirera) Pourquoi vouloir leur apprendre ça au début ? Alors que l'on sait très bien que l'on ne leur montrera jamais le bon code par manque de temps ? Et qu'au mieux on aura une note de bas de page ou un commentaire oral.
Quel est le problème avec leur donner le nom du type chaine ? Dans les langages où un mot clé est réservé à cet usage, on ne s'embête pas à savoir comment c'est mis en oeuvre pour pouvoir s'en servir. Et les débutants complets (pas seulement dans le langage) arrivent parfaitement (aussi bien que ce qu'ils comprennent le reste) à s'en servir. Ils apprennent la syntaxe d'utilisation et cela leur suffit dans un premier temps.
[1] Type chaine _quelconque_, car au fond ce n'est pas si important à mon goût. std::string a un avantage certain dans la mesure où il s'agit du type standard que l'on trouvera sur tous les compilos récents. Mais utiliser wxString, CString ou Ansistring est toujours 100 fois que les mêmes exemples/TD/TP traités à l'ancienne.
Quant aux autres choses : pointeurs vs références, vecteurs vs new, ... C'est exactement la même chose. On montrera les pointeurs, on montrera new, mais pas à la 3e ou 4e leçon si ce n'est pas avant. C'est n'importe quoi de le faire au début.
De plus, au départ du troll, il n'a jamais été question de montrer la partie OO avant le reste -- ceci dit, c'est encore un autre débat sur lequel je n'ai pas d'opinion tranchée. OK, avec les chaines et les vecteurs, on introduit des abstractions avant les pointeurs. Ce sont des classes, mais ce sont aussi avant tout des abstractions et c'est ça qui prime. Pas besoin de savoir comment on conçoit une classe pour se servir de son interface publique.
-- Luc Hermitte <hermitte at free.fr>, feeding the troll FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
drkm <usenet.fclcxx@fgeorges.org> wrote in
news:wkoeljta7i.fsf@fgeorges.org:
Moi je distingue deux choses :
- Apprendre le C++ avec les concept de la POO - Apprendre
l'utilisation d'une bibliothèque : MFC, VCL, STL, ...
Tu enseignerais donc, si je comprend bien, l'allocation dynamique,
l'utilisation des pointeurs, la conception de modèles de classes,
etc., et pas l'utilisation de std::vector<> ? Dans un cours destiné
aux débutants ?
J'irais même plus loin.
Débutant ou pas, il y a un ordre logique. En Ada, langage fort pédagogique,
on ne va apprendre à faire des allocations dynamiques avant de manipuler
des chaines et des tableaux. On utilise les abstractions que le langage
nous fournit en standard.
Continuer à vouloir montrer les "char*" _avant_ un type chaine quelconque
[1], dans un cours qui _présente_ le langage n'a aucun intérêt. En ce qui
me concerne, les raisons historiques ne suffisent pas à justifier un tel
_ordre_ de présentation.
Car au fond, ce qui me gêne avec ces anciennes approches, c'est l'ordre. Le
comment on met en oeuvre les chaines ou les vecteurs, cela peut être fort
intéressant, mais ne se justifie pas au début d'une formation pour
"débutant" en C++. À la fin, avant le polymorphisme (peut-être), OK. Avant,
je trouve que c'est trop tôt, et que c'est noyer l'élève dans des détails
pas si utiles que ça.
char buf[80]; // ou n'importe quelle allocation dynamique
/*std::*/cin >> buf ;
?
AMA, c'est complètement assassin (déjà je me demande pourquoi une telle
syntaxe est acceptée par les compilateurs (la norme, je sais) alors que le
typage fort du C++ nous permet de détecter ce genre de constructions).
Les abstractions possibles (standard ou propriétaires) permettent d'avoir
un code aussi simple, et sans buffer-overflow-et-son-petit-frère-
l'injection-de-code. (dans l'approche dynamique, c'est encore pire car cela
revient à leur donner un code qui un jour les trahira à cause d'un new qui
foirera)
Pourquoi vouloir leur apprendre ça au début ? Alors que l'on sait très bien
que l'on ne leur montrera jamais le bon code par manque de temps ? Et qu'au
mieux on aura une note de bas de page ou un commentaire oral.
Quel est le problème avec leur donner le nom du type chaine ? Dans les
langages où un mot clé est réservé à cet usage, on ne s'embête pas à savoir
comment c'est mis en oeuvre pour pouvoir s'en servir. Et les débutants
complets (pas seulement dans le langage) arrivent parfaitement (aussi bien
que ce qu'ils comprennent le reste) à s'en servir. Ils apprennent la
syntaxe d'utilisation et cela leur suffit dans un premier temps.
[1] Type chaine _quelconque_, car au fond ce n'est pas si important à mon
goût. std::string a un avantage certain dans la mesure où il s'agit du type
standard que l'on trouvera sur tous les compilos récents. Mais utiliser
wxString, CString ou Ansistring est toujours 100 fois que les mêmes
exemples/TD/TP traités à l'ancienne.
Quant aux autres choses : pointeurs vs références, vecteurs vs new, ...
C'est exactement la même chose. On montrera les pointeurs, on montrera new,
mais pas à la 3e ou 4e leçon si ce n'est pas avant. C'est n'importe quoi de
le faire au début.
De plus, au départ du troll, il n'a jamais été question de montrer la
partie OO avant le reste -- ceci dit, c'est encore un autre débat sur
lequel je n'ai pas d'opinion tranchée. OK, avec les chaines et les
vecteurs, on introduit des abstractions avant les pointeurs. Ce sont des
classes, mais ce sont aussi avant tout des abstractions et c'est ça qui
prime. Pas besoin de savoir comment on conçoit une classe pour se servir de
son interface publique.
--
Luc Hermitte <hermitte at free.fr>, feeding the troll
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
Moi je distingue deux choses : - Apprendre le C++ avec les concept de la POO - Apprendre l'utilisation d'une bibliothèque : MFC, VCL, STL, ...
Tu enseignerais donc, si je comprend bien, l'allocation dynamique, l'utilisation des pointeurs, la conception de modèles de classes, etc., et pas l'utilisation de std::vector<> ? Dans un cours destiné aux débutants ?
J'irais même plus loin. Débutant ou pas, il y a un ordre logique. En Ada, langage fort pédagogique, on ne va apprendre à faire des allocations dynamiques avant de manipuler des chaines et des tableaux. On utilise les abstractions que le langage nous fournit en standard.
Continuer à vouloir montrer les "char*" _avant_ un type chaine quelconque [1], dans un cours qui _présente_ le langage n'a aucun intérêt. En ce qui me concerne, les raisons historiques ne suffisent pas à justifier un tel _ordre_ de présentation.
Car au fond, ce qui me gêne avec ces anciennes approches, c'est l'ordre. Le comment on met en oeuvre les chaines ou les vecteurs, cela peut être fort intéressant, mais ne se justifie pas au début d'une formation pour "débutant" en C++. À la fin, avant le polymorphisme (peut-être), OK. Avant, je trouve que c'est trop tôt, et que c'est noyer l'élève dans des détails pas si utiles que ça.
char buf[80]; // ou n'importe quelle allocation dynamique /*std::*/cin >> buf ; ? AMA, c'est complètement assassin (déjà je me demande pourquoi une telle syntaxe est acceptée par les compilateurs (la norme, je sais) alors que le typage fort du C++ nous permet de détecter ce genre de constructions).
Les abstractions possibles (standard ou propriétaires) permettent d'avoir un code aussi simple, et sans buffer-overflow-et-son-petit-frère- l'injection-de-code. (dans l'approche dynamique, c'est encore pire car cela revient à leur donner un code qui un jour les trahira à cause d'un new qui foirera) Pourquoi vouloir leur apprendre ça au début ? Alors que l'on sait très bien que l'on ne leur montrera jamais le bon code par manque de temps ? Et qu'au mieux on aura une note de bas de page ou un commentaire oral.
Quel est le problème avec leur donner le nom du type chaine ? Dans les langages où un mot clé est réservé à cet usage, on ne s'embête pas à savoir comment c'est mis en oeuvre pour pouvoir s'en servir. Et les débutants complets (pas seulement dans le langage) arrivent parfaitement (aussi bien que ce qu'ils comprennent le reste) à s'en servir. Ils apprennent la syntaxe d'utilisation et cela leur suffit dans un premier temps.
[1] Type chaine _quelconque_, car au fond ce n'est pas si important à mon goût. std::string a un avantage certain dans la mesure où il s'agit du type standard que l'on trouvera sur tous les compilos récents. Mais utiliser wxString, CString ou Ansistring est toujours 100 fois que les mêmes exemples/TD/TP traités à l'ancienne.
Quant aux autres choses : pointeurs vs références, vecteurs vs new, ... C'est exactement la même chose. On montrera les pointeurs, on montrera new, mais pas à la 3e ou 4e leçon si ce n'est pas avant. C'est n'importe quoi de le faire au début.
De plus, au départ du troll, il n'a jamais été question de montrer la partie OO avant le reste -- ceci dit, c'est encore un autre débat sur lequel je n'ai pas d'opinion tranchée. OK, avec les chaines et les vecteurs, on introduit des abstractions avant les pointeurs. Ce sont des classes, mais ce sont aussi avant tout des abstractions et c'est ça qui prime. Pas besoin de savoir comment on conçoit une classe pour se servir de son interface publique.
-- Luc Hermitte <hermitte at free.fr>, feeding the troll FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Fabien LE LEZ
On Tue, 10 Aug 2004 21:15:37 +0200, Loïc Joly :
Je ne trouve pas l'apprentissage de C++ "amusant", cela demande beaucoup de sérieux (une fois ce stade franchi, tu peux t'amuser si ça te chante).
C'est aussi amusant que de résoudre un bon problème de math. ;)
Je suis d'accord avec toi (je retrouve le même genre de plaisir en faisant du C++ que j'avais en faisant des maths), mais j'ai peur que cette remarque en fasse fuir certains...
-- ;-)
On Tue, 10 Aug 2004 21:15:37 +0200, Loïc Joly
<loic.actarus.joly@wanadoo.fr>:
Je ne trouve pas l'apprentissage de C++ "amusant", cela demande beaucoup
de sérieux (une fois ce stade franchi, tu peux t'amuser si ça te
chante).
C'est aussi amusant que de résoudre un bon problème de math. ;)
Je suis d'accord avec toi (je retrouve le même genre de plaisir en
faisant du C++ que j'avais en faisant des maths), mais j'ai peur que
cette remarque en fasse fuir certains...
Je ne trouve pas l'apprentissage de C++ "amusant", cela demande beaucoup de sérieux (une fois ce stade franchi, tu peux t'amuser si ça te chante).
C'est aussi amusant que de résoudre un bon problème de math. ;)
Je suis d'accord avec toi (je retrouve le même genre de plaisir en faisant du C++ que j'avais en faisant des maths), mais j'ai peur que cette remarque en fasse fuir certains...
-- ;-)
Fabien LE LEZ
On Tue, 10 Aug 2004 21:24:06 +0200, Loïc Joly :
et encore, lors d'un déménagement, des gens pourraient y jeter un coup d'oeil.
Un peu de colle sur la tranche, peut-être ?
-- ;-)
On Tue, 10 Aug 2004 21:24:06 +0200, Loïc Joly
<loic.actarus.joly@wanadoo.fr>:
et encore, lors d'un déménagement, des gens pourraient y jeter un coup
d'oeil.