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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1
    Par défaut Choix
    comme ce qui a été dit par beaucoup jusque là
    le C et le C++ sont différents dans la manière de coder et correspondent à des attentes différentes des programmeurs.

    Je suis étudiant en informatique, c'est peut-être le professionalisme qu'on tente de m'inculquer qui influence mon avis,
    mais je ne trouve pas que l'assembleur ou le C soient moins interressants

    J'ai appris énormément avec l'assembleur que je comprenais mal en faisant du C au début,

    Quant aux abstractions et aux langages de plus hautes couches, quand on veut faire des applications sans se soucier de la machine c'est plus avantageux c'est sur!

    Mais par exemple en informatique industrielle, ou les machines doivent réagir de façon immédiate, un langage de bas niveau est utile, (je sais que l'assembleur aujourd'hui n'est plus très interressant) mais le C est extremement rapide et convient mieux à certaines taches

    Pour conclure je dirais que si c'est juste pour faire de la programmation sans se soucier du reste, apprendre un langage haut niveau est interressant

    Mais pour un bon informaticien qui comprend ce qu'il fait , mieux vaut commencer par un langage bas niveau pour comprendre ce qu'il se passe

    apprendre tout de suite le C++ n'est pas toujours idéal pour regler par exemple les erreurs du genre "erreur de segmentation"!

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 219
    Par défaut Bonjour Insidious
    Moi je propose le C++, parce que je suis sur que tu veux coder des jeux ou autrechose avec l'utilisation de pointeur. Bref, le C va surement disparaître d'ici quelques années ou être encore moins populaire...

    Bonne chance


    http://c.developpez.com/
    Alex

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par alexandrebergercyr
    Moi je propose le C++, parce que je suis sur que tu veux coder des jeux ou autrechose avec l'utilisation de pointeur. Bref, le C va surement disparaître d'ici quelques années ou être encore moins populaire...


    J'espère que tu ne crois pas réellement ce que tu dis...

    Il est certain que le C n'est pas un langage à la mode que les boîtes de consultants et autres "experts" en informatique pronent. Mais il est également vrai que dans certains domaines, les contraintes imposent l'utilisation de langage dont la compilation est proche du code source... pour les certifications Et le C++ et nombreuses formes de polymorphisme et d'héritage rend ce travail difficile (même si les travaux actuels sur systemC tendent à contredire ce que j'avance)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Rappellons aussi que beaucoup de microprocesseurs se programment en C, que le noyau de Linux est en C, qu'il est encore enseigné dans la grande majorité des formations informatiques...

    Le C est un langage qui mettra un temps fou à disparaître. Certes il n'est pas encore à son apogée, mais il ne se porte pas si mal.

    Et je ne vois pas le rapport entre le comparatif C/C++ et les pointeurs... On peut en utiliser moins en C++, mais ils sont toujours présent.

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Woufeil
    Rappellons aussi que beaucoup de microprocesseurs se programment en C
    Euh...En général on utilise plutot l'asm pour ce genre de délicatesse. Il est vrai que le C s'interface très bien avec l'asm mais tout de même...

    Le C est un langage qui mettra un temps fou à disparaître. Certes il n'est pas encore à son apogée, mais il ne se porte pas si mal.
    Parce que tu crois vraiment qu'il disparaitra?

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gorgonite
    Et le C++ et nombreuses formes de polymorphisme et d'héritage rend ce travail difficile (même si les travaux actuels sur systemC tendent à contredire ce que j'avance)
    Tu as des pointeurs sur l'utilisationde systemC pour autre chose que la conception de hard ou du co-design?

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Tu as des pointeurs sur l'utilisationde systemC pour autre chose que la conception de hard ou du co-design?

    en fait, je parlais du systemC comme un exemple de langage "haut niveau" sur lequel on fait de l'analyse statique
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 146
    Par défaut
    Contrairement à ce que la plus part de vous croivent, C++ ne sert pas seulement à créer des jeux , c'est vrai qu'il est le langage parfait pour ça, mais il peut faire plus, C++ est différent à C, par sa syntaxe claire et sa simplicité.

  9. #9
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Discussion passionnante, vraiment. Je vais donner mon avis totalement subjectif. Oui, subjectif : autant on peut trouver des qualités comparatives objectives pour chaque langage en termes de types d'applications, autant en terme d'apprentissage c'est beaucoup plus flou.
    Ni le C ni le C++ n'étant des langages d'apprentissage, je vais partir du principe que strategos a déjà les bases d'algorithmique.
    Mon histoire personnelle avec différents langages :
    J'avais déjà appris à programmer en Basic, en Pascal et en CAML (pour lequel je garde une tendresse particulière) avant d'aborder les langages dont il est question ici.
    Et on m'a fait d'abord étudier le C. Langage simple. Enfin, simple... Dans le sens où il a relativement peu d'instructions natives. Notre prof nous l'avait décrit comme un langage de "moyen niveau", à savoir assez proche du bas niveau pour qu'on doive en tenir compte mais avec une possibilité de s'en abstraire quelque peu.
    Les pointeurs. Ah, les pointeurs ! Au risque de paraître prétentieux, la notion de pointeur ne m'a jamais posé la moindre difficulté. Je ne sais pas pourquoi, peut-être les ai-je tout de suite compris d'une façon efficace (genre "un pointeur ne contient pas d'information, mais indique où se trouve une information", un peu comme une entrée d'un index d'encyclopédie en n volumes - je ne sais plus, c'est loin maintenant). Mais le concept de pointeur, à mon avis, introduit doucement à la notion de mémoire et de l'occupation de celle-ci. Ce n'est pas un concept très compliqué à manier, à mon avis, mais il demande de rester bien concentré pour ainsi dire, sous peine de s'emmêler les pinceaux.

    Ensuite, on m'a fait étudier le C++. Moins permissif, c'est certain. D'ailleurs, je trouve l'argument de Gnux selon lequel, en apprenant le C++ d'abord, on évite de prendre certaines mauvaises habitudes du C, pas inintéressant (il m'avait traversé l'esprit en lisant les premiers posts). Personnellement, je l'estime erroné, cependant. À condition d'avoir eu l'occasion d'expérimenter et de commettre suffisemment d'erreurs dans un environnement sécurisé, la grande permissivité du C enseigne à la dure d'importantes leçons de rigueur qui sont utiles dans tous les domaines de programmation, y compris la POO. De plus, même si le C++ n'est plus tout à fait seulement un sur-ensemble du C, la syntaxe du C en reste la base principale. Et puis, la famille syntaxique du C est vaste.
    Il y a des raisonnements qui s'appliquent au C et qui ne s'appliquent pas au C++ et vice-versa, mais j'ai intuitivement l'impression que, si l'on note R(<nom du langage>) l'ensemble des raisonnements applicables à un langage et Cardinal(<ensemble>) le cardinal d'un ensemble, on a : Cardinal(R(C++)-R(C))>Cardinal(R(C)-R(C++)), ce qui peut rendre plus difficile de bien comprendre le C après avoir appris le C++ que l'inverse.

    Et, pour l'anecdote, je suis en train d'essayer de réapprendre le C++ après avoir appris et pratiqué le Java : pas simple de faire la part de deux langages se ressemblant autant mais ayant autant de différences fondamentales.

  10. #10
    Membre éprouvé Avatar de siplusplus
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Par défaut
    Salut,
    En complément à ce que Schmorgluck disait, j'ajouterais que apprendre
    un langage seul ne suffit pas et surtout lorsqu'on débute. Outre le fait du
    choix d'un langage, l'algorithmique, les mathématiques et d'autres branches
    sont aussi indispensable. Car les langages ne sont qu'un moyen et non une
    solution. Ce serait comme dire "faut-il parler français ou québécois
    (les moyens) pour faire passer un message (la solution)?".
    Cela est aussi valable pour les autres discussions du type
    "langage x mieux que y?".

    Ceci n'est bien sur valable que pour un apprentissage à finalité professionnelle.
    Dans ce cas, le langage choisi n'est qu'un moyen de mettre en pratique une
    théorie. Pour renforcer cette théorie, la pratique sera nécessaire également
    pour pouvoir comprendre les mécanismes de compilations, "débuggages",
    etc...
    Ainsi, par rapport au c++, avec le c tu auras la possibilité de faire tout ...
    et n'importe quoi. Ce qui t'obligeras à prendre des bonnes habitudes de
    programmation car tu en comprendras le fonctionnement intrinsèque et
    t'éviteras de passer plusieurs jours à traquer les bugs et/ou te noyer dans le
    code.

    Pour ce qui est unix/linux, si je me souviens, je pense qu'on utilise la norme
    ANSI (qui est aussi repris par certains compilateurs sous windows, cf Borland).
    On verra alors que certaines primitives ne sont disponible que pour une
    plateforme donnée (il faudrait que je me replonge dans la doc pour en citer
    quelque-uns). Notons au passage que les compilateurs Microsoft n'adhèrent
    pas à cette norme (je ne sais pas si c'est toujours le cas).

    Autrement si c'est pour passer le temps, il vaut mieux choisir des langages
    plus évolués genre vb (windows) ou python (disponible sur la plupart des
    plate-formes).
    Cela t'éviteras bien des déboires qui risquent au final de te dégouter de la
    programmation.

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    Par défaut
    ANSI est un institut de standardisation américain. Parler ainsi de "norme ANSI" tout court ne veut pas dire grande chose. Ils doivent avoir normalisé un paquet de choses différentes sans grand rapport avec le C ou le C++.

    C et C++ sont normalisés chez ANSI et ISO. Les compilos microsoft ne supportent pas le C99 il me semble. VC2005 se débrouille plutôt bien pour le C++98 (et le 03) -- limite mieux que les GCC 3.x qui sont les seuls installables en trois clics sous windows (les 4.x n'ont pas encore été finalisés pour être facilement distribués avec les distributions MingW et cygwin). Jusqu'à la sortie récente des versions Turbo, Borland était à la bourre en matière de support du C++ ; je ne suis pas sûr qu'il y ait eu beaucoup de progès en fait avec les dernières versions. Après, il y a d'autres compilos qui se débrouillent très très bien (ceux qui encapsulent EDG -> intel, comeau, ...)

    J'ai l'impression que tu voulais parler de la norme POSIX. Dont il existe plusieurs versions, et parfois des petites variations entre les diverses implémentations, de ce que j'ai suivi.
    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...

  12. #12
    Membre confirmé Avatar de moutey
    Inscrit en
    Mai 2003
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 123
    Par défaut
    Salut
    Je pense que ces 2 langages ont l'avantage d'avoir une syntaxe passe partout.
    Tu retrouveras dans bien d'autre langage la même syntaxe.
    Comme tu mentionnes que tu debutes, je pense que les 2 langages s'equivalent vue que je ne pense pas que tu affrontes le concept orienté objet de si tot;
    mais si tu envisages le faire bientot attaque directement C++,comme ca il n'y aura pas de rupture dans ton apprentissage.

    Trés Cordialement

  13. #13
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    salut je pense
    C++ c'est la programmation oriente objet
    c'est mieux
    bonne chance

  14. #14
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    Par défaut
    Citation Envoyé par nonosa
    C++ c'est la programmation oriente objet
    Non. Ce n'est pas nécessaire. Très loin de là.
    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...

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nonosa
    salut je pense
    C++ c'est la programmation oriente objet
    c'est mieux
    bonne chance

    NON c'est un LANGAGE objet , nuance....

    La programmation orientée objet, tu peux la faire en assembleur si tu veux, en Fortran, en C, en n'importe quel langage informatique (et c'est ce qui se faisait avant C++)..

  16. #16
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    D'accord avec le début de ta nuance mais... la programmation orientée objet ne peux pas être intégralement reprise avec les langages que tu cites.

    Certes, avec le type générique void, on peu approcher du polymorphisme, mais pas de la généricité.

    Si la généricité est intrinsèque à l'assembleur (il se fout des types, tout n'est qu'une adresse), il est surement très long d'implémenter l'héritage. Note bien qu'il est évident qu'on y arrive puisque le C++ compile

    On peut certes ré implémenter intégralement l'objet en assembleur, mais ce n'est pas vrai des autres langages procéduraux. Bien qu'avec de la pratique, une bonne connaissance et de l'imagination, on s'en approche.
    Citation Envoyé par souviron34
    NON c'est un LANGAGE objet , nuance....

    La programmation orientée objet, tu peux la faire en assembleur si tu veux, en Fortran, en C, en n'importe quel langage informatique (et c'est ce qui se faisait avant C++)..

  17. #17
    Membre confirmé Avatar de arnaud036
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Par défaut
    Moi je pense que connaitre le C est plus important que le C++, car si tu ve toucher a ton OS (Linux), tu devras connaitre le C.

  18. #18
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut salut
    en fait je prefere que tu commence par le langage C
    j'ai réussi à réaliser un mini-shell sous linux avec

  19. #19
    Membre confirmé Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Par défaut
    Bon, je vais faire le trole en disant que C = thèse, C++ antithèse et C# = synthèse.

    Finalement cela fait une belle dialectique avec un dépassement des conditions préalables.

  20. #20
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Linu6 Voir le message
    Bon, je vais faire le trole en disant que C = thèse, C++ antithèse et C# = synthèse.

    Fait attention, on va te répondre : non, C# = foutaise

Discussions similaires

  1. VARCHAR & CHAR - comment savoir lequel choisir !?
    Par Thierry8 dans le forum Requêtes
    Réponses: 15
    Dernier message: 18/12/2005, 20h54
  2. Lequel choisir???
    Par t_om84 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 27/10/2004, 14h02
  3. Curseur et lock : Les différence & lequel choisir
    Par BilTCD dans le forum Access
    Réponses: 2
    Dernier message: 22/10/2004, 14h03
  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, 14h52
  5. [Conseil] Glut vs SDL, lequel choisir
    Par Mathieu.J dans le forum GLUT
    Réponses: 15
    Dernier message: 08/06/2004, 08h47

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