Apprendre le C/C++/C#

Poulalal je suis scandaleusement pas d’accord.

Je conseille dans l’ordre C#, C++, C. D’abord parceque tout les concepts fondamentaux du C++ se retrouvent en C# (sauf heritage multiple), et tout ceux du C en C++ (ce qui est pas un atout je trouve).

C# est le langage le plus abordable et celui qui permet d’apprendre le plus facilement les concepts de programmation objet. C’est aussi le plus moderne et le plus complet dans son API.

Le C est aujourd’hui a mon gout, tout aussi depasse que le COBOL. Et mes cheveux se herissent sur ma tete quand je lit des trucs comme “le C est indispensable pour faire du systeme, de la crypto ou de la securite reseau”. C’est pas parceque Linux ou les autres OS programmes dans les annees 60 sont en C que c’est la seule voie! Les concepts systemes sont exposes de la meme maniere en C++ ou en C# qu’en C (socket, threads, semaphores, locks, process, fichiers, …). Le C et le C++ sont intrinsequements non securises (strcpy est la cause numero 1 des buffer overflow). Ecrire un buffer overflow est impossible sur du code ecrit en C#. Et alors pour la crypto je pige meme pas. Ecrire sa propre lib de crypto tient de la folie furieuse et les librairies sont tout aussi disponibles dans chacun de ces trois langages…

Commencer par le C pour faire du C++ est une TRES mauvaise idee. Contrairement a ce qu’on peut croire le C++ n’est PAS une evolution du C, ce sont deux langage voisins, avec une syntaxe quasi identiques mais le C++ est un nouveau langage. L’inventeur du C++ a ete tres clair sur ce point la. Forcer des concepts appris en C, dans un programme C++ est une des pire erreurs a faire en C++. Si on veut apprendre le C++ on commence par le C++, savoir faire du C se relevera un avantage pendant les 10 premieres heures et un handicap au dela.

C’est pour ca que je recommande d’abord d’aborder un langage qui cache les problemes de gestion memoire et qui est plus proche de l’ideal objet comme C# ou Java. Attention ! J’ai pas dit qu’il fallait pas apprendre ou ignorer la gestion memoire et savoir comment marche c’est juste qu’il y a tellement de chose a apprendre sans avoir a gerer tout cela soi meme au debut. Savoir comment est allouee/liberee la memoire est tout aussi indispensable dans un langage garbage collecte qu’en C ou C++.

Donc pour resumer et pour quelqu’un qui debute je conseille d’abord de regarder quelles utilisation tu veux faire d’un langage. Chacun a ses domaines de predilection et tu peux choisir en fonction de ce que tu veux en faire. Si c’est dans un but purement didactique et que tu veux juste apprendre je te conseille: C#, C++ et enfin C si vraiment t’as du temps a perdre ou que tu veux bosser sur le kernel linux, du code pre-existant en C ou bien sur un systeme embarque.

Finalement tout depend de ce que tu veux faire …
Si tu veux faire des applis qui tournent sous windows, tu peux directement attaquer le C++., bien que tu passes a coté de notions importantes en C comme la gestion de la memoire, etc…
Si tu veux faire du systeme, cryptographie ou de la securité réseau par exemple, le passage par le C est indispensable.
Je suis pour la phylosophie de toujours tout prendre a la base, mais ca ca dépend de chacun, a toi de voir si t’es curieux ou pas.

J’aurais du mettre :smiley: à la place de :wink: pour le C+ moi :wink:

Sinon, je conseillait le C++ en premier parceque c’est par là que j’ai commencé et que ma foi ça s’est plutôt bien passé :smiley:
J’ai eu a faire un peu de C par la suite et j’ai pas eu de mal, c’est pour ça.

Bon, si tu veux faire de l’objet, je ne te conseille pas de faire du C.
Commence par un langage purement objet. Vraiment. J’ai commence en C, et maintenant, je n’arrive pas a me lancer dans de l’objet. Instinctivement, je reprend des habitudes “C” (bon, faut peut etre en avoir fait beaucoup, mais quand meme)

Avis perso.

LoneWolf
Iteratif ou objet, il faut choisir

tout comme Tzim je te conseil de commencer par le C. Y’a des bases essentielles a connaitre avant de passer a un langage + évolué comme le C++. Bien entendu, les 2 langages ne sont pas du tout orienté de la meme facon, mais passer par le C, permet de bien comprendre toute la puissance du C++ :wink:

Le C+ n’existe pas …
Bon, pour commencer la programation, je te conseillerais de commencer par le C, on met pas la charue avant les boeufs. Une fois que tu métriseras corectement le C, si t’as jamais programmé avant (je parles pas de l’HTML ou des scripts…), ca t’occupera déja un ptit moment (3-4 mois). Ensuite, tu pouras te mettre au C++, puis finiras par le C#, language de beaucoup plus haut niveau, qui, a mon avis nécéssite une bonne apréhension de la programmation objet, qui s’acquiert peu a peu avec le C++. Pour les bouquins, je suis pas le mieux placé pour t"en parler (moi, j’ai des cours), mais je peux me renseigner.

[quote]Ca existe le C+ ;)[/quote]nan, :smiley: C++ est l’évolution du C.
C’est pour faire référence à la particularité syntaxique « i++; » qui signifie « i=i+1; » donc on augmente bien d’une seule version :smiley:
Sinon, je te conseillerais de commencer directement par le C# pour bien t’orienter objet et te mettre directement dans le bain. Perso, j’ai toujours trouvé le C++ un peu « bâtard ». Donc je ne sais pas si pour apprendre, ce sera mieux qu’un vrai langage objet (genre java, ou C#) ou itératif (genre C), car l’important, c’est de bien assimiler les deux paradigmes. Bref oriente-toi objet, la mode n’est plus aux pointeurs (hélas ?) :wink:

[Edit]
J’avais pas vu que tu voulais apprendre tous les langages C ! Alors, dans ce cas, il n’y a qu’un seul chemin :
C
C++
C#
(ou bien (C++)++ :D)

[Edité le 1/2/2003 par xentyr]

tatatata. j’ai pas dit ca:
23:17 < LoneWolf1> bah le thread de fuky devrait etre dans segfault
Et je rajouterais (parce que j’ai le courage de mes opinions):
22:43 < LoneWolf1> putain d’neuneu d’fucky20
22:43 < LoneWolf1> et il a 502 message, ce tare des iles
22:43 < _unr_away> il a fait quoi cette fois
22:43 < LoneWolf1> http://www.cafzone.net/modules.php?op=modl…thread&tid=5431
22:43 < Bionicman> _unr_away> lol ouais
22:43 < LoneWolf1> dans truc en vrac
22:44 < _unr_away> hahahah le C+ :smiley:
22:44 < LoneWolf1> ouais mais bon
22:44 < LoneWolf1> il sait pas
22:44 < MuD|PhP> moi je métrise a fond le c+++
22:44 < LoneWolf1> mais pour les forums, y a une putain de faq

Voila voila. Il y a donc une FAQ, elle sert a savoir si ton thread est bien place. Simple.

LoneWolf
C’etait de bonne guerre, use :wink:

Extrait log IRC :
[23:19] mais ils dorment, les moderos, ou quoi?
[23:19] pkoi ?
[23:19] bah le thread de cet enfoiré de trou de balle de fuky devrait etre dans segfault

Donc à la demande de LoneWolf, je déplace ce thread dans segmentation fault. On verra ce qu’en dit c0unt0… :smiley:

(note : le log IRC a été quelque peu modifié pour semer la zizanie dans la cafzone, saurez vous retrouver le log original ? :wink: - je rigole fuky !!! :wink: )

[Edité le 1/2/2003 par use-writer]

[quote]Si tu veut faire du C après t’auras pas de problème, c’est quasiment identique, les classes en moins (enfin y’a toujours les structures ouf ;)).[/quote]Je ne suis pas d’accord. Le C++ a tout un systeme de gestion des objets et, en plus, est nettement moins permissif que le C. De plus, qui dit C dit maitrise des pointeurs, alors que ce n’est pas obligatoire en C++ (et c’est un peu logique, les objets sont la pour ca.)

Personnelement, j’ai appris le C. J’ai un niveau moyen, disons. Renforce par un passe d’electronicien. Et bien, le C++ ou tout autre langage objet, j’y arrive pas. J’ai une vision physique de la machine, pas objet.

Et vu que maintenant, tout le monde programme en objet, je te conseille le C++, voire le C# (mais je ne connais pas du tout). En tout cas, un langage objet.

LoneWolf
Aaaah le C… C’etait l’bon temps, gamin.

Personnellement, je te dirais de commencer par le C++, ça te permettra de prendre des bonnes habitudes orientées objet :smiley: par rapport au C.
Si tu veut faire du C après t’auras pas de problème, c’est quasiment identique, les classes en moins (enfin y’a toujours les structures ouf ;)).
Le C# je m’y suis pas encore mis, mais c’est quand même très orienté microsoft et .NET il me semble, faut peut-être mieux commencer par quelque chose de portable…

Ca existe le C+ :wink:

Sinon j’ai pas vraiment de bouquins à te conseiller, pas plus que de sites web…j’ai eut la chance d’avoir des cours bien fait et des profs pas trop incompétent (enfin pour la plupart :D)

Bon, je peux pas te dire exactement pas quel lequel comencé, mais je pense que le plus évident est de commencer par le c++, personnelement c’est celui par lequel j’ai commencé.
Comme bon livre pour apprendre, tu peux commencer par “le c++ pour les nuls”, malgré son nom, c’est plus compliqué qu’il n’y parait… et comme site, perso je vais voir sur: http://mistyk.free.fr//c++/book1.html
Voila, si qqn a des infos supplementaires, qu’il les donne…