Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Débutant
    Inscrit en
    mai 2006
    Messages
    666
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 666
    Points : 137
    Points
    137

    Par défaut argument pour choisir c++ plutot que du code managé

    Salut,

    Je me pose une question existentielle

    De nos jours quel sont les raisons qui nous poussent à opter pour développer un projet en C++ plutôt que d'utiliser un langage objet managé ?


    D'un côté certains soutiennent que les codes managés sont finalement aussi rapide que du C++.

    D'un autre ces mêmes soutiennent que le time to market est bien meilleur en Java/C# pour ne citer qu'eux.

    Même l'embarqué à l'instar d'android utilise Java.

    Donc au final qu'est ce qui justifie encore aujourd'hui le recours à du C++, hors mis pour des développement de niche, comme les jeux vidéos, les machines virtuelles... ?

    Merci de ne pas considérer cette question comme un "troll".

  2. #2
    Membre Expert
    Avatar de Goten
    Inscrit en
    juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 580
    Points : 2 170
    Points
    2 170

    Par défaut

    Citation Envoyé par guillaume07 Voir le message
    D'un côté certains soutiennent que les codes managés sont finalement aussi rapide que du C++.
    Ils peuvent soutenir tout ce qu'ils veulent c'est pas le cas.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  3. #3
    Membre Expert Avatar de Nudger
    Homme Profil pro Thomas Arnaud
    Directeur de projet
    Inscrit en
    octobre 2010
    Messages
    496
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Arnaud
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : octobre 2010
    Messages : 496
    Points : 1 024
    Points
    1 024

    Par défaut

    Bonsoir,

    Le C++ est au moins encore nécessaire pour développer la JVM et le compilateur Java !

    Voici la fonction main de la JVM d'openJDK 1.7 :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int
    main(int argc, char ** argv)
    {
        int margc;
        char** margv;
        const jboolean const_javaw = JNI_FALSE;
     
        margc = argc;
        margv = argv;
     
        return JLI_Launch(margc, margv,
                       sizeof(const_jargs) / sizeof(char *), const_jargs,
                       sizeof(const_appclasspath) / sizeof(char *), const_appclasspath,
                       FULL_VERSION,
                       DOT_VERSION,
                       (const_progname != NULL) ? const_progname : *margv,
                       (const_launcher != NULL) ? const_launcher : *margv,
                       (const_jargs != NULL) ? JNI_TRUE : JNI_FALSE,
                       const_cpwildcard, const_javaw, const_ergo_class);
    }
    www.nudge.org Surveillez vos applications Java et diagnostiquez facilement les problèmes de performance.

  4. #4
    Rédacteur/Modérateur
    Avatar de 3DArchi
    Inscrit en
    juin 2008
    Messages
    7 636
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 7 636
    Points : 13 093
    Points
    13 093

    Par défaut

    Salut,
    Citation Envoyé par guillaume07 Voir le message
    Je me pose une question existentielle
    En général, on ne trouve pas de réponses à ces questions

    Citation Envoyé par guillaume07 Voir le message
    De nos jours quel sont les raisons qui nous poussent à opter pour développer un projet en C++ plutôt que d'utiliser un langage objet managé ?
    Perso, je n'ai jamais vu le choix d'un langage pour un projet résultant de ses propriétés intrinsèques et de ses avantages/inconvénients par rapport aux autres. Cela résulte en général d'une combinaison de culture des équipes, nécessités imposées par le projet, phénomène de mode, reuse disponibles, etc.

    Citation Envoyé par guillaume07 Voir le message
    D'un côté certains soutiennent que les codes managés sont finalement aussi rapide que du C++.
    La rapidité du code n'est pas un objectif systématique de toutes les applications. Donc ça peut ne pas être un critère pour le choix du langage

    Citation Envoyé par guillaume07 Voir le message
    D'un autre ces mêmes soutiennent que le time to market est bien meilleur en Java/C# pour ne citer qu'eux.
    J'ai vu faire l'exercice de style dans un projet : 1 équipe expérimentée Java et 1 équipe expérimentée C (alors, c'était du C, pas du C++) - même projet à faire. L'équipe C a fini un peu avant avec un taux de bug moindre. Je pense que la conclusion n'est pas le C est mieux mais tout simplement que le ttm dépend plus du contexte projet que des éléments techniques.

    Citation Envoyé par guillaume07 Voir le message
    Même l'embarqué à l'instar d'android utilise Java.
    android si on souhaite le considéré comme embarqué, n'en est qu'une (petite) parcelle. Et là on parle déjà d'embarqué de 'luxe'. Beaucoup de projet embarqué ne peuvent accueillir d'OS riche (linux + jvm ou windows XXX Embeded + .Net) : bye bye java/C#. Dans certains cas, les seuls compilateurs des cibles ... sont exclusivement C, donc aussi bye bye c++
    Logiciel Embarqué : Quels langages pour le développement embarqué ?
    Citation Envoyé par guillaume07 Voir le message
    Merci de ne pas considérer cette question comme un "troll".
    Ca en sera quand même un

  5. #5
    Débutant
    Inscrit en
    mai 2006
    Messages
    666
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 666
    Points : 137
    Points
    137

    Par défaut

    Citation Envoyé par 3DArchi Voir le message
    La rapidité du code n'est pas un objectif systématique de toutes les applications. Donc ça peut ne pas être un critère pour le choix du langage
    En finance il y a des applications sensibles qui doivent être rapide, c'est dans ce contexte que s'incrit ma question.
    Et donc quand la question de rapidité se pose, je serais plus enclin à opter pour C++, et c'est là que certains conflit apparaissent car d'autres prétendent que c# notamment avec le JIT est tout aussi rapide.

    Citation Envoyé par 3DArchi Voir le message
    J'ai vu faire l'exercice de style dans un projet : 1 équipe expérimentée Java et 1 équipe expérimentée C (alors, c'était du C, pas du C++) - même projet à faire. L'équipe C a fini un peu avant avec un taux de bug moindre. Je pense que la conclusion n'est pas le C est mieux mais tout simplement que le ttm dépend plus du contexte projet que des éléments techniques.
    intuitivement c'est mon avis, mais d'autres prétendent, par exemple, qu'avec des outils comme resharper la phase d'implémentation est significativement accélérée, et d'autres arguments de ce style

  6. #6
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 733
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 733
    Points : 17 209
    Points
    17 209

    Par défaut

    Salut,

    Je crois que chacun voit midi à sa porte...

    Une équipe réellement expérimentée en C++ fournira très certainement un meilleur résultat (en terme de temps de développement et de taux de bugs) qu'une équipe peu expérimentée en java, tout comme l'inverse sera très certainement vrai aussi.

    Il est aussi vrai que les langages managés ont l'énorme avantage de "tenir la bride serrée" au développeurs qui n'ont, jamais, qu'une seule manière autorisée pour faire quelque chose, ce qui simplifie énormément les choix architecturaux, et donc, simplifie énormément la recherche de bugs ou le refactoring (la seule question devenant du genre "est que A est la classe de base et B l'interface, ou est-ce plutôt le contraire ")

    D'un autre coté, le fait que le choix soit si limité donne (parfois) l'impression d'avoir à choisir "entre la peste et le cholera" car aucune solution ne s'avère réellement pertinante par rapport à un héritage multiple ou à une programmation générique, par exemple.

    Et, bien sur, les "pro managé" me contrecarreront avec leur sempiternelle "mais C++ est tellement permissif qu'il te permet même de te tirer une balle dans le pied"...

    Bref, on trouvera toujours du "pour" et du "contre", et la "gueguerre" entre les différents langages est loin d'être finie
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    r0d
    r0d est déconnecté
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    août 2004
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2004
    Messages : 4 098
    Points : 5 754
    Points
    5 754

    Par défaut

    Il faut être sincère aussi: il y a certain type d'applications que l'on ne peut raisonnablement pas faire en Java ou en C#. Par exemple, un démon qui est sensé tourner 24h/24 pendant 10 ans (sans planter) et qui doit exécuter une analyse en "temps réel" d'un flux Euronext, c'est impensable de le faire en java ou en c#. D'abord pour des raisons de rapidité de traitement (un flux Euronext ce sont des millions de données par minute), pour des raisons de gestion de la mémoire, et accéssoirement pour la gestion des ressources. Car pour ce type d'application qui requier précision et sécurité à l'extrême, on peut avoir besoin d'utiliser des accès à des ressources particuliers (par exemple accès au GPU pour booster certains types de calculs), et pour cela, il faut un accès bas niveau (donc pas de machine virtuelle).

    Mais par contre il n'y a pas que le C++ pour ce genre de choses.

    Après, certains grosses applications, il ne faut pas hésiter à découper en modules et à utiliser les avantages de différents langages à bon escient.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •