Bonjour à tous !
Voila j´aimerai bien commencer le language C/C++
Mais je ne sais pas du tout par quel livre commencer :O
J´ai déjà parcouru SDZ, mais j´aimerais quand même avoir un livre niveau débutant ou un peu plus :P
J´ai voulu acheté C++ pour les Nuls , mais le vendeur m´a dis que le livre était bourré d´erreurs.
Alors quel livre prendre ?
je possède "Programmer en C++" par Claude Delannoy des éditions eyrolles et je le trouve excellent de plus je suis pas le seul à le penser ! il coute 19 euro ;) par contre, 580 pages
"J´ai voulu acheté C++ pour les Nuls , mais le vendeur m´a dis que le livre était bourré d´erreurs. "
--> J´aurais bien aimé que ce vendeur précise.
Personnellement, je connais des puristes du C ou du C++ qui sont tres a cheval sur la rigueur. Ils n´ont pas tort, mais parfois, la "rigueur" embrouillera le newbie un maximum...
Un exemple :
Quand tu fais un scanf (fonction apprise rapidement par un
débutant) tu peux si tu veux tester le code de retour, tester les débordements par quelques astuces, envisager le cas ou l´utilisateur a fait ça ou ça, faire autrement dans un cas ou un autre, etc... De façon a ce que le programme ne plante pas.
Mais tous ces tests peuvent rajouter plein de lignes, ou de caracteres dans la chaine de format de scanf qui ne vont faire qu´embrouiller le nouveau.
Alors, souvent, on propose le scanf "nu", ce qui est nettement plus compréhensible par le débutant.
Mais t´as toujours des gens - qui selon moi ont un grave complexe de supériorité - qui vont te dire :
"Mais non !! ! Si tu fais ça, ça va planter si le mec fait ça, et si il ne prend pas cette précaution, alors tu pourras avoir ... blablabla... débordement ... blablabla ... mémoire cache ... blablabla... segment mémoire ... blablabla ...."
Alors, ils ont raison sur le fond, mais quand tu fais un programme qui t´affiche ton age et l´affiche, et qui est adressé pour des gens qui ont ce niveau la, c´est absolument antipédagogique comme raisonnement...
Alors peut etre que le "C++ pour les nuls" contient des "erreurs", des coquilles, qu´il ne testes pas toutes les possibilités possibles pour un programme de niveau "ça fait 10 minutes que j´ai commencé le C", mais je pense qu´il apporte beaucoup.
Apres, peut etre que ton vendeur dort mieux la nuit en se disant "ahah !! je suis meilleur que ceux qui ont écrit ce livre ! Par contre, je ne fais rien de ma vie, je critique les autres sans rien donner en échange"...
Salut Fvirtman,
meme si fondamentalement je suis d´accord avec toi, sur le fait qu´alourdir l´apprentissage des le debut, n´est pas une bonne chose, tous les biais que tu pourras rencontrer avec scanf (mal utilisé j´entends) à terme sont bien plus emmerdant que le fait de d´expliquer le fonctionnement voire meme de zapper completement scanf.
Sans parler d´overflow, de formatage et consorts, il serait, AMHA, mieux de presenter en premier fgets, qui sans reel apprentissage supplementaire (le fait de parser ton entrée) te met à l´abri des entrées foireuses. En faisant, tu evites tous les problemes de gestion d´espace, de format.
De fait, toujours AMHA, partir sur des bases solides est toujours une meilleure chose meme si ca implique un effort supplementaire, surtout au vu du prix à payer, quand tu te sers d´une fonction dont tu n´as vu que le fonctionnement par defaut (et scanf par definition ne devrait pas servir par defaut, vu qu´il lit des chaines formatées).
Apres "les gouts et les couleurs" ... =)
Je te recommande le bouquin donné par _gavautavier_, "Programmer en C++" par Claude Delannoy
Il est absolument génial ce livre
eh bah tu vois fvirtman il n´y a pas que moi qui le trouve nul ce livre
D´un autre côté, cette rigueur fait partie de l´apprensissage du C++. Si on veut être pris par la main et découvrir le monde la programmation de façon pédagogique, efficace et sympa, on fait du BASIC. Ensuite, lorsqu´on se retrouve limité par le langage (Non, on ne passe pas au VB, quoique...), on passe à un langage plus bas niveau comme le C++ et on s´attache à acquérir les bonnes méthodes de programmation qui lui sont propres. Apprendre le C++ comme premier langage est contreproductif, c´est la meilleure façon de devenir une quiche en algo et en conception parcequ´on va se prendre plus la tête sur la technique que sur le sens. Alors, soit on apprend ce langage et on s´y donne à fond sans utiliser d´artifices masquant les notions piégeuses comme les pointeurs, l´allocation mémoire et autres mutex, soit on apprend un autre langage car sa puissance réside justement dans la compréhension de ces mécanismes.
D´où la question à te poser : maîtrises-tu la programmation ? C´est la condition sine qua non pour t´attaquer au C likes. Alors, si en plus tu te lances dans ce langage pour faire des choses telles que des jeux en OpenGL ou DirectX ou de la programmation système, n´oublie pas qu´il te faudra des heures entières avant de pouvoir faire quelque chose de correct.
juste pour contredire tout le monde sauf Fvirtman...
j´ai commencé la prog avec VB avant d´arrivé au cégep et de commencer le c++.. mais le 3/4 de ma classe qui n´avait jamais programmer de leur vie ont tout appris avec le c++.. sauf que ce n´est pas, comme hitman_alias_47 nous le dis si bien, contreproductif.. il suffit de l´apprendre correctement! il suffit d´y allé étape par étape!
et puis je suis d´avis que lorsqu´on débute la programmation, il est bien plus important de comprendre la logique d´un langage plutôt que ses subtilités.. je préfère de loin savoir ce que fait scanf et pourquoi il peut lire une chaine formaté, plutot que de savoir que si je met pas tel ou tel sécurité, le programme va planté.. ça, un débutant en a pas grand chose à foutre!
Dans mon cas précis, j´ai appris les pointeurs à ma 2e session de cégep (sur 6) et l´allocation de mémoire par le fait même.. pour ce qui est des mutex, c´est encore plutôt flou dans ma tête.. et je ne crois pas être "dans la mauvaise voie de l´apprentissage de la programmation" pour autant!
c´est pour cela que je maintiendrai toujours ce point de vue: avant de comprendre les subtilités, les possibilités et les spécifications d´un langage, il est bien plus important de comprendre la logique d´un ordinateur.. donc le "comment et pourquoi on fait tel ou tel chose".. et c´est pourquoi la meilleure chose à faire pour un débutant est, à mon avis, d´apprendre le langage le plus basique mais le plus efficace qui soit.. et j´ai nommé: Le Pseudo-code! oui c´est chiant, oui c´est très long et oui ça ne donne pas grand chose au final.. mais bon dieu que tout semble bien plus simple par la suite!
"3/4 de ma classe qui n´avait jamais programmer de leur vie ont tout appris avec le c++"
Oui, mais c´était dans un cadre scolaire. Je parlais dans le cas de l´autoformation. Oui, lorsqu´on est encadré, on peut commencer avec n´importe quel langage, même avec le Scheme.
Pour un niveau un peu plus élevé, je peux recommander "Le langage C++" de Bjarne Stroustrup, le créateur du-dit langage, très complet (1100 pages) et bien expliqué.
je ne suis pas vraiment d´accord, le livre de stroustrup est une bonne reference mais pas un livre d´apprenstissage.
Les livres de scott meyers "effective C++", "more effective C++" et "effective STL" (pas sur du dernier titre) sont vraiment de bon livre d´apprentissage, les mecanismes sont redetaillés quand il le faut.
salut
Je vais m'acheter demain "Programmer en C++" par Claude Delannoy car selon vous ce bouquin explique très bien le monde du c++
Mais est ce que ce bouquin est fourni les bases nécessaire pour pouvoir envisager par la suite de développer des jeux?
Donc je voudrais savoir si un autre bouquin pouvait servir de complément.
c'est un bouquin qui presente un bon apercu des choses essentielles, et des bases. Peu de choses avancees, et uniquement a propos du langage, donc pas d'application directe a un domaine tel que le jeu video.
les bons livres traitant des jeux videos sont en anglais. De toutes façons il faut d'abord bien connaitre un langage avant de se lancer dans la création d'un jeu avec celui ci. Donc le bouquin de claude delannoy est très bien.
ok merci je viens de l'acheter , maintenant au boulot !
Avant d'acheter un livre, tu as plusieurs documentations sur ce site :
http://cpp.developpez.com/
http://jeux.developpez.com/
J'ai lu "C++ pour les nuls", il y a en effet quelques erreurs (par exemple, parfois une "class getData" se transforme en "class getdata") mais seulement des les illustrations par bouts de codes, jamais dans les programmes complets, et les erreurs sont tellement évidentes que ça ne m'a fait que sourire quand j'en voyais une...
Sinon le bouquin prends vraiment aux bases et fait des rappels assez souvent, donc c'est pas mal...
Au niveau de l'alourdissement des cours dont parlais JYY, mis à part qu'il est souvent expliqué comment et pourquoi ça fonctionne de cette manière (mais je trouve ça bien car sinon on ne saisirais pas le sens de la fonction étudiée), il n'y a pas de surexemples, au contraire, il y a des petits exemples simples à comprendre, et en fin de chapitre en général un petit programme complet qui illustre le fonctionnement de ce sur quoi on travaille en une application utile.
Concernant l'apprentissage du C, je suis un fan du cours de Christian Bac:
http://picolibre.int-evry.fr/projects/cvs/coursc/Index.pdf
on parle ici de C++ et non de C.
En passant, un autre cours de C: http://www-clips.imag.fr/commun/bernard.cassagne/Introduction_ANSI_C.html