IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

C ou C++ ? Lequel choisir ?


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2002
    Messages : 2
    Points : 10
    Points
    10
    Par défaut C ou C++ ? Lequel choisir ?
    Bonjour à tous
    J'aimerais apprendre la prog en C ou C++ mais je ne sais pas quel langage choisir (ils ont peu de différence parait-il). Je souheterais faire de la programmation réseau et de la prog sur Linux. Voila merci de tous vos conseils à venir @+

  2. #2
    Membre à l'essai
    Inscrit en
    juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    C++ -> la programmation oriente objet qui permet d'ecrire du code plus clean, plus reutilisable, etc.

  3. #3
    Ol'
    Ol' est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2002
    Messages : 56
    Points : 67
    Points
    67
    Par défaut
    Salut,

    Je pense aussi qu'il vaut mieux commencer par le C++ parce que si tu as un niveau correct en C, cela te généra par la suite en C++ car tu vas tenter des bricolages qui n'ont pas lieu d'être.

    De plus, la POO te permettra de passer plus facilement à Java ou autre.

    D'un autre côté, il me semble que la programmation "fonctionelle" (non OO) est plus facile à apréhender pour un débutant.

    A toi de voire
    Ol'

  4. #4
    Membre à l'essai
    Inscrit en
    juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Ol'
    Salut,

    Je pense aussi qu'il vaut mieux commencer par le C++ parce que si tu as un niveau correct en C, cela te généra par la suite en C++ car tu vas tenter des bricolages qui n'ont pas lieu d'être.

    De plus, la POO te permettra de passer plus facilement à Java ou autre.

    D'un autre côté, il me semble que la programmation "fonctionelle" (non OO) est plus facile à apréhender pour un débutant.

    A toi de voire
    Ol'
    La programmation fonctionnelle à l'avantage d'être plus expressive (du moins pour le langage que je connais -> scheme), est de ne pas se préoccuper de problème trop bas niveaux (pointeur, memory management,etc. <-> dynamic binding, dynamic typing, garbage collection, etc.) et est donc plus facile à apprendre. Le seul problème est qu'elle n'a pas beaucoup d'application en entreprise (à cause de ces performances entre autre) comparé au C (langage procedural) ou le C++ (langage oo) (-> aux langages impératif quoi)... le C je le trouve vraiment trop horrible (ainsi que le C++ d'ailleurs), mais bon ca c'est mon avis...

  5. #5
    Ol'
    Ol' est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2002
    Messages : 56
    Points : 67
    Points
    67
    Par défaut
    Salut,

    pouquoi ne cherches tu pas à apprendre le Pascal Orienté Objet (Delphi sous Windows, Kylix sous Linux). Il parrait que c'est plus facile que le C/C++

    Ol'

  6. #6
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 22
    Points : 40
    Points
    40
    Par défaut Re: C ou C++? lequel choisir?
    ça, c'est génial !!!

    Citation Envoyé par strategos
    J'aimerais apprendre la prog en C ou C++
    et on lui répond : apprend java ... pascal .... etc...

    parce que tu n'auras pas à te casser la tête avec les pointeurs et blabla et blabla !

    Mais lui, il veux apprendre C ou C++ !

    Sinon, puisqu'il il ne faut pas se casser la tête, pourquoi ne pas carrément lui proposer de ne pas apprendre à programmer tant qu'on y est !?

    Citation Envoyé par MelloW
    le C je le trouve vraiment trop horrible (ainsi que le C++ d'ailleurs)
    à ce point là !?

    Citation Envoyé par OI'
    si tu as un niveau correct en C, cela te généra par la suite en C++ car tu vas tenter des bricolages qui n'ont pas lieu d'être.
    Je connais déjà très bien le C lorsque j'ai appris C++ et je n'ai pas eu de problème. Il suffit de bien comprendre qu'il s'agit d'un tout autre langage avec une phylosophie complètement différente.

    En fait, il y a des domaines qui se prêtent à la programmation procédurale et d'autres où la programmation objet présente d'enormes avantages.

    Personnellement, je t'encourage à apprendre les deux (le C et le C++) qui ne sont pas du tout en concurence. loin de là.

    Et je t'encourage également à apprendre le Java et en fait, plus tu connais de langages et mieux c'est, car chaque langage à son domaine de prédilection.

  7. #7
    Membre à l'essai
    Inscrit en
    juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 25
    Points : 23
    Points
    23
    Par défaut Re: C ou C++? lequel choisir?
    Citation Envoyé par dsimon
    ça, c'est génial !!!
    Citation Envoyé par MelloW
    le C je le trouve vraiment trop horrible (ainsi que le C++ d'ailleurs)
    à ce point là !?
    Baaah écoute, je connais le Scheme, le Pico (un pti langage de chez nous), le Java, le C/C++, le SmallTalk, et puis qq dialectes de Prolog (mais des versions spécifique pour certains domaines), le Curl (un autre dialecte de Lisp). Si je pouvais éliminer 2 langages de cette liste, ce serait bien le C et le C++. Si en plus, il veut de la programmation sous Linux à coup de Emacs/pico et de make... j peux dire que c'est le plus dur et donc le moins productif des environments que j'ai eu l'occasion d'essayer (et je crois que c'est en partie à cause de cela que le C++ m'a plus ou moins dégouté). J'ai un peu exagèré en disant trop horrible, mais en tout cas les moins chouette à utiliser de ceux que je connaisse (t'imagines ce que je dois penser de l'assembleur -> jamais compris les gens qui faisaient ca)
    Peux-tu me citer un langage grand public, qui soit plus dur à apprendre que le C/C++?

    ps: tu remarqueras, que je lui ai conseillé d'apprendre le C++ dès le premier post -> plus intuitif selon moi.
    ps2: tu remarqueras aussi, que les langages vont avec le temps, c'est à dire que cela ne cesse de monter dans les niveau d'abstractions -> aux services du programmeur. Dans qq cas le bas niveau est nécessaire, mais pas aussi souvent qu'on veuille bien le croire.
    ps3: il est plus facile de commencer par des langages qui font abstraction des pointeurs, du memory management,... puis d'essayer des langages plus compliqué.

  8. #8
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 22
    Points : 40
    Points
    40
    Par défaut
    En fait, MelloW, je crois que tu n'as pas abordé le C et le C++ à un moment où tu avais vraiment besoin d'un langage de ce type. Sinon, tu aurais probablement une autre opinion de ces langages.

    Pour ma part, le C et le C++ sont les langages les plus chouettes que j'ai eu l'occasion d'utiliser et j'adore les utiliser dans l'environnement Unix avec les outils classiques (VI, make, cc, ...etc...). C'est uniquement une question de goût et je conçois complètement que d'autre personnes aient d'autres points de vue.

    Avec un peu d'habitude, ces outils constituent un environnement bien plus productif qu'on le dit. Et pour ce qui est des pointeurs du C (et donc du C++), ils permettent d'optimiser un code d'une façon incroyable.

    En fait, ce sont des langages conçus dans une optique système et en conséquence, ils ont des caractéristiques en fonction de ça. Evidement, cela les rend particulièrement permissifs et un peu plus "case tête" que d'autres langages, mais pour faire de la programmation système, il n'y a pas mieux. Et c'est justement ça que je trouve passionnant.

    Et puis les logiciels conçus en C/C++ sont tellement plus rapides que ceux créés dans n'importe quel langage interprêtés où ceux en pseudo code s'exécutant dans des machines virtuelles.

    Le C/C++ produit tout de même le code le plus rapide qui soit (après l'assembleur bien sûr) et c'est justement grâce à ces caractéristiques qui te deplaisent tant.

    Maintenant, j'adore aussi Java, PHP, Perl et autres langages de script comme les shells Unix et la commande awk, qui s'utilisent dans d'autres circonstances et qui ne s'opposent pas du tout au C/C++.

    Je ne pense pas qu'il s'agisse d'une question d'époque mais plutôt d'un choix à faire en fonction du type de projet.

    Il est des projets qu'il ne serais pas concevable à créer dans des langages de plus haut niveau d'abstraction de C/C++ et d'autres au contraire qu'il serait stupide d'envisager avec eux.

    Mais certains projets se prêtent aussi bien à l'usage de C/C++ que d'un autre langage comme Java par exemple, et le choix tient uniquement aux préférences de leurs auteurs. Mais dans ces cas là, il est facile de vérifier les différences de vitesse d'exécution que l'on obtiens et on constate alors que le C/C++ à encore un bel avenir devant lui.

  9. #9
    Membre à l'essai
    Inscrit en
    juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Je suis d'accord avec toi, peut-être que je manque d'experience en C/C++... mais cela ne changera pas mon avis -> qu'il est plus interessant/facile de commencé avec des langages d'un plus haut niveau. Les performances m'interessent guere (plutôt l'expressivité d'un langage qui m'interesse)... et vu le nombre de logiciels qui en ont reelement besoin est assez bas, je prefere les langages plus "simple" (-> tres relatif).

  10. #10
    Membre averti

    Inscrit en
    juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 97
    Points : 300
    Points
    300
    Par défaut
    Commences par le C car rien ne s'y passe "derrière ton dos", c'est mieux pour comprendre.

    Quand tu arriveras au structures, gestions d'erreur et/ou allocations/désallocations, alors il sera temps de passer à la surcouche C++ qui gère cela mieux.
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

  11. #11
    Membre à l'essai
    Profil pro
    Développeur
    Inscrit en
    juillet 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : juillet 2002
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    C'est marrant comment à partir d'une simple question :
    C ou C++? lequel choisir?
    on part tout de suite en vrille sur le débat du meilleur langage, débat qui à mon avis n'a pas lieu d'être car chaque langage répond à des besoins différents : on utilisera pas le C pour du haut niveau mais Java n'a pas sa place dans la prog système.

    Le pire est que ce message aurait très bien plus être placé dans un autre sujet.

  12. #12
    Membre confirmé

    Développeur Web
    Inscrit en
    mars 2002
    Messages
    409
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mars 2002
    Messages : 409
    Points : 624
    Points
    624
    Par défaut
    Pour de la prog système/réseau, moi je conseillerai le C perso... Si c'est pour faire de petits utilitaires c'est le mieux.

    Par contre C++ est pas mal en concurrence avec Java. Donc si tu hésites à prendre le C++, hésite aussi à prendre Java.

    Jette peut-être un coup d'oeil au Perl (et Python?) aussi... Je ne sais pas ce qu'ils vallent exactement en prog réseau, mais pour de petits utils ils sont sympa.

    Thomas

  13. #13
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : avril 2003
    Messages : 6 245
    Points : 8 560
    Points
    8 560
    Par défaut
    Le C ET le C++, sans hésitation, il ne répondent pas aux mêmes besoins, donc ça dépend des tiens !

    Sinon c'est bien d'essayer en même temps un langage de plus haut niveau, ou à la limite papilloner entre plusieurs, de façon à éviter de se fixer dans la logique/syntaxe du C/C++. Mais la syntaxe du C est quand même assez formatrice pour la plupart des autres langages pour peu qu'on sache s'adapter.

    Je te conseille effectivement comme lAffreuxthomas de t'intéresser aux langages de scripts, et parmi eux les trois 'semi-classiques' Perl, Python et Ruby (qui propose pas mal de truc sympa en provenance du Perl avec une POO (beaucoup) plus poussée). Ces trois langages offrent une polyvalence et une expressivité très appréciable pour des 'petits' programmes.

  14. #14
    Membre du Club
    Inscrit en
    juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 55
    Points : 62
    Points
    62
    Par défaut
    Haaaaa, C ou C++, l'eternel debat.....

    Le C ET le C++, sans hésitation, il ne répondent pas aux mêmes besoins, donc ça dépend des tiens !
    Tout a fait d'accord avec toi Jedai.
    Tout depend du type de programmation que tu desires faire. Ou de celle qu'on t'imposera....

    Ils correspondent a deux philosophies totalement differentes.
    Donc a partir de la pourquoi ne pas apprendre les deux ?

  15. #15
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 827
    Points
    10 827
    Par défaut
    D'un point de vue pédagogique, entre le C et le C++ je conseillerai de commencer par le C++. Sans même parler de notions objets, il propose un niveau d'abstraction supplémentaire.

    Cela permet de retarder l'étude de sujets complexes (comme les pointeurs et ce qui en découle : tableaux et chaines de caractères) et d'en ignorer des totalement inninterressants (syntaxe de printf, scanf).

    Evidemment, le C++ est plus complexe et sa maitrise demandera plus de temps que celle du C ; mais un débutant fera plus de choses avec le C++ qu'avec le 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...

  16. #16
    Membre actif
    Avatar de mathk
    Inscrit en
    décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 211
    Points : 229
    Points
    229
    Par défaut
    Moi j'ai commencer par c puis c++ et java et j'ai trouver cela coohérent car c++ et quand même trops complexe pour qu'on puisse déveloper du premier coup car les erreurs sont beaucoup plus cacher. Ce que je veut dire c'est que même si ton program marche ca veut pas dire qu'il est corect.
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  17. #17
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 827
    Points
    10 827
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char buf&#91;20&#93;;
    sprintf&#40;buf, "voilà une petite chaine de caractères"&#41;;
    if &#40;buf == "voilà une petite chaine de caractères"&#41;
         printf &#40;"youpi!"&#41;;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std&#58;&#58;string buf;
    buf = "voilà une petite chaine de caractères"&#41;;
    if &#40;buf == "voilà une petite chaine de caractères"&#41;
         std&#58;&#58;cout << "youpi!"&#41;;
    Des erreurs cachées en C++ et pas en C ?

    Si vous trouvez que mon exemple en C est trop simple, vous pouvez aussi le remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define CH "voilà une petite chaine de caractères"
    char * buf = &#40;char*&#41; malloc&#40;strlen&#40;CH&#41;, 1&#41;; 
    strcpy&#40;buf, CH&#41;;
    On ne me fera pas croire que les newbs ne font jamais ce genre d'erreur -- celle du premier exemple est encore bien plus vicieuse en fait je trouve.

    Et nombre de fois que j'ai eu à expliquer en TP que non, on n'écrit pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int * i;
    scanf&#40;"%d", i&#41;;
    (remplacer scanf par n'importe quelle fonction qui doit renvoyer quelque chose via ses paramètres) Franchement, j'aurais préféré que l'on se concentre sur des aspects plus importants comme la structure du programme ou les communications avec les dispositifs externes. Mais bon. Ce genre de détails inintéressants font parti des prérequis à savoir pour les programmes les plus basiques en C.

    Programmer en C++ (et pas en C avec des classes) nous préserve d'énormément d'erreurs par rapport au C. Par contre celles qui restent sont plutôt de la catégorie "explose en pleine poire".
    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...

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2004
    Messages : 2
    Points : 6
    Points
    6
    Par défaut Le C++ : Un langage C enrichi, complexifié.
    En 1989, l'apprentissage du langage C était expliqué par un livre rédigé par les créateurs de ce langage (Proche de la gestion mémoire) :
    Brian Kerningham and (et) Dennis Ritchie.
    Après un mois de travail quotidien à lire le cours et effectuer les exercices de programmation, le livre avait livré son savoir.

    Récemment le C ANSI est apparu : Un effort pour universaliser ce langage (De manière comparable : Que l'on soit à Tokyo ou Paris, la grammaire française ne varie pas.).

    Début 1990, le langage C++ a fait son apparition. Le système de supervision du réseau Transpac (Technique X.25 de l'architecture en 7 couches OSI) en a bénéficié.

    De l'avis de tous les programmeurs, ce langages complète le langage C.
    Pour expliquer le lien qui unit ces deux langages :
    le C est inclus dans le C++.
    En conséquence : Tout programme en langage C est un programme en C++.

    Si vous disposez d'un environnement de programmation en C++, apprenez le C (Un C++ restreint), puis les notions propres à l'inovation C++ : Les notions de programmation objet (Héritage, classe...).

  19. #19
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 273
    Points : 10 827
    Points
    10 827
    Par défaut
    Non, le C n'est pas un sous-ensemble du C++ -- y a pas de VLA en C++ p.ex.
    De plus, pour faire des choses similaires, en C++ on va éviter des continuer de se ballader avec les sources d'erreurs qui viennent du C. On utilise les abstractions dédiées (ou alors on aime débugguer et on n'engage que des stagiaires surdoués ou rigoureux) => string, vectors, passage d'arguments par référence, ...

    Bref, le C++ a cessé d'être le "C with classes" il y a longtemps maintenant. Inutile de trainer ce fardeaux et de l'imposer aux débutants qui ont bien d'autres choses intéressants à apprendre lors des premières leçons que la manipulation des pointeurs.

    (désolé si je radote)
    PS: la lecture de la mini FAQ sur le site de Stroustrup est des plus interressante.
    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...

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2003
    Messages : 247
    Points : 268
    Points
    268
    Par défaut
    Rien de tel que de bien connaitre le C++ pour apprécier à sa juste valeur le C ;-).

    Je pensais aussi que C n'était qu'un sous ensemble du C++. Mais aujourd'hui, les deux languages ont bien des buts différents.

Discussions similaires

  1. VARCHAR & CHAR - comment savoir lequel choisir !?
    Par Thierry8 dans le forum Requêtes
    Réponses: 15
    Dernier message: 18/12/2005, 21h54
  2. Lequel choisir???
    Par t_om84 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 27/10/2004, 15h02
  3. Curseur et lock : Les différence & lequel choisir
    Par BilTCD dans le forum Access
    Réponses: 2
    Dernier message: 22/10/2004, 15h03
  4. [FEDORA] Lequel choisir entre Fedora i386 et x86 pour un xeon?
    Par Oberon dans le forum RedHat / CentOS / Fedora
    Réponses: 7
    Dernier message: 13/07/2004, 15h52
  5. [Conseil] Glut vs SDL, lequel choisir
    Par Mathieu.J dans le forum GLUT
    Réponses: 15
    Dernier message: 08/06/2004, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo