Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Communauté
Communauté Suivez l'actualité C++ et contribuez à la vie de la communauté francophone C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/04/2011, 17h12   #1
guillaume07
Débutant
 
Inscription : mai 2006
Messages : 615
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 615
Points : 184
Points : 184
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".
guillaume07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h24   #2
Goten
Membre Expert
 
Avatar de Goten
 
Inscription : juillet 2008
Messages : 1 580
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : juillet 2008
Messages : 1 580
Points : 2 041
Points : 2 041
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
Goten est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 21h51   #3
Nudger
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 494
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 37
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 : 494
Points : 1 142
Points : 1 142
Envoyer un message via Skype™ à Nudger
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.
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 03/04/2011, 10h19   #4
3DArchi
Rédacteur/Modérateur
 
Avatar de 3DArchi
 
Inscription : juin 2008
Messages : 7 631
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 7 631
Points : 12 159
Points : 12 159
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
__________________
Ressources proposées par 3DArchi.
Les fonctions virtuelles en C++.
3DArchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 13h19   #5
guillaume07
Débutant
 
Inscription : mai 2006
Messages : 615
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 615
Points : 184
Points : 184
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
guillaume07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 11h29   #6
koala01
Modérateur
 
Avatar de koala01
 
Philippe Dunski
Inscription : octobre 2004
Messages : 8 628
Détails du profil
Informations personnelles :
Nom : Philippe Dunski
Âge : 41

Informations forums :
Inscription : octobre 2004
Messages : 8 628
Points : 13 353
Points : 13 353
Envoyer un message via MSN à koala01 Envoyer un message via Skype™ à koala01
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
je ne répondrai à aucune question technique par E-mail, message visiteur ou message privé
Vous avez obtenu votre réponse pensez au bouton en bas de page
koala01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 11h42   #7
r0d
Expert Confirmé Sénior
 
Inscription : août 2004
Messages : 3 673
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : août 2004
Messages : 3 673
Points : 4 436
Points : 4 436
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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h55.


 
 
 
 
Partenaires

Hébergement Web