Partage
  • Partager sur Facebook
  • Partager sur Twitter

Choisir le compilateur, version et standard de c++

Sujet résolu
    19 novembre 2021 à 17:54:00

    Bonjour,

    Je voudrais commencer à developper en C++ et je suis déja perdu sur quelle version du compilateur utiliser et quel standard choisir.

    Donc si quelqu'un pouvait m'éclairer sur les points suivants ce serait super:

    - Quelles differences y a-t-il entre version et standard?

    - Les versions et standards sont ils retrocompatibles? c'est à dire que ce serait suffisant de choisir la dernière version pour debuter?

    PS: j'ai déja beaucoup d'experience sur la programmation pour pouvoir apprendre un nouveau langage. Il n'y que le probleme de l'environnement qui me gène pour l'instant.

    Cordialement,

    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2021 à 18:02:18

      C'est fonction du projet (architecture cible, bibliothèques envisagées, etc...).
      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        19 novembre 2021 à 18:20:43

        Si c'est pour ton développement personnel, prends le compilo le plus récent que tu trouves facilement sur ta machine (un apt-get sur ubuntu..., un msvc sur windows, etc) et bosse avec.

        Coté version du standard, il n'y a aucune raison de viser en dessous du C++17 (comme dans 2017, l'année). Sauf trucs qui évoluent à leur petit rythme (p.ex. redhat), le compilo que  tu auras supportera cette version du standard. Peut-etre même qu'il aura des bribes de C++20.

        PS: le C++ n'est pas si trivial à apprendre correctement. Il existe beaucoup de mauvais cours. Prend p.ex. celui de zeste de savoir. Tu seras aussi guidé pour un environnement.

        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          19 novembre 2021 à 18:38:55

          "version" = "version du compilateur" ou "version du C++" ?

          Chaque compilateur a son propre cycle de développement et ses propres numéros de version (Clang 13, GCC 12). Les normes du C++ sont désignées en fonction de l'année de publication de la mise a jour de la norme (C++11 en 2011, C++14 en 2014, C++17, C++20, C++23).

          Je suppose que tu parles des versions du C++ ?

          Pour les compilateurs, pas de problème : tu peux prendre la dernière version. Aucune raison (sauf cas très très particuliers) de ne pas mettre a jour.

          En general, les nouvelles normes du C++ sont retro compatible (il y a peu de suppression d'un norme a la suivante). Un code écrit en C++98 aura de très forte chance d'être compilable avec le C++20. (Et si ce n'est pas le cas, il n'y aura que des petites corrections syntaxiques mineures a faire). Donc tu peux apprendre et pratiquer avec la dernière norme (C++20 n'est pas encore complètement supportées. Tu peux la tester ou préférer le C++17)

          Par contre, les pratiques changent pas mal. Mais en pratique, cela va dépendre du cours que tu vas lire. Un bon cours te présentera les nouvelles syntaxes et surtout les bonnes pratiques à utiliser. Si tu connais déjà bien la programmation, je te conseille "Tour of C++" de Stroustrup.

          -
          Edité par gbdivers 19 novembre 2021 à 18:40:57

          • Partager sur Facebook
          • Partager sur Twitter

          Rejoignez le discord NaN pour discuter programmation.

            20 novembre 2021 à 11:48:36

            Merci à tous pour vos explications et vos conseils :D

            gbdivers a écrit:

            "version" = "version du compilateur" ou "version du C++" ?

            Ah! Parce qu'en fait une version du compilateur ne correspond pas à une version de C++ ? En Java par exemple un JRE 1.8 compile au plus un programme compilé avec un JDK 1.8 si je ne me trompe... donc ce n'est pas la même chose pour C++?

            -
            Edité par JairygonZ 20 novembre 2021 à 11:53:04

            • Partager sur Facebook
            • Partager sur Twitter
              20 novembre 2021 à 12:28:02

              > Ah! Parce qu'en fait une version du compilateur ne correspond pas à une version de C++ ? En Java par exemple un JRE 1.8 compile au plus un programme compilé avec un JDK 1.8 si je ne me trompe... donc ce n'est pas la même chose pour C++?

              Non. L'écosystème est différent.

              En gros, Java est défini par Oracle, qui décide de ce qu'il veut mettre dedans, et fournit une implémentation de référence https://openjdk.java.net/

              Il y a aussi, pour une version du langage donné, des mises à ajout des outils. Pour java 8, la dernière update distribuée  portait le numéro 311....

              https://en.wikipedia.org/wiki/Java_version_history#Java_8

              Pour C++, il y a des entreprises dont le métier est de fabriquer des compilateurs C++, d'autres qui sont de gros utilisateurs de C++, et il y a un comité qui fait discuter tous ces braves gens pour écrire des propositions à mettre dans le prochain standard (ISO).

              Après, les "écrivains de compilateurs" font ce qu'ils veulent, et ce qu'ils peuvent. Le résultat, c'est que le plus souvent un compilateur donné n'implémente pas 100% d'un standard, et propose en extension des trucs qui ne sont dans aucun standard, pour l'instant.  Pour java, il s'agit d'un "standard de fait".

              En pratique, quand on utilise une des versions de g++ (le célèbre compilateur GNU), on précise à quel standard du langage on se restreint, avec des options -std=c++17 par exemple. Ce qui permet de vérifier que, par inadvertance, on n'a pas utilisé de trucs hors de ce standard.

              -----

              Pour en revenir au sujet : pour débuter, un compilateur qui supporte C++11 devrait faire l'affaire un certain temps avant que ça pose problème.

              Personnellement j'ai souvent besoin pour mes bricoles de std::optional qui était "expérimental" avant C++17 (le genre de trucs qu'on rtouve dans la bibliothèque Boost), mais je ne crois pas que ça soit le genre de choses dont un débutant a besoin tout de suite.

              -
              Edité par michelbillaud 20 novembre 2021 à 12:43:08

              • Partager sur Facebook
              • Partager sur Twitter

              Choisir le compilateur, version et standard de c++

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown