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

10 réponses

Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:


On Tue, 10 Aug 2004 15:24:48 +0200, "Alain Naigeon"
:

Ensuite le but ? C'est
faux de croire qu'un amateur veut une connaissance superficielle,
à but productiviste immédiat.


Ah ? Pourtant y'a plein de gens qui programment pour leur plaisir, et
qui préfèrent VB parce que justement on peut faire des zolis
programmes avec plein de boutons partout.

Bon, plutôt que de reprendre le bon vieux parallèle "apprendre le
fonctionnement du moteur avant de conduire"/"apprendre la cuisine
interne de vector<> avant de l'utiliser", je me permets de prendre en
exemple un autre langage : le PHP.
Si tu veux commencer un cours de C++ en expliquant la cuisine interne
de vector<>, il faut suivre la même logique et commencer un cours de
PHP en expliquant la cuisine interne de ses tableaux associatifs.
Cette cuisine interne étant écrite en C, et AMHA un C assez pointu,
une bonne connaissance du C est un prérequis à l'apprentissage de PHP.
Libre à toi de voir les choses comme ça...


Je ne connais pas PHP ; mais j'ai trouvé utiles, je dirais même éclairants,
les exemples de classes de vecteur dans les bouquins écrits par des
grand-maîtres de C++.
Alors, oui, je vais continuer à faire usage de la liberté que tu me laisses.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
Richard Delorme
Jean-Marc Bourguet wrote:

Un langage peut aider a utiliser des formes de controles structurees
il peut meme ne fournir que celles-ci. Il est preferable d'utiliser
un tel langage et je suis donc d'accord avec Dijstra. Ce qui
n'empeche pas qu'on puisse faire de la programmation structuree (cad
se restreindre aux structures de controles correspondantes) dans un
langage qui n'offre aucune aide.

Exactement comme on peut faire la P00 dans un lanage qui n'offre
aucune idee (le C ou meme l'assembleur) meme si c'est preferable
d'utiliser un langage qui offre des aides (le C++).


Bien sûr, mais on ne peut pas dire pour autant que le langage C est un
langage orienté objet, ni l'assembleur un langage structuré parce qu'il
est possible de difficilement programmer avec dans ces paradigmes.
Le C et l'assembleur sont deux langages différents exactement pour les
mêmes raisons que le C et le C++ sont deux langages différents.

--
Richard

Avatar
Jean-Marc Bourguet
"Alain Naigeon" writes:

"Jean-Marc Bourguet" a écrit dans le message news:

"M. B." writes:

"Fabien LE LEZ" a écrit dans le message de news:

On 10 Aug 2004 09:41:01 +0200, Jean-Marc Bourguet :

Maintenant pour un auto-didacte, le probleme est de conseiller un
livre.


Il y a au moins un bon conseil à donner : s'il ne parle pas de
(std::)vector<> et (std::)string dès le départ, et longtemps avant
d'aborder la notion de pointeur, il est totalement inadapté à un
débutant.
Ce critère a l'avantage de déblayer vraiment le terrain, en virant pas
mal de merdes.


Je plains les debutants en face de toi si tu leur balances
du template avant de leur expliquer ce que 'this' veut dire ...


Je balancerais sans aucun probleme l'utilisation des classes template
de la bibliotheque (standard ou celle du support du cours) avant
d'expliquer comment ecrire une classe ou un template.


Comment écrire peut-être, encore que... tu sembles
rejoindre les partisans de la définition "statique" des
concepts ;


Ma conception de l'enseignement de n'importe quoi est loin
d'être statique: je crois en la répétition et en
l'approfondissement. Donc en une exposition simplifiée de
l'ensemble et ensuite un approfondissement. En particulier,
les langages forment un tout (et syntaxe, et bibliothèque
standard -- vouloir croire que celle-ci est indépendante du
langage est méconnaître la coévolution de ces deux parties).

on croît connaître quelque chose, jusqu'au moment où l'on
découvre plein de nouveautés quand on essaie de *faire*
soi-même, et "comprendre" n'a plus alors le même sens.

Admettons tout de même ta méthode à titre transitoire (je
préférerais des démarches parallèles : ton exposé, et en
même temps des TD où l'on s'initierait à fabriquer des
petites choses très simples).


Où diable as-tu vu que je suis pour un enseignement
ex-cathedra non accompagné de travaux pratiques? S'il y a
une chose qui ne peut s'apprendre sans exercices *corrigés*,
c'est bien la programmation: il y a trop de détails qui
tuent dans ce domaine, trop de choses dont l'intérêt n'est
perceptible qu'après avoir expérimenté les inconvéniants des
alternatives pour qu'éviter la pratique soit une voie
possible.

J'ai bien écrits « exercices corrigés » car la correction
commentée de ce qu'a fait l'apprenant -- et non simplement
la fourniture d'un « corrigé type » me semble
indispensable.

Admettons, donc ; tu ne peux tout de même pas utiliser un
template sans dire ce qu'est un template !


Je peux utiliser std::cout et std::string sans utiliser le
mot "template", a fortiori sans expliquer ce que c'est.

Et tu ne peux pas dire ce que c'est sans parler des
classes de façon un peu poussée.


Je peux utiliser std::vector<int> en expliquant autant à
propos de cette construction que je peux faire au sujet de
int[10]: c'est une manière de construire de nouveaux types à
partir d'un type existant. Qu'on puisse soi-même définir
ses propres méthodes de construction ou pas n'est pas
important *dans la première itération sur le sujet*.

Ou alors tu enseignerais y = f(x) en commençant par "soit
x un élément de X, un où X est un machin sans propriétés
dignes de considération" ? Ca risque de donner un
discours soit creux, soit faux, sur f !


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.

Si tu expliques this et les pointeurs avant d'aborder
les IOStreams, c'est ceux qui sont en face de toi que je
plains.


Ca c'est historiquement prouvé faux, et quelqu'un vient de
rappeler (sans que que soit forcément son but) que même
l'ancienne version du bouquin de Stroustrup procédait
ainsi, grosso modo.


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. Même le
"tutorial" qui sensément commence la 2ième édition a des
relents de manuel de référence et on ne peut en faire
quelque chose d'utile qu'arrivé au bout.

(soit dit en passant, Stroustrup explique "comment ça
marche", la sortie par flux) Eh oui, un langage bouge, et
je ne crois pas qu'on rende service à un débutant en lui
donnant des photos statiques pré-mâchées par des
"experts".


Je ne crois pas qu'on rende service à un débutant en le
lancant à l'eau dans un marais infesté de crocodiles.

Il y a plein de questions non posées dans ce débat : que
veut dire débutant ? En C++, ou en programmation ?


En quoi est-ce une variable d'importance? Je crois que le
seul langage dont la connaissance antérieure me fairait
peut-être changer la structure d'un cours sur le C++ serait
le C. Sinon, seul le temps passé sur les différentes
parties, les exemples et les références aux langages connus
seraient fondamentalement différents.

Ensuite le but ?


Un niveau où on va chercher dans Stroustrup ou dans Josutis
le détail qui échappe, où on peut profiter des bouquins de
Scott Meyer.

C'est faux de croire qu'un amateur veut une connaissance
superficielle, à but productiviste immédiat. Il n'a pas
cette contrainte, lui. Il veut programmer pour ses
loisirs, ça veut donc dire un intérêt intellectuel, il
peut se permettre de prendre du temps, de risquer des
catastrophes pour appronfondir, etc, il n'a pas de chef
sur le dos ni d'obligation de respecter les délais d'un
contrat. Donc il va étudier x c X, en premier lieu. Même
s'il est vrai que l'étude de f(x) lui apportera de
nouvelles lumières sur les x.

L'apprentissage est processus en spirale...


Tiens nous sommes d'accord là dessus. Je préfère simplement
pouvoir faire des choses amusantes dés les premiers tours et
retarder certains thèmes quand c'est plus facile de les
mettre en perspective dans une vue d'ensemble. Les
subtilités dans les rapports entre les tableaux et les
pointeurs, sincèrement on s'en passerait bien. Alors les
imposer au début d'un cours...

peu compatible avec la fabrication de pions immédiatement
productifs, demandés par l'industrie.


Ca tiens du procès d'intention.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org





Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:

On Tue, 10 Aug 2004 17:31:31 +0200, "Alain Naigeon"
:

Oui, c'est ça, Carnegie Hall avant le solfège.


Non, le maniement de l'archet avant l'étude de la fabrication d'un
violon.


Ce serait vraiment trop HS de te répondre... mais rien que la comparaison
des doigtés et des régimes de fonctionnement (harmoniques) d'une
flûte à bec a de quoi susciter la réflexion, pour peu qu'on s'y autorise,
évidemment - et là je parle sous le contrôle d'un expert québecois ;-)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
Arnaud Debaene
Alain Naigeon wrote:

Ce qui implique :
- que la façon de l'enseigner doit être re-questionnée ;
- que la méthode préconisée aujourd'hui est, par essence,
questionnable elle aussi, ce qui interdit de qualifier de
"merde" une autre façon de faire.


Là, je suis d'accord que *personne* ne devrait utiliser ce type de
vocabulaire pour *aucun* bouqin d'enseignement, sauf bien sûr si c'est pour
lancer une flameware...

Arnaud

Avatar
Loïc Joly
Alexandre Bacquart wrote:

Ce que je ne trouve pas bien moi, c'est de dire à un gars qui veut
programmer pour s'amuser que BASIC c'est de la dobe et C++ de la balle.
Surtout ici où peu de gens vont contredire...


Je ne crois pas que c'est ce qui a été dit (en tout cas, pas par moi).

ce n'est que de la
branlette de pseudo-professionnel sectaire et ce n'est pas constructif
pour un rond (je précise ici que ce n'est pas toi qui a remis ce débat
usé sur le tapis à la base) alors que dans la pratique, BASIC a déjà
apporté bien plus au gars en question que C++. Et c'est oublier qu'il y
a des tas de pros qui utilisent BASIC car ça va bien pour faire les
choses vite.


Et je dirais d'après mon expérience des choses de tailles modérées.
Jusque dans ses dernières versions (après, j'ai plus suivi), VB
fournissait par défaut des éléments avec un bon niveau d'abstraction,
mais ne permettait pas à l'utilisateur d'en faire de même.

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. ;)


C++ peut-il être appris comme premier langage ?



Là je ne sais pas, je suis perplexe comme toi : je pratiquais déjà
depuis longtemps C, quelques BASICs et quelques assembleurs.


J'avais des notions de pascal, de vieux basic, de delphi et de VBA avant
de me mettre au C++, mais pas de véritable expérience (juste 2/3
programmes bidons de quelques pages chacun), et ça s'est passé sans trop
de problèmes. La seule difficulté à l'époque a été la gestion de la
mémoire (pas trop dur à compendre, très dur à bien faire sur l'ensemble
du code), et mon plus grand émerveillement la découverte de std::string
à la place de char *.


Avec un bon cours et
beaucoup de rigueur, ça doit être possible, mais ce n'est pas
forcément la voie la plus facile.



J'en doute effectivement.

Autre inconvénient : quand on connaît C++, on a tendance à ne pas
aller voir ce qui se fait ailleurs.



C'est un peu pareil pour C.


Et pour tous les langages je pense.

[...]


Faut voir aussi quel bouquin il a acheté.



Il ne le dit pas. Mais il serait horrifié par l'envergure de la tâche
dès la page 10 du Stroustrup que je n'en serais pas plus étonné. Et je
suis sûr qu'il n'y a pas besoin de chercher très loin pour trouver un
livre plus abordable en termes pédagogiques, même écrit avec les pieds,
l'idée étant d'avancer, pas de bloquer. Je dis cela d'expérience, car
connaissant bien C, ça ne m'a pas empêché de galérer comme un débutant
pour passer à C++ en m'imaginant qu'un livre écrit par l'inventeur de ce
langage était le plus approprié (les "mauvaises habitudes" de C n'étant
qu'une partie négligeable du problème, les habitudes ça se change). Le
Stroustrup est une référence incontournable


Bof, j'ai réussi à la contourner. J'aurais probablement appris plus vite
avec. Il fait partie de ma wish list, mais n'est pas si haut placé.
Maintenant, c'est plus dans un esprit de complétude.

pour qui veut faire du C++
sérieusement, mais pour qui veut l'apprendre, il vaut mieux aller voir
ailleurs.


100% d'accord. Je le déconseille régulièrement dans le cadre d'un
premier apprentissage sur ce groupe, bien que sa qualité en tant que
référence ne fasse pas de doute.


--
Loïc


Avatar
Jean-Marc Bourguet
"Alain Naigeon" writes:

"Jean-Marc Bourguet" a écrit dans le message news:

"M. B." writes:

"Jean-Marc Bourguet" a écrit dans le message de news:

"M. B." writes:


Si tu expliques this et les pointeurs avant d'aborder les
IOStreams, c'est ceux qui sont en face de toi que je plains.


Ca fait 10 ans qu'ils ne s'en plaignent pas, bien au contraire.


Ca fait 10 ans que t'as pas change ton cours?
Ils devraient se plaindre, le C++ a evolue depuis l'ARM.


Ce qui implique :
- que la façon de l'enseigner doit être re-questionnée ;


Naturellement.

- que la méthode préconisée aujourd'hui est, par essence,
questionnable elle aussi,


Il est évident qu'elle évoluera.

ce qui interdit de qualifier de "merde" une autre façon de
faire.


Est-ce que je l'ai fait? Il me semble que j'ai répondu à
Fabien en faisant remarquer que dans ce qu'il qualifiait de
"merde" il y avait aussi des livres qui étaient valables et
même bons à l'époque où ils ont été écrits. Sincèrement,
acheter le Barton & Nackman est encore un achat valable,
mais pas apprendre le C++ avec la première partie.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Avatar
Loïc Joly
TEROIN Philippe wrote:

le livre que j'ai lu ext Programmer en Langage C++, Cours et exercise, idem
pour le C.

editeur eyrolles de Claude Delanooy



La dernière fois que j'ai parcouru un livre de cet auteur sur le C++, ça
a été mauvais pour mes ulcères... :(

Ca m'a tout à fait fait l'effet de quelqu'un essayant d'appliquer à un
langage ce qu'il avait appris sur un autre langage, sans comprendre les
différences.

Je le classerai dans la catégorie juste bon à faire tenir une armoire,
et encore, lors d'un déménagement, des gens pourraient y jeter un coup
d'oeil.

C Delannoy est un peu notre Herb Schildt à la française.


--
Loïc

Avatar
Loïc Joly
Pierre Maurette wrote:

Loïc Joly a écrit:


TEROIN Philippe wrote:


Desole pour mon orthographe, pour ce qui est de connaitre le C avant le C++,
trouve moi un seule livre de Documentation qui fournit les commande de base
du C++, j'en est trouver aucun.

je me suis donc rabattue sur le C, pour les connaitre.


Je ne sais pas trop quels livres tu as lu, mais il est vrai que beaucoup
sont mal écrit ou présupposent la connaissance d'un autre langage (pas
parce que c'est nécessaire, mais juste parce qu'une grande partie des
lecteurs potentiels conaissaient ce langage). Maintenant, il existe
aussi des livres sans ces pré-supposés, j'ai déjà cité Accelerated C++,


S'il n'existe qu'en anglais, il présuppose la connaissance de ce
langage ...


Oui, c'est en effet dommage. J'ai essayer de suggérer un traduction (à
l'auteur, un éditeur de traductions d'Addison Weysley en français...),
mais sans effet. C'est d'ailleurs ce qui m'a inciter à commencer mon
propre livre sur le sujet (livre gratuit, date de parution estimée au
rythme d'avancement actuel : juillet 2586) car autant par la suite,
l'anglais ne me semble pas trop gênant, autant pour un bouquin
d'introduction, où la qualité de compréhension des explications est
primordiale, il peut être un handicap.

--
Loïc



Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:


L'approche que je préconise est de commencer par les trucs
à la fois fondamentaux et relativement simple, comme vector<> et
string, et de laisser les détails compliqués et peu utiles (comme la
cuisine interne de vector<> et string) pour plus tard.


En disant "cuisine interne" tu poses la conclusion dans les prémisses.
Il y a beaucoup de choses utiles et dignes d'estime intellectuelle
à apprendre lorsqu'on écrit une classe de vecteurs. C'est en tout
cas ce qu'on pensé nombre d'auteurs réputés. Et ce serait, du
jour au lendemain, "en 2004" : HS, inutile, et assimilable à de la cuisine ?
C'est louche, ça ressemble plus à une mode qu'à un raisonnement.


Prenons un poste de radio. Tu peux décider d'étudier les théories de
l'électromagnétisme et des semi-conducteurs, puis de concevoir des
transistors, des condensateurs, des selfs, etc., puis étudier la
manière de les arranger entre eux, le tout sans avoir la moindre idée
de l'endroit où tout ça va te mener.
Je préfère l'approche inverse :


Voilà qui est ton droit ! J'espère n'avoir jamais donné l'impression
de vouloir t'en priver (d'essayer, hein).

commencer par prendre un poste de
radio tout fait, apprendre à s'en servir, apprécier la musique qu'il
permet d'écouter, puis, un jour, poussé par la curiosité, l'ouvrir, et
voir ce qu'il y a dedans, "découper" petit à petit : d'abord, une
antenne, un haut-parleur, et des piles, tout ça relié à une plaque
avec des machins dessus.


Mon Papa a écouté la radio toute sa vie, et je ne suis pas sûr
qu'il ait simplement assimilé V=RI, ni eu la moindre envie.
L'enseignant n'est pas tenu de fabriquer son public, l'essentiel
est qu'il en annonce clairement la teneur. Or, un cours sur
les équations de Maxwell ce n'est pas un cours sur les programmes
de variété.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France