Forum Programmation.c++ que choisir C où C++

Posté par  .
Étiquettes : aucune
0
3
mai
2005
bonjour,

Je cherche un conseil, sur le choix d'un deuxième langage ?

Je suis sous Mandrake9.2 est j'ai déjà fait une initiation concluante en C, mais je voudrai savoir si je pousse plus en avant l'exploration où bien je passe directement au C++.

J' apprend python un language qui me convient bien (synthaxe, bloc indender, objet, etc), qui sera mon language principal, mais comme on peut écrire des modules en C où C++ pour une question de rapiditée la question se posse ?

Merci,
  • # encore plus loin

    Posté par  (site web personnel) . Évalué à 0.

    tente le C# avec mono.
    • [^] # Re: encore plus loin

      Posté par  (site web personnel) . Évalué à 2.

      ou sur la même plateforme, IronPython. C'est du Python mais avec les libs de Mono et les perfs qui vont avec, tout en conservant la portabilité et avec l'avantage d'avoir une compilation statique.
      Cerise sur le gâteau : une bibliothèque écrite en Python pourra être réutilisée en C# qui a des possibilités d'interaction forte avec le langage C, et ceci de manière portable (ce qui est rare pour être noté).
  • # Objet

    Posté par  (site web personnel) . Évalué à 5.

    Il n'est réelement utile de passer à C++ que si tu comptes programmer en objet. Trop de gens font du C "standard" en C++ en disant qu'ils programment en C++ (ce qui est rarement utile en langage procédurial).
    • [^] # Re: Objet

      Posté par  . Évalué à 2.

      Merci pourr ta réponce,
      Ne pourrai-je utiliser le python pour programmer en objet, et garder le C pour le reste.

      Bien que le reste ? je ne sais pas ce que cela pourrai être.
    • [^] # Re: Objet

      Posté par  (site web personnel) . Évalué à 2.

      Euh ...

      Rien que pour la manipulation des string et des fichiers, je suis content d'avoir le ++ derrière le "C" (même si je préfèrerais encore programmer dans un autre langage mais ça, c'est une autre histoire).
      • [^] # Re: Objet

        Posté par  . Évalué à 1.

        Merci, pour tous ces conseils.

        J'y vois plus clair maintenant, je compte continuer avec Python pour bien apprendre à programmer, puis faire du C++ car on pourrai faire du C avec, donc pourquoi se priver "deux language en un" et garder un language objet comme Python.
  • # Ça dépend !

    Posté par  . Évalué à 2.

    Salut,

    Ben en fait, le choix peut se faire sur différents plans ; mais ce sera toujours en fonction de ce que tu souhaites faire...

    Si tu cherches à faire du code optimisé et performant (genre des gros calculs scientifiques) sûrement que le C sera mieux que C++

    Si tu cherches à faire du code modulaire, clair (lisible), maintenable facilement, et pas forcément performant sûrement que le C++ conviendra mieux.

    Maintenant, je suis sûr d'une chose, c'est que les performances dépendent énormément des algorithmes et structures de données utilisés (et quasiment indépendant du langage utilisé) : un programme C optimisé avec de mauvais algos, se fera battre à plates coutures par le même programme en Java avec de bons algos...


    Je ne sais pas si j'ai fait avancer le schmilblick, mais voilà mon point de vue :)
    • [^] # Re: Ça dépend !

      Posté par  . Évalué à 5.

      un programme C optimisé avec de mauvais algos, se fera battre à plates coutures par le même programme en Java avec de bons algos...

      Et le même programme en C avec de bons algos battra celui java...
      • [^] # Re: Ça dépend !

        Posté par  (site web personnel) . Évalué à 1.

        En supposant que le compilateur C soit plus performant que le JIT Java qui peut faire des optimisations à la volée suivant le processeur, alors que le programme C peut avoir été compilé pour une plateforme générique sans possibilité d'optimisations spéciales (typiquement i386).
        • [^] # Re: Ça dépend !

          Posté par  . Évalué à 3.

          Non on est en open source donc tu as les sources donc tu peux recompiler pour ta plateforme avec toutes les optims de la mort qui tue.

          Et puis les optims à la volée c'est vraiment efficace? Le temps qu'il passe à faire l'optim à la volée ne bouffe-t'il le temps gagné sur l'éxecution de l'optim? (je précise que je n'y connais rien en JIT)
          • [^] # Re: Ça dépend !

            Posté par  (site web personnel) . Évalué à 2.

            Non on est en open source donc tu as les sources donc tu peux recompiler pour ta plateforme avec toutes les optims de la mort qui tue.
            Tu peux mais 90% des gens s'en balances et font urpmi/yum/apt-get install machintruc et c'est un binaire générique qui arrive sur leur machine.

            Le temps qu'il passe à faire l'optim à la volée ne bouffe-t'il le temps gagné sur l'éxecution de l'optim?
            Evidemment que cela peut prendre du temps, en général d'ailleur on le sent à la première exécution, il y a justement cette première étape de "pré-compilation" en code natif. Enfin si l'algo en question est souvent réutiliser après je te laisse deviner les gains de perfs.
            Si les langages qui font appellent à JIT sont plus lent, ce n'est pas à cause de cela, c'est plutôt pour d'autres raisons : gestion mémoire, vérification des références, etc.


            Enfin dans tous les cas c'était juste histoire de montrer que le langage ne fait pas tout, il faut aussi tenir compte du boulot du compilo.
  • # Les deux.

    Posté par  (site web personnel) . Évalué à 3.

    C et C++ sont tous les deux supportés convenablement sous les Unices libres, donc tu peux facilement utiliser l'un, l'autre ou les deux en même temps.
    Il y a compilateurs, bibliothèques par centaine, débuggeurs, profilers, environnements de développement plus ou moins convis, etc, le tout plus ou moins sexy.
    D'ailleurs, tu peux utiliser les deux en relation avec python. Nan, franchement, faut que tu fasses ton choix en fonction de la bibliothèque que tu veux utiliser, de la conception du code que tu imagines, etc.
  • # Java ou C++

    Posté par  . Évalué à 4.

    Si c'est une initiation concluante, je te conseille de pousser un peu plus avant le C avant de faire quoi que ce soit d'autre, sinon tu risques d'être superficiel dans tous les domaines. Surtout que le C, c'est assez facile. Il n'y a pas trop de concepts tordus à retenir. Donc si un langage devait te servir de base, ou de référence (ce qui est rarement une bonne idée en informatique), ce serait celui-ci.

    Après, tout dépend, là encore, de ce que tu comptes faire. Visiblement, tu comptes te tourner vers la programmation objet. Donc :

    - Si tu souhaites simplement disposer d'un langage sympa pour faire quelques concepts objets, faire des scripts, et t'en servir pour écrire les outils qu'il te manque à un moment donné, Python est très à la mode.

    - Si tu comptes en faire ton métier et trouver un boulot avec, Java a la côte en ce moment en entreprise.

    - Si les concepts compliqués de prime abord ne te font pas peur, que tu préfères avoir un langage complet à un langage simple, et que tu veuilles trouver quelque chose qui soit l'équivalent du C dans le milieu objet, à savoir quelque chose qui te permette de générer des exécutables qui ne reposent pas sur un environnement ou une machine virtuelle, et que tu comptes tirer profit de la puissance de ta machine, alors le C++ est fait pour toi.

    En ce qui me concerne, c'est le C++ que j'utilise professionnellement.
    • [^] # Re: Java ou C++

      Posté par  . Évalué à 2.

      Merci, pour tous ces conseils éclairés j'en retiends plusieurs

      -le C, c'est assez facile il devait te servir de base, ou de référence pousse un peu plus avant le C.

      -Python est un langage sympa pour faire quelques concepts objets, faire des scripts, et t'en servir pour écrire les outils qu'il te manque à un moment donné.

      Pour la programmation objet, le Python ne ferait-il pas l'affaire, car je ne veux pas en faire mon métier mais juste un loisir et peut-etre participer modestement à quelques petit proget.
      • [^] # Re: Java ou C++

        Posté par  . Évalué à 3.

        Pour la programmation objet, le Python ne ferait-il pas l'affaire, car je ne veux pas en faire mon métier mais juste un loisir et peut-etre participer modestement à quelques petit proget.


        Je crois que dans cette situation, le mieux est encore de faire ce qu'il te plaît. Essaye les trois langages pendant deux à trois semaines chacun, puis fais ton choix.

        Personnellement, je ne fais pas de Python, mais ce langage a bonne réputation, surtout dans la communauté du libre. Un certain nombre de projets Python ont été développés à présent et tu devrais y trouver ton bonheur.
  • # que choisir C où C++

    Posté par  (site web personnel) . Évalué à 3.

    Petites remarques et nuances en vrac:
    - Nul besoin de faire de l'OO en C++ pour profiter du C++. La généricité est un apport non négligeable. De même que les std::string, les références et autres abstractions qui le rendent d'ailleurs bien plus simple pour les débutants. Un des exemples à ce sujet est la comparaison des codes qui permettent de lire, stocker et trier un nombre quelconque de chaines de tailles quelconques (non fixées à la compilation) (tout en ayant au final un code sûr et non sujet aux buffers overflow, et autres joyeusetés)

    - Cette remarque précédente n'empêche pas que coder en C++ comme en C est une fort mauvaise approche qui donne pas particulièrement de bonnes choses.

    - Cela n'empêche pas non plus que le C++ est plus vaste et plus complexe. Bien plus complexe.

    - Concernant les perfs, C++ n'est pas lent plus que le C. C'est le code et le design de l'application qui vont ralentir, accélerer (cf std::sort vs qsort) l'exécution, ou de rien changer (une indirection reste une indirection). Pour le domaine de calcul scientifique en particulier, depuis quelques temps déjà, des benchmarks montrent un C++ qui rivalise avec le C et le fortran tout en permettant une expressivité plus "mathématique".
    A noter toutes fois, que tous les compilos ne sont pas égaux devant le C++. Tous n'optimisent pas aussi bien.

    - Il existe des bibliothèques comme boost.python qui facilitent l'interaction du C++ avec Python -- je ne l'ai pas encore essayée personnellement.
    • [^] # Re: que choisir C où C++

      Posté par  (site web personnel) . Évalué à 2.

      > - Concernant les perfs, C++ n'est pas lent plus que le C.

      Oui et non...
      - Si tu fais du C et que tu le compile en tant que C++, c'est vrai.
      - De même, certaines des fonctionnalités de C++ sont gérées à la compilation.
      - Par contre, d'autres (polymorphisme, gestion de la mémoire, etc) nécessitent l'inclusion de code qui est exécuté quand le programme tourne, et donc le ralentissent. Ceci dit, ce code étant particulièrement optimisé, il est normalement plus rapide que celui que tu écrirais si tu essayais de faire un pseudo polymorphisme en C, par exemple (pour la gestion de la mémoire, j'ai plus de doutes...).
      • [^] # Re: que choisir C où C++

        Posté par  (site web personnel) . Évalué à 1.

        Ce que je voulais dire, à la dyslexie près, c'est qu'il n'est ni plus rapide ni plus lent. Pour un même code C, il ne devrait pas y avoir d'impacts de performances, pour une transposition "objet" de la même chose non plus.
        Je pense que l'on se rejoint assez en fait.
        Indirections vs liaisons tardives (mise en oeuvre du polymorphisme d'héritage) c'est un peu le même combat -- voir le draft n1359 pour des exemples de chiffres. Pour la mémoire, je ne suis pas persuadé non plus que par défaut il y ait une différence sur les types POD.

        Toujours est-il, pour ce qui est des performances, voilà de la lecture pertinente: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1359.pdf(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.