Brunni (./956) :
Folco ton problème c'est que tu veux faire 2 choses en même temps:
* Apprendre le C++
* Apprendre la POOLes deux sont extrêmement complexes, d'où les conseils insistants de partir sur un langage qui te facilite la tâche au moins pour apprendre la POO, histoire de ne pas tout mélanger.
Un langage qui lui facilite la tâche comme le C++ + Qt?
Au fait, connaissant GoldenCrystal, le langage dont il parle est probablement un certain langage dont le nom se traduit en "do dièse"… Personnellement, je préfère encore le Java! GoldenCrystal (./957) :
./953 > Il participait au concours du pire conseil à donner à un débutant. Je pense qu'il a gagné le premier prix. 
Je ne trouve pas le conseil de Sasume si mal que ça. Beaucoup de développeurs de logiciels libres ont appris en contribuant à des projets existants. Personnellement, j'ai appris le C en travaillant sur A68k (qui n'est pas libre, mais les sources sont disponibles), et puis travailler sur GCC m'a appris énormément de choses sur le C. Pour le C++, c'était un peu différent (j'ai fait du C++ à l'université aux USA pendant un semestre et puis mon premier projet en C++ était un projet à moi (KTIGCC)).
Pour vraiment bien maîtriser le C et le C++, rien de mieux que de suivre les discussions sur la mailing list de GCC pendant un certain temps. Évidemment on ne comprend rien au début, mais au fil du temps on comprend de mieux en mieux et on apprend plein de choses sur les aspects les plus obscurs des standards.
Brunni (./960) :
Tout bêtement parce que le C(++) est un langage write-only
Il n'est pas particulièrement fait pour être lisible et relu (même pour celui qui l'a écrit c'est généralement chaud qqes temps après, même bien commenté).
Alors là je ne suis pas d'accord du tout, j'ai en général besoin de peu ou pas de commentaires pour comprendre du C ou du C++, du moins s'il est écrit à peu près proprement. (Exemple à ne pas suivre:
obj2ti de Julien Muchembled.

Heureusement que
ld-tigcc le remplace.) Il y a des projets difficiles à comprendre par leur nature et/ou leur ampleur (cf. GCC par exemple), mais c'est loin d'être le cas de tous les projets libres.
GoldenCrystal (./961) :
En gros, selon le logiciel que tu vas étudier, tu vas chopper de mauvaises pratiques, voir te figer dans un style de programmation, et tu risques de ne jamais acquérir ton propre style.
Alors là, je ne vois vraiment pas… Mon code C ne ressemble ni à celui de A68k (style totalement obsolète, déclarations K&R etc.), ni à celui de GCC (le formatage style GNU est à vomir: mélange d'espaces et de tabs qui casse si on n'utilise pas la même largeur de tab qu'eux, placement et indentation des accolades totalement bizarre, espaces entre nom de fonction et parenthèse ouvrante qui n'ont aucune justification logique etc.), et pourtant ce sont les projets avec lesquels j'ai commencé.
d'autant plus qu'on ne te laissera probablement pas contribuer comme ça.
Tu n'es pas obligé de contribuer au projet officiel, hein. Dans certains cas, il n'y a même plus de projet officiel, donc on peut reprendre le projet tranquillement. (C'était le cas pour A68k quand je m'y suis mis.) Et quand le projet officiel existe encore, ce qu'on peut faire, c'est développer son patch tranquillement, puis l'envoyer quand il est fini, après à eux de décider s'ils en veulent ou non. Et faire de bons patches, ou du moins des patches qui suivent les attentes du projet visé, ça s'apprend au fur et à mesure.
(Tu n'est pas vraiment libre de ce que tu codes… C'est la face cachée de l'open-source mais #chut#)
Si, tu es libre de forker. Tu risques de ne pas te faire aimer par le projet officiel, évidemment, mais en principe tu peux, et parfois tu n'as pas le choix. Certains projets te conseilleront même de forker si tu veux faire des changements qu'ils ne trouvent pas acceptables pour leur projet pour une raison ou pour une autre.
squalyl (./962) :
enfin avant de justifier kilométriquement y'a une raison plus simple: pourquoi contribuer à un truc qui m'intéresse pas, qui est pas mon bébé, plutot que de coder mon propre truc? surtout pour apprendre.
Justement, il contribuerait à un projet qui l'intéresse, évidemment. Et personnellement, je ne vois pas l'intérêt de refaire ce qui existe déjà.
Sasume (./964) :
Évidemment il faut choisir un projet bien codé (parmi ceux que je connais en C++ : KDE en général et KTorrent) et qui t’intéresse… 
Attention quand-même aux apps pour KDE tierces, dont la qualité du code est très variable.
Nil (./966) :
Oui mais ça lui impose un framework, ce qui n'est pas forcément le mieux pour débuter je pense.
Je ne suis pas d'accord du tout, le Qt/KDE, c'est très bien pour débuter, ça évite de réinventer la roue pour plein de choses, ça simplifie certains aspects du C++ (par exemple, il y a
foreach), et les
QObject et tout ce qui est lié apportent toutes les fonctionnalités attendues d'un langage objet moderne: gestion des évènements (signaux et slots), introspection etc. Et puis c'est aussi un bon framework pour tous les jours, on peut utiliser la libQtCore et la libkdecore même pour les programmes sans interface, et pour les interfaces graphiques, Qt/KDE est tout simplement génial. Donc ce n'est pas un langage artificiel qu'on utilise pour débuter et puis plus jamais.
squalyl (./968) :
faut se méfier aussi
les design patterns, faut pas vouloir les utiliser "parce que c'est bien"
+1