le C++? le vrai? euh.. à 25 ans?
Sinon ouais, du gwbasic à 9 ans, c'était le bon temps.
le C++? le vrai? euh.. à 25 ans?
Sinon ouais, du gwbasic à 9 ans, c'était le bon temps.
Pour ma part, j'ai commencé vers 14-15 ans avec VB/Html. Le C++ à 15 ans, et j'ai pas arrêté depuis![]()
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Des Basic (TO8, GW, Basica) vers 12-13 ans, du Pascal ensuite. D'autres langages en école. J'avais donc des bases dans divers langages et bidouillé depuis 10 ans quand je me suis lancé dans le C++, depuis la mauvaise porte (C/historique). Petit à petit, j'ai déasappris+réappris. Et cela fait bien 10 ans que je pratique ce langage. Diantre.
Bref. Juste un petit bémol -- du radotage pour ceux qui me connaissent.
Le C n'est non seulement pas un passage obligatoire vers le C++, mais en plus ce n'est pas vraiment recommandé surtout sans aucune base algorithmique avant. Le tout est de guider son apprentissage avec des sources qui vont directement vers le C++, et qui exploitent son aspect haut niveau.
Pédagogiquement parlant, le C++ peut alors pratiquement rivaliser avec des langages reconnus comme langages de premier contact adaptés à la pédagogie comme le Pascal, contrairement au C. Il faut arréter d'exagérer avec le bas niveau, c'est important, mais pas au début. Pourquoi ne pas apprendre d'abord la micro-prog (le truc sur lequel s'appuie l'assembleur sur nos machines modernes), puis l'assembleur, et après le C tant qu'on y est?
En bonnes références qui rendent le C++ abordable :
- Accelerated C++ -- mais il faut pratiquer l'anglais technique
- Je me lance, par Francis Glassborrow, traduit chez Micro Application. Pour un premier contact chez un jeune (ou même un néophyte bien moins jeune jeune) il sera très bien. Surtout avec une contrainte "C++ d'abord". Avantage: il est accompagné d'une petite bibliothèque graphique ludique. Désantage : Windows uniquement -- sauf si on connait déjà suffisament le C (ce qui lêve de l'intérêt au bouquin) et linux pour adapter la bibliothèque graphique à son OS.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Personnellement j'ai commencé vers 12-13 ans, après avoir vu au cinéma deux films (exceptionnels pour l'époque et mon age): Tron & WarGames !
A cette époque là... point de salut, pour qui voulait faire quelque chose de potable c'était assembleur obligé (en tout cas pour les machines disponibles), voir même... language machine directement (il y avait pas trop d'assembleurs disponibles pour les petites machines)...
Puis ca a été le mélange des genres (Basic + assembleur pour optimisations de routines) sous Pet/CBM, Vic20, C64, C128...
Et passage au C (orienté objet, et multi-threadé préemptif) de l'Amiga (500, 1000) et au C++ (Amiga 2000, 4000).
L'entrée dans le monde du travail, qui change énormément sa façon de programmer (on ne programme plus 'joliement' mais efficace, et surtout, compréhensible pour les autres programmeurs).
C++ "portable" (Mac/PC) pendant une petite dizaine d'années (de 1993 à 2000) pour les applications de traitement d'image (LivePicture, LivePix).
Java depuis (web-server applications), mais avec le C++ en arrière plan pour les projets internes de ma boite (dont un moteur de 'jeu'), et, depuis 2 ans, le C#.
Contrairement à la croyance générale, le C++ ne s'execute pas tellement plus vite que le Java (Java est même plus rapide pour certains traitements). La quantité de code est parfaitement similaire.
Par contre, le taux de bugs est en général 2x plus élevé par ligne de code en C++ par rapport au java, mais le C++ permet de faire des optimisations que le java ne permet pas facilement. Comme, par exemple, gérer soit même la mémoire d'une classe, et être capable de traiter toutes les instances de cette classe par SSE en une fois.
De son coté, Java permet l'introspection (API reflection) qui est assez difficile à mettre en oeuvre en C++.
Et C# qui réunit les deux mondes (à mon avis), et dont le seul inconvéniant (hélas significatif pour les extrémistes) est d'être propriétaire à Micro$
t'essayes de lancer un débat?Par contre, le taux de bugs est en général 2x plus élevé par ligne de code en C++ par rapport au java
Pour ma part je pense que le C est un langage de base à apprendre avant le C++ ce qui n'a pas l'air d'être ton avis ( en tant que spécialiste C++ je te ferais plus confiance sur le sujetEnvoyé par Luc Hermitte
)
Je prend plutôt mon expérience personnelle comme "exemple" dans l'apprentissage des langages, car pour moi ça s'est plutôt bien passé : en cours on nous a d'abord apprit le C avec du bash sous unix, avec une méthodologie de type "organigramme" qui s'y prête bien, puis le jour où nous sommes passé à l'apprentissage de la programmation orientée objet, nous avons fait le pas avec C++ et Java, avec comme méthodologie de l'UML et de la gestion de projet en RUP.
L'avantage est que selon moi, ce mode d'apprentissage est progressif : on ne peut pas vraiment faire du bon code C++ sans savoir en faire en C, et sans avoir été confronté à la pratique du C. Le procédurale est selon moi dépassé, et il est alors interessant de faire le parallèle avec l'objet pour bien comprendre les avantages de ce dernier.
Beaucoup de gens restent au C d'ailleurs, car ils y trouvent leur bonheur; Je trouverais ça dommage de ne pas avoir apprit le C, car je pense que j'aurais perdu quelque chose d'important dans mon apprentissage de l'informatique.
Le tout n'est pas d'apprendre un langage à mon avis, mais des moyens de résoudre les problèmes. Le C, malgré ses lourdeurs, permet de résoudre un grand nombre de problèmes, et est à mon avis ludique à apprendre. Je me suis surpris à passer des soirées entières à faire du C, car j'aimais bien ce langage simple et sans complication.
Le jour où j'ai apprit le C++ ( et Java par la même occasion ) j'ai pû réutiliser mon savoir en C pour faire des programmes simples à comprendre.
Tout cela fait que selon moi, apprendre le C++ directement est comme brûler des étapes, et quand tu dis "pourquoi pas apprendre aussi l'assembleur au début ?" je te pose la question : comment programmer efficacement sans comprendre ce qu'il se passe vraiment en bas niveau ?
C'est peut-être une question de gout et de motivation dans l'informatique : tout comprendre a été un objectif pour moi dès le départ, et donc je conseillerais à tout débutant de commencer par le début, même si c'est plus difficile et déroutant, car passer du procédural à l'objet me parrait simple, mais de l'objet au procédural c'est une autre histoire ! On se retrouve alors à faire du "C orienté objet" et ce n'est pas exactement la meilleure façon de concevoir une application en C !
Voila pour mon opinion rapide sur le sujetA+
Arg. Je vais me répéter (maintes fois débattu dans d'autres post-it et posts-tout-court).
Je ne parle pas de ne pas voir le C et un assembleur. Mais de voir les choses dans l'ordre. Tant que l'algorithmie n'est pas comprise, il est ridicule d'immerger un débutant dans des détails bas niveau. Qu'il voit d'abord un truc haut niveau pour qu'il se familiarise avec la chose la plus importante de toute (l'algorithmie). Et pour cela, le C n'est pas un bon langage car il faut se concentrer sur d'autres choses en parrallèle ; sans parler des cours qui ne prennent même pas peine de montrer les bonnes façons de coder car trop lourdes et compliquées (cf article de Stroustrup relatif à "montrer le C++ comme un langage à part entière" dans sa FAQ)
Le C est un choix (en premier langage -- je ne parle que d'ordre! et de pédagogie) que je considère vaguement acceptable dans un cursus pour professionnels du développement si décourager des élèves du métier ne gêne pas. Pour des petits jeunes de 15-16 ans, ne les envoyez pas sur ça en premier. Quand même ! Il n'y a rien de tel pour les dégouter.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Absoluement pas... il n'y a pas de débat à avoir... C'est juste une constation sur les rapports de *notre* base de bugs.Envoyé par nikko34
Sur les 16732 bugs de notre base, 9346 sont des problêmes de conception / logique (et donc indépendants du langage), 3199 sont des problêmes de portage (behavior différent d'une machine à une autre, ce qui inclut d'un browser à un autre dans le cas des web-applications). Reste 4187 bugs, 2156 sous Java, 2031 sous C++, sachant qu'on a 2x moins de code en C++
Le plus embettant est encore qu'un gros millier d'entre eux était des "crash severity", alors que je n'en est qu'un demi millier en Java.
je parie que c'est parce qu'ils utilisent des pointeurs à tout va sans raison ( et pas des smarts ) ou autre concept de C++ mal assimilé.Envoyé par nicroman
Je plussois.Envoyé par Luc Hermitte
Si il sagit de former des gens au développement, ils devraient, avant même de toucher à une langage quelqu'il soit, avoir reçu des bases d'algorithmique. Et à mon avis, il n'y a qu'un seul language adapté aux cours d'algorithme: le pseudo-code !
Par contre, le casual-programmer, celui qui se fiche bien de savoir si tel ou tel truc est en O(n) ou O(logn), il veut un langage facile et surtout robuste (qui ne lui envoit pas des "core dump" à la tête quand ca marche pas comme escompté). Et là encore, je ne suis pas certain que le C convienne...
Le Basic n'est toujours pas mort (et est orienté objet désormais), C# et Java... Mais remarquez que dans tous les cas, il lui faut installer quelque chose (JVM, .Net framework, ...).
Désolé d'interompre le débat ,mais pour l'info je suis en train de suivre le conseil de KiLVaiDeN:j'apprend le C et je me rend compte que si je n'avais pas cherchez à l'apprendre j'aurai fais une grosse ..., enfin ..., bref vous comprenez!!![]()
Pour l'instant ça va mais puta.. qu'est ce qu'il ressemble au C++ et en plus sans POO,pour vous c'est nul mais pour moi qui débute c"est génial!
![]()
Mauvais cours de C++, changer de cours de C++.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Je ne suis pas entré dans le détail, mais ca doit être dans ce goût là... buffer-overrun, invalid-memory,... Mais il y a tellement de cas ou un programme complexe peut avoir des probleme: memory race-condition, destruction-order, un-catched exception....Envoyé par nikko34
C'est d'ailleurs presque toujours sur les bords des modules (entrée/sortie de DLL/SO), là ou on ne peut pas utiliser des types complexes (comme boost ou std:String) à moins de forcer nos clients à utiliser le même compilateur que nous
Quant au "mal assimilé", il faut pas pousser... on aurait 1 dev C++ pas bon pourquoi pas... mais on est 8 (sur 12) à toucher au C++, et je veux dire que je suis un mauvais programmeur C++ si ca peut te faire plaisir (236 de ces bugs ont été dans mon code)... par contre je peux pas laisser dire ca comme généralité pour les autres.
D'ailleurs c'est une de mes questions de recrutement: combien de bugs par ligne de code introduisez vous ? Et crois moi ou pas, y en a qui arrivent à répondre "aucun" ou "très rarement" !!!!
Ce message s'adresse au cour que j'ai trouvé??Envoyé par Luc Hermitte
Pourquoi tu dis ça ?
Pour le débat sur la façon d'apprendre le C++, si on doit passer par le C, etc ... Dans le forum Général Développement il y a un tel débat il me semble.
Vous êtes hors sujet. L'auteur n'avait peut-être pas envie que ça dérape![]()
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
J'ai utilisé le C++ pendant des années avant de savoir vraiment l'utiliser autour de mes 18 ans.
J'ai commencé la programmation avec les calculatrices programmables vers
11-12 ans. Puis le basic des micros de l'époque quand j'avais 15 ans suivi
par des assembleurs (Z80, 6800) et du pascal. Le premier cours de
programmation que j'ai eu c'était avec Algol 68 vers 18-19 ans, puis du
Fortran l'année d'après. Hors cours, j'avais appris l'Ada et l'assembleur
68000. J'ai dû avoir mon premier contact avec le C++ en 87-88, j'avais
19-20 ans (la première édition du bouquin de Stroustrup, demandez ce que
ceux qui l'ont eue en main en pensent) mais je ne l'ai pas réellement
utilisé avant 91. Jusqu'en 93, mon langage principal était le Pascal.
Après jusqu'en 96 ce fut l'Ada. En 97 le Mainsail. Et depuis 98, c'est le
C++. Depuis 89, j'ai aussi continuellement fait des choses en C.
Outre les langages déjà cités et d'autres assembleurs (x86, 8051), j'ai
écrit des programmes non triviaux en Forth, Lisp et en SmallTalk et je me
suis intéressé de plus ou moins près à une série d'autres langages.
Comme Luc, j'ai appris le C++ par la voie historique -- je n'en ai
réellement fait qu'après bien connaître le C, mais il est a noté que je
connaissais déja Pascal, Algol 68, Fortran, Ada et plusieurs assembleurs
avant d'aborder le C -- mais je déconseille cette voie a qui a pour
objectif d'apprendre le C++, et même à ceux qui ont pour objectif
d'apprendre les deux langages surtout sans expérience préalable.
Une question et deux remarques.
La question: est-ce que la maîtrise des langages est comparable?
Remarque 1: je ne vois pas pourquoi un crash est quelque chose de particulièrement sévère. En fait, je préfère un crash à un comportement erroné sans aucune indication que quelque chose se passe mal.
Remarque 2: justement, d'après mon expérience, la plupart des bugs qui se manifestent par des crashs en C++ se manifestent par un comportement erroné sans autre symptomes dans les langages avec GC.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Je dirai que oui en général... tout le monde touche un peu à tout, et bizarrement ceux qui font le moins de C++ (ou qui sont le moins à l'aise) avec n'ont pas l'air d'avoir plus de bugs.
Oui bien entendu... c'est juste quand dans notre base, le "crash" se rapporte à la case "severity"Remarque 1: je ne vois pas pourquoi un crash est quelque chose de particulièrement sévère. En fait, je préfère un crash à un comportement erroné sans aucune indication que quelque chose se passe mal.A comparer avec "Copy-Change", "Typo", "Behavior", "Backend logic", ...
Oui encore, dans la plupart des cas, mais pas toujours, en tout cas pas dans la partie "gestion de mémoire"Remarque 2: justement, d'après mon expérience, la plupart des bugs qui se manifestent par des crashs en C++ se manifestent par un comportement erroné sans autre symptomes dans les langages avec GC.
Par exemple, on a eu un cas de double delete (à cause d'une données non protégée en multi-threadé), qui n'aurait jamais pu arriver en Java.
Partager