OVH Cloud OVH Cloud

Newbies en C++ !

437 réponses
Avatar
Fuxy
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

7 réponses

Avatar
Michel Michaud
Dans news:, Luc
"Sayajin" wrote in
news:cfjhfi$6cm$:

Bene . . . dans ce cas là pourquoi au lieu de vous fighter
sur des voies lactées de post sur ce ng, vous ne citez pas
la référence francaise en bouquin pour apprendre le C++
(hors Bjarne Stroustrup)


Parce qu'il n'y en a (hélàs) pas ? Je n'ai pas encore lu un
seul livre de C++ en français que je conseillerais sans
remors à un débutant.



Je mitouille avec Fabien. On attend Michel, notre sauveur
quelque part.


Merci pour la confiance, ça pourrait me donner la motivation
pour donner l'effort final (je n'ai qu'un chapitre à complèter,
mais la motivation me manque un peu...). Je rappelle quand
même que mon livre ne sera pas complet sur C++, car il s'agit
bien d'un livre pour apprendre à programmer, plus que pour
apprendre tous les détails de C++.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/




Avatar
Michel Michaud
Dans news:, Gabriel
"Sayajin" writes:
Même celui de Claude Delannoy ne conviens pas ?


Mon avis est que c'est une kholossale erreur.

Et oui, je l'ai lu.


Moi aussi, pas pour apprendre quelque chose, mais pour vérifier
son intérêt. Et je le garde maintenant prisonnier pour ne pas que
d'autres personnes le lisent :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
drkm
writes:

drkm wrote in message
news:...

"Arnaud Debaene" writes:

drkm wrote:

"Arnaud Debaene" writes:


Et je ne parle pas des messages où l'on accuse pour ainsi dire un
prof d'imcompétence d'après ce que peux raconter un de ses élèves
ici, sans avoir la moindre idée de ce à quoi ressemble réellement
son cours (et bien sûr sans qu'il ait une chance de s'expliquer).


J'ai moi-même écrit plusieurs articles de ce genre. Sur mes profs à
moi. Un prof de C++ qui ne connaissais pas la notion de namespace, et
n'avait même jamais rencontré « std:: ». Ou un prof de C enseignant
l'égalité stricte entre pointeur et tableau C.


Attention. Il y a une différence de taille entre les deux cas. Un prof
de C++ qui ne connaît pas namespace n'est pas à jour, c'est tout.


C'est tout ?

J'ai trainé à la fin du cours. Il n'y avait plus que moi, et un
autre étudiant, sur lequel étaient penchés les deux profs du cours.
Ils ne comprenaient pas pourquoi le bout de code qu'il leur présentait
ne compilait pas. Après avoir jeté un coup d'oeil, je fais remarquer
qu'il a oublié les namespaces. J'avais en face de moi trois visage
interdits. Je développe un peu. Finalement, l'un des visages (celui
d'un des profs, quand même) s'illumine : « Ah, oui, je vois, "using
namespace std ;", il faut mettre ça maintenant avec GCC 3, c'est
ch***t ». En 2003 !

Je suis plutôt d'accord avec ta remarque. Mais quand même, ils
n'étaient pas capables d'aider un étudiant se débatant avec son
compilo. Pour un problème si simple. Pour que l'un d'eux s'écrie
finalement qu'il en a vaguement entendu parler, et que c'est ch***t.
Je trouve tout de même cela plus que regrettable.

Mais ta remarque est d'autant plus pertinante que je ne considère
effectivement pas ces deux profs de C++ comme incompétents, au
contraire de celui de C. Ce que laissait pourtant entendre ma réponse
à Arnaud (qui disait « où l'on accuse pour ainsi dire un prof
d'imcompétence »).

C'est
loins d'être idéal, mais s'il enseigne bien le C++ d'il y a dix ans,
c'est toujours un bon enseignement -- AMHA, il vaut mieux un bon
enseignement du C++ d'il y a dix ans qu'un mauvais enseignement du C++
actuel. Quelqu'un qui apprend le C++ avec un ancien compilateur, et qui
n'apprend pas les namespace, apprend quand même du C++.


Je suis à peu près d'accord. Bien que j'estime qu'un prof de C++, à
l'heure actuelle, se doit de tester les bouts de code qu'il donne avec
quelques compilos (récents et moins récents). Ne serait-ce que pour
pouvoir répondre à des élèves utilisant l'un ou l'autre.

Tandis qu'il n'y a jamais eu un instant où des pointeurs et des tableaux
étaient équivalent en C, et quelqu'un qui apprend le C sans en apprendre
la différence serait incapable d'écrire un programme en C.

C'est pareil en ce qui concerne les livres. Ni Coplien, ni Barton et
Nackman ne mentionne namespace ; Gamma, Helme, Johnson et Vlissides ne
les utilisent pas non plus dans leurs exemples. N'empêche que ce sont
des livres que je conseille fortement. Je dirais même qu'une
connaissance du dernier est souvent un critère d'embauche dans pas mal
de boîtes. Et pour un débuttant, le livre de Robert Martin me paraît
toujours très intéressant, même s'il se sert de ses propres classes pour
des tableaux (et des nuages plutôt que des rectangles dans la
conception). (Il est intéressant, à mon avis, parce que je ne connais
pas de livre plus récent qui prend la même approche -- que
l'apprentissage de la programmation en C++ est plus qu'une apprentissage
des structures syntactiques et la sémantique du langage, et que pour
savoir programmer, il faut aussi savoir un peu de conception.)


Il va sans dire que je ne qualifierait pas le GoF de mauvais sur ce
critère.

Je pense que cela rejoint ce que l'on disait à propos du critère de
sélection de livre que Fabien à donné (et dont les réponses ont
alimenté une bonne partie de ce fil). On peut donner à un débutant un
critère qui élimine une bonne part de mauvais livres, même si certains
bons livres remplissent le critère. Il aura plus de chances de tomber
sur d'autres bons livres. Et d'acquérir l'expérience pour choisir
lui-même ses livres, plus tard. Du moment qu'on lui dise que le
critère n'est pas absolu, mais qu'il a l'avantage de virer pas mal de
m***e.

Il y a tout de même des critères objectifs permettant de juger de la
compétence d'un prof.


Il y a un critère objectif absolu : est-ce que ses élèves connaissent
bien la matière quand ils sortent du cours.


Il faudra que tu leur dises qu'ils se trompent. C'est en effet nous
qu'ils jugent sur ce critère :-)

Si c'est un cour sur les
dernières subtilités du C++, c'est une chose. Si c'est un cour sur
comment écrire des programmes qui marche en C++, c'est une autre.

À l'extrème, si c'est un cours pour former des programmeurs (non
ingenieurs en informatique) à VC++, pourquoi pas « void main » ?


Le problème est que l'on voit souvent cela dans des cours dont
l'intitulé est « Cours de C++ », ou approchant ; du moins dont sont
absents les termes « VC », « VC++ » et « Visual C++ ».

Et il y a tout de même des arguments contre. Je ne vois pas
d'intérêt à enseigner « void main() ». J'en vois par contre à
enseigner « int main() ».

Quand ce n'est pas le prof d'un cours que l'on a suivit, il faut
évidemment faire attention à ne pas trop vite généraliser.

Je suis d'accord pour dire que parfois, certains article tranchent
un peu vite sur ces questions. Mais je n'hadère pas à la thèse selon
laquelle on ne peut rien qualifier de négatif, et que si c'est le cas,
alors on est intégriste dans sa manière de voir l'enseignement d'une
matière.


Je n'adhère pas à la thèse qu'on ne peut rien qualifier de négatif non
plus. Le problème, je crains, c'est qu'il y a réelement des profs
mauvais. Et que statistiquement, on trouve la plupart de ceux qui ne se
tiennent pas à jours parmi les mauvais. Du coup, si le fait de ne pas
parler de std::vector ne rend pas forcement un prof mauvais,
statistiquement, la plupart des profs qui n'en parlent pas sont mauvais.


Je le pense également.

Mais ce n'est pas une raison de s'attaquer à un individu. On a peut-être
affaire à une des rares exceptions.


--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html




Avatar
kanze
drkm wrote in message
news:...
writes:

drkm wrote in message
news:...

"Arnaud Debaene" writes:

drkm wrote:

"Arnaud Debaene" writes:


Et je ne parle pas des messages où l'on accuse pour ainsi dire un
prof d'imcompétence d'après ce que peux raconter un de ses élèves
ici, sans avoir la moindre idée de ce à quoi ressemble réellement
son cours (et bien sûr sans qu'il ait une chance de s'expliquer).


J'ai moi-même écrit plusieurs articles de ce genre. Sur mes profs
à moi. Un prof de C++ qui ne connaissais pas la notion de
namespace, et n'avait même jamais rencontré « std:: ». Ou un prof
de C enseignant l'égalité stricte entre pointeur et tableau C.


Attention. Il y a une différence de taille entre les deux cas. Un
prof de C++ qui ne connaît pas namespace n'est pas à jour, c'est
tout.


C'est tout ?


Je préfère compétent mais pas à jour à carrément incompétent.

J'ai trainé à la fin du cours. Il n'y avait plus que moi, et un
autre étudiant, sur lequel étaient penchés les deux profs du cours.
Ils ne comprenaient pas pourquoi le bout de code qu'il leur présentait
ne compilait pas. Après avoir jeté un coup d'oeil, je fais remarquer
qu'il a oublié les namespaces. J'avais en face de moi trois visage
interdits. Je développe un peu. Finalement, l'un des visages (celui
d'un des profs, quand même) s'illumine : « Ah, oui, je vois, "using
namespace std ;", il faut mettre ça maintenant avec GCC 3, c'est
ch***t ». En 2003 !


C'est effectivement un problème.

Si on veut être « compétent » en C++, je suppose qu'il faut toujours
insister sur le point qu'il n'y a pas deux compilateurs identiques, et
que quoiqu'on apprend en cours, il faut savoir s'adapter au compilateur.

Note bien qu'un prof vraiment à jour va expliquer qu'il faut séparer
l'implémentation de l'interface des templates au moyen de « export ». Ce
qui ne se passera pas sans poser de problèmes quand l'élève essaie de
compiler non plus.

Je ne connais pas de véritable solution à cet égard, sinon d'éviter le
C++ dans l'école (qui pose lui bien d'autres problèmes).

Je suis plutôt d'accord avec ta remarque. Mais quand même, ils
n'étaient pas capables d'aider un étudiant se débatant avec son
compilo. Pour un problème si simple. Pour que l'un d'eux s'écrie
finalement qu'il en a vaguement entendu parler, et que c'est ch***t.
Je trouve tout de même cela plus que regrettable.


Je suppose (j'espère) que le prof a quand même compilé les solutions des
exercises lui-même. Il doit donc savoir au moins qu'il s'agit d'une
particularité du compilateur ; qu'avec d'autres compilateurs, ça va.

Ceci dit, avec un compilateur qui se respecte, si j'inclus <iostream.h>,
je dois bien me rétrouver avec cout, et non std::cout. Idéalement, je
dirais que le prof doit être au courant, et qu'il doit insister aussi à
ce que les élèves utilisent un compilateur à jour. Mais pratiquement, il
est plus facile pour un élève d'apprendre les namespaces, par la suite,
s'il en a besoin, que d'apprendre les principes de la programmation,
s'il a eu un cours avec un prof incompétant. Alors, j'insiste : ne pas
être à jour est moins grave qu'être incompétant. Ce n'est pas bien, mais
il faut bien rélativiser.

Mais ta remarque est d'autant plus pertinante que je ne considère
effectivement pas ces deux profs de C++ comme incompétents, au
contraire de celui de C. Ce que laissait pourtant entendre ma réponse
à Arnaud (qui disait « où l'on accuse pour ainsi dire un prof
d'imcompétence »).


Alors, tu as bien compris ce que j'ai essayé de dire.

[...]
Il y a tout de même des critères objectifs permettant de juger de
la compétence d'un prof.


Il y a un critère objectif absolu : est-ce que ses élèves
connaissent bien la matière quand ils sortent du cours.


Il faudra que tu leur dises qu'ils se trompent. C'est en effet nous
qu'ils jugent sur ce critère :-)


Il y a deux choses :
- il faut juger l'élève pour savoir ce qu'il a appris, et
- il faut juger le prof, non sur un élève, mais sur l'ensemble -- si
l'ensemble d'élèves n'ont rien appris, c'est que le prof est
mauvais.

Je serais tempté à dire même qu'il n'y a pas d'excuses. Moi, je suis
payé pour écrire des programmes qui fonctionnent. S'il y a une erreur,
et le programme ne fonctionne pas, c'est ma faute -- il n'y a pas
excuses, j'aurais du tester, ou prévoir le cas, ou quelque chose, mais
je n'ai pas fait mon boulot correctement. Le prof, lui, est payé pour
s'assurer que les élèves apprennent. Donc...

Si c'est un cour sur les
dernières subtilités du C++, c'est une chose. Si c'est un cour sur
comment écrire des programmes qui marche en C++, c'est une autre.

À l'extrème, si c'est un cours pour former des programmeurs (non
ingenieurs en informatique) à VC++, pourquoi pas « void main » ?


Le problème est que l'on voit souvent cela dans des cours dont
l'intitulé est « Cours de C++ », ou approchant ; du moins dont sont
absents les termes « VC », « VC++ » et « Visual C++ ».


Je sais, je sais. Je cherche seulement à rélativiser, et je sais qu'on
voit souvent « void main » dans des contextes où c'est vraiment une
erreur.

Et il y a tout de même des arguments contre. Je ne vois pas
d'intérêt à enseigner « void main() ». J'en vois par contre à
enseigner « int main() ».


Je n'en vois pas l'intérêt, en tant que tel. Je vois des cas où ce n'est
peut-être pas une erreur. Et je suis près à admettre qu'il y a des
choses plus importantes.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34





Avatar
drkm
writes:

Note bien qu'un prof vraiment à jour va expliquer qu'il faut séparer
l'implémentation de l'interface des templates au moyen de « export ».


Un prof vraiment à jour, s'il aborde ce point dans un cours
d'introduction, pourra en signaler l'existence, mais devra alors
mettre en garde contre le peu d'implémentation en fournissant le
support.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Avatar
Gabriel Dos Reis
writes:

[...]

| Note bien qu'un prof vraiment à jour va expliquer qu'il faut séparer
| l'implémentation de l'interface des templates au moyen de « export ». Ce
| qui ne se passera pas sans poser de problèmes quand l'élève essaie de
| compiler non plus.

Tu dois avoir une notion bien singulière de « prof à jour ».

-- Gaby
Avatar
jonathanmcdougall
Bene . . . dans ce cas là pourquoi au lieu de vous fighter sur des voies
lactées de post sur ce ng, vous ne citez pas la référence francaise en
bouquin pour apprendre le C++ (hors Bjarne Stroustrup) ?


Parce qu'il n'y en a (hélàs) pas ? Je n'ai pas encore lu un seul livre
de C++ en français que je conseillerais sans remors à un débutant.

Même celui de Claude Delannoy ne conviens pas ? Pourtant il est cité ici

(http://membres.lycos.fr/preludesoftware/?page=books&lang=cpp) parmis
d'autres livres anglais qui sont vos références :

a.. Programmer en langage C++, 5e édition, Claude Delannoy, Eyrolles,
2001, 613 p.

Le seul livre francophone que je recommande. Très bien écris, c'est
un très bon livre pour débutants qui vous apprend tout ce qu'il y a à
apprendre sur la base et se rend assez loin dans les techniques avancées.
Version originale française, il contient très peu d'erreurs


... je ne me rappelais pas d'avoir écris cela, je ne sais pas ce qui
m'a traversé l'esprit. Ce livre est truffé de void main() et
d'erreurs à la con et, si je me souviens bien, il utilise les
librairies pré-standards. Même en étant pas au niveau du Jamsa, il
n'est certainement pas à recommander.

Je m'excuse si je t'ai fait acheter ce livre, c'est ma faute. Comme
mon site est mort depuis un bon bout de temps et que personne ne m'en
a plus jamais parlé, je n'ai pas fait de changements récemment, mais
là, ce sera fait dans les prochains jours. J'ai probablement écrit
cette description lorsque je commençais en C++, quoique je ne me
souviens plus trop. De toute façon, c'est ma faute.

Je soutiens Loïc concernant les livres francophones et j'irais même
plus loin en disant que peu de resources de tous genres (livres,
internet..) peuvent être considérées comme efficaces, mis à part les
auteurs ayant directement participé au développement du standard
(Stroustrup, Sutter, Meyers, Josuttis...) et quelques autres (dont
seulement Alexandrescu me vient à l'esprit).

www.accu.org reste donc toujours la source pour trouver de bonnes
ressources et la consultation des forums de discussion anglophones et
francophones est fortement recommandée.


Encore désolé pour les fausses informations et je me remet à mon site
dès demain!

Jonathan