Salut à tous un petit sondage pour savoir à quel âge vous avez commencez à programmer et si le langage C++ vous à paru complique au début.
Version imprimable
Salut à tous un petit sondage pour savoir à quel âge vous avez commencez à programmer et si le langage C++ vous à paru complique au début.
Salut,
J'ai commencé à programmé en 1996 (17 ans), et oui le C++ m'a paru compliqué, c'est tout à fait normal.
Le problème, si je peux le dire ainsi, est que pour bien comprendre des programmes écrits en C++ il faut déjà connaitre les C ( qui est déjà un peu ardu en soi ) et ensuite y ajouter les concepts objets que C++ introduit.
Je te conseillerais de te familiariser avec le C, puis de passer au C++ en apprenant les concepts de la programmation orientée objets.
A+
Je pense que je vais suivre ton conseil, je viens de commencer le C++ et j'ai fais 2 programmes. Moi j'ai 13 ans ce qui mepose un peu problème la programmation orienté objet dans le C il n'y en a pas.
Hallo,
Pour ma part j'ai commencé à 19 ans et le c++ ca fait 2ans. Avant j'avais attaqué du Fortran, C, shell sripts, c#, java.
Le java c'est plus ou moins compliqué que le C++??(je me suis acheté un bouquin avec 700 page en plus le contenu est super (8-) bientôt je serai tou du C++.
Je sais pas si l'un ou l'autre est plus dur ! Le tout est une histoire de gout. Je n'ai jamais vraiment aimé le java (ce que j'ai fait au niveau scolaire en tout cas).
Apres je pense que c'est clair, tu as besoin d'une bible pour bien connaître les bases de la programmation c++, mais bien savoir programmer demande de l'expérience et pas seulement de la lecture... Sinon ce serait trop simple.
Je suis d'accord quand j'aurai mon bouquin je saurai tout mais après, l'expérience ... c'est une autre histoire, dans 2 ans :lol:
Personnellement mon père a voulu m'apprendre la programmation Java à 9ans, cependant, la programmation ne m'intéressait pas trop, et donc j'ai eu un effet répulsif.
Je m'y suis remis de moi même à 12~13 ans, avec un livre et du courage. Le Java est un très bon langage pour les débutants, car je le trouve assez ludique. A la même époque, je me suis intéressé à d'autres langages, le C/C++ notamment, et j'avoue que je ne m'amusais pas autant qu'avec Java. J'ai donc laissé tombé assez rapidement. D'autres langages peuvent être ludiques, comme le Python par exemple.
Je trouve dommage de débuter la programmation avec un langage comme le C, car on ne s'amuse pas trop (difficile de faire sa première fenêtre graphique, or, tout le monde sait qu'il n'y a rien de plus marrant que de faire sa première GUI quand on apprend la programmation). Le C, c'est quand tu es déjà à l'aise dans le monde de la programmation, et que tu veux approfondir ta connaissance du système, et de la programmation en général (car c'est un langage bas niveau).
Donc si je dois te conseiller, débute avec le Java ou Python, mais pas avec le C et encore moins le C++.
Bonne chance ;)
Pourtant j'avais entendu dire que le C++ est une bonne base pour commencer la programmation...
Bha ce que je vais faire, c'est termine mon bouquin sur le C++ essayer de tout comprendre 8O 8O ) et puis voire aussi comment créer une interface graphique.
Avec le java on peut créer son Interface graphique sans avoir recour à un autre langage comme Qt ou Visual C++??
Le java est un monde un peu plus "libre" que celui du c++, tu trouvera sur la toile un ensemble de librairies qui tepermettront tres facilement de creer une interface graphique. Un certain nombre etant deja incluse dans le package de base.
En c++, c'est en effet plus dur, l'interface est externe au programme (un peu le principe XWindows).
Là je crois que je viens de comprendre un truc!!8O 8O 8O
Bon après le C++ je me mettrais au JAVA vous dites tous que c'est super, dans le livre que je lis il disent que de nombreux programmeurs en C++ se sont tounés vers le JAVA mais que pour finir ils sont revenus vers le C++.?
Bon je te conseil un peu plus de lecture....
Encore un debat...
J'ai commencé le C++ il y a 2 ans, à 15 ans donc, avec un premier essai assez infructueux à 12 ans dans un langage proche du Basic (c'était un logiciel qui s'appelait Div Games Creator je crois, et ils avaient implémenté un langage qui s'appelait Dark Basic si mes souvenirs sont bons).
Je ne pense pas que le C++ soit plus dur qu'un autre pour avoir les bases. Personnellement, je trouve la structure du C++ extrêmement clair et simple, alors que je trouve des langages comme le Delphi très laids et peu compréhensible (après c'est sûrement parceque je n'ai fait que du C++).
Vas-y, lance toi, c'est tellement bien la prog ;).
Merci pour ce lien très instructif mais il y'a quand, même 1 mot que je n'ai pas compris que veut dire la portabilité?
Un code portable est un code qui pourra compiler et s'exécuter sur plusieurs OS / plateformes, qui ne dépend donc pas d'une technologie ou API propre à un système en particulier.
Et toi Laurent, t'as commencé à quel âge ? Je crois que tu l'avais déjà dit, mais je ne m'en souviens plus :aie:.
Ca c'est clair! Merci:lol: :yaisse2:
Salut,
Faisant du Java tous les jours, je peux te dire que c'est un langage assez simple, plus simple que le C++ selon moi.
Mais le concept fondamental de la programmation orientée objet est présent dans les deux langages. Apprendre le Java ou le C++, c'est non seulement apprendre une syntaxe, mais apprendre un concept de programmation.
On peut apprendre la programmation orientée objet, sans passer par la programmation procédurale ( comme en C par exemple ). Mais à mon avis c'est une erreur. On peut programmer en procédural avec du Java ou du C++, mais on omet alors volontairement le vrai interêt de ces langages.
L'avantage qu'offre le C par rapport aux autres langages est spécifiquement son bas niveau. Etant donné que tu dois te soucier de choses qui pour d'autres langages sont gérées automatiquement ( gestion de la mémoire, utilisation de pointeurs ) tu apprends par une compréhension de bas niveau de l'architecture d'un ordinateur. Ce n'est pas super amusant de gérer la mémoire ou de faire de l'arithmétique de pointeurs, mais quand on a compris comment ça marche, tu es beaucoup plus au courant du fonctionnement interne de ta machine.
Je dirais même que faire un peu d'assembleur peut être vraiment bien aussi, pour encore mieux comprendre comment le processeur fonctionne..
Je te conseille de regarder ce site : http://rmdiscala.developpez.com/cours/
J'aime bien ce cours, il est bien fait, progressif, et commence par les fondements de la programmation. Si tu vas trop vite, tu vas apprendre des choses certes, mais tu vas perdre du temps le jour où tu auras à apprendre des concepts de base que tu aurais déjà dû maitriser avant de concevoir des programmes d'un plus haut niveau.
Bon courage en tout cas :) le tout est de s'amuser, et d'aimer ce qu'on fait ;)
J'avais fait un peu de QBasic à 9 ans, mais sinon j'ai réellement débuté vers 17 ans.Citation:
Envoyé par Bakura
Pour ma part vers 14-15 ans programmation sur calculatrice Casio.
Des mini-jeux à la con en langage B je crois (bah quoi qui n'en a pas fait me jette la première pierre :aie: ).
Et plus sérieusement à partir de 17 avec Pascal, C, Java, C++ pour ne citer que les plus connus.
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 :aie:
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.
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?Citation:
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 sujet :) )Citation:
Envoyé 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 sujet :) A+
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.
Absoluement pas... il n'y a pas de débat à avoir... C'est juste une constation sur les rapports de *notre* base de bugs.Citation:
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é.Citation:
Envoyé par nicroman
Je plussois.Citation:
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 ! :D
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!!:lol: :lol:
Pour l'instant ça va mais puta.. qu'est ce qu'il ressemble au C++ et en plus sans POO,:mrgreen: pour vous c'est nul mais pour moi qui débute c"est génial!:yaisse2:
Mauvais cours de C++, changer de cours de C++.
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....Citation:
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 :D
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é??Citation:
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 ;)
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.
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" ;) A comparer avec "Copy-Change", "Typo", "Behavior", "Backend logic", ...Citation:
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.
Oui encore, dans la plupart des cas, mais pas toujours, en tout cas pas dans la partie "gestion de mémoire" :)Citation:
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.