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

Débats sur le développement - Le Best Of Discussion :

[Débat] C++ vs Java


Sujet :

Débats sur le développement - Le Best Of

  1. #561
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Tommy31
    Le fait est qu'aujourd'hui, C++ n'évolue plus beaucoup.


    on parle pourtant beaucoup d'une nouvelle norme...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #562
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par super_navide
    Oui mais pour que ton programme fonctionnent il faut qu'il est accés a un binaire qui implémente la notion de variable libre et lié des lambdas expression.
    C'est le cas de Java (mot clef final en java mais avec bcp de limite ) moins avec groovy ( qui est presque du java même byte code ) et de Smalltalk mais pas de C++.
    D'accord, dans ce cas là C++ est supérieur au java, car tu peux exprimer des relations sans qu'elles donnent lieu à un code binaire (le résultat de l'expression sera calculé par le compilateur).

    En java, il n'y a pas de préprocessing.

  3. #563
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par gorgonite
    on parle pourtant beaucoup d'une nouvelle norme...
    J'attends des nouvelles de la norme depuis des années (2000). J'attendrais encore quelques années avant qu'elle soit totalement implémentée par les différents compilateurs et les différentes plateformes...

    A mes yeux, ce qui fait aujourd'hui office de norme et de catalyseur, c'est boost, une oasis dans le désert...

  4. #564
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    il est clair que la majorité des compilateurs ne se forcent pas à suivre la norme...
    M$ est l'exemple parfait du non-respect des normes ), mais cela est un gros défaut qui hérite déjà du c, et du "chacun se fait son compilo pour que le code soit pas utilisable avec celui du voisin

    mais aussi bien en c qu'en c++, si l'on s'en tient à la norme, on arrive souvent à porter son code entre les compilos
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #565
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Ca j'en sais quelque chose. J'ai eu une mauvaise expérience des compilateurs microsoft, notamment vc++ 6 qui étaient poussifs dans la reconnaissance de certaines formes de templates, pourtant parfaitement dans les normes.

    Je pense que gcc s'en tire beaucoup mieux.

  6. #566
    Membre actif Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Points : 278
    Points
    278
    Par défaut
    Citation Envoyé par aliasjcdenton
    Ok, alors au boulot !

    En tout cas merci à tous pour toutes ces explications très enrichissantes, qui, même si elles ne me font pas choisir un des deux languages me donnent juste envie de toucher aux deux

    Peut-être que c'est en pratiquant que j'en viendrai à donner ma préférence à l'un ou à l'autre. Mais c'est vrai que pratiquant le Java depuis 2 mois maintenant, je reste tout de même séduit et attiré par le côté vitesse de C++ mais surtout par le fait qu'on reste de libre de "toucher à tout" et de "jouer avec la machine". Quant au principe de la programmation orientée objet, je crois qu'il ne doit pas être trop difficile de passer de l'un à l'autre, les structures de programmation restant identiques (ou très similaires) pour les deux languages, à ce que j'ai compris...

    Voilà, voilà...
    A+

    Pour du temps réel, le C++ est le choix le plus évident.
    Pour apprendre la conception objet, Java me semble un meilleur choix.
    Java donne par contre de mauvaises habitudes(au débutant) sur la gestion des ressources. On laisse travailler le GC, il faut pourtant l'aider si on veut améliorer les performances (mettre les objet inutilisé à null par exemple).

    Le développement en Java est plus simple que celui en C++, il nous abstrait de pas mal de problèmes techniques.
    Ce sont les techniciens de Sun qui fournissent les bibliothèque C++ maison.

    En C++, c'est un véritable casse tête pour travailler avec des String si on inclu d'autres bibliothèque qui utilisent leurs propres implémentation de String(X11/Motif, etc).


    Bref,

  7. #567
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par f273345
    En C++, c'est un véritable casse tête pour travailler avec des String si on inclu d'autres bibliothèque qui utilisent leurs propres implémentation de String(X11/Motif, etc).
    Bref,
    Normal, X11 et Motif (du moins il me semble, faudrait que je vérifie) sont des bibliothèques écrites en C et non en C++, ce qui n'a absolument rien à voir. Pour le reste, la classe string du C++ standart marche très bien (même si j'admets qu'il lui manque encore quelques fonction du style split(), mais bon).

    Sinon, en ce qui concerne l'évolution du C++ dont il est question plus haut, je crois que le problème est que le C++ est avant tout un standart ouvert et qu'il faut mettre tous le monde d'accord pour le faire avancer, contrairement à des langages comme java qui sont poussés par les gars de sun.

  8. #568
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Je pense que pour un développement il vaut mieux faire une bonne conception Objet avec un proto en JAVA qui sera plus facile a tester et a debugger et ensuite si il y a des problème de performance le redévelopper totalement ou en partie en C++ ou de générer du C++.
    Je trouve que la problèmatique de traduction entre langage est intéréssente

    Peut traduire du C++ en Java et inversement ?.


    Par contre il y a un domaine C++ ecrase JAVA c'est pour l'écriture de formule mathématique qui manipule des vecteurs ou des matrices.
    avec les constructeurs par recopie et la surcharge d'opérateur on peut faire des programmes très lisible et performant alors quand JAVA il faut mettre des objets en cache et faire attention ne pas en allouer sans raison.
    On peut aussi allouer des objets sur la pile d'execution ce que java ne peut pas faire.

  9. #569
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par super_navide
    Je pense que pour un développement il vaut mieux faire une bonne conception Objet avec un proto en JAVA qui sera plus facile a tester et a debugger et ensuite si il y a des problème de performance le redévelopper totalement ou en partie en C++ ou de générer du C++.
    Je trouve que la problèmatique de traduction entre langage est intéréssente

    Peut traduire du C++ en Java et inversement ?.
    Il y a gcj qui compile le java en natif, avec le résultat que l'on connait : des performances médiocres. A mon avis les traductions automatiques ne sont jamais bonnes car elles ne font jamais appel aux particularités des langages. Comment un traducteur utiliserai l'api Sun. Comment décider de prendre un HashSet, un LinkedHashSet par exemple

  10. #570
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kpouer
    Il y a gcj qui compile le java en natif, avec le résultat que l'on connait : des performances médiocres. A mon avis les traductions automatiques ne sont jamais bonnes car elles ne font jamais appel aux particularités des langages. Comment un traducteur utiliserai l'api Sun. Comment décider de prendre un HashSet, un LinkedHashSet par exemple
    Un ben ca c'est problème qu'il faut creuser, le cerveaux humain arrive bien a le faire , il faut réeussir a comprendre et à trouver comment ilfait.
    Du boulot en perspective....

  11. #571
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par super_navide
    Un ben ca c'est problème qu'il faut creuser, le cerveaux humain arrive bien a le faire , il faut réeussir a comprendre et à trouver comment ilfait.
    Du boulot en perspective....
    Je sais pas si c'est vraiment judicieux. Si c'est un prototype, ca se refait vite dans un autre langage, si c'est un mec qui aime développer en java et doit faire du c++ ou l'inverse on en revient un peu au concept de .NET. Pour ma part j'ai toujours trouvé ca con, l'informatique c'est pour les gens qui peuvent s'adapter, on doit faire du java, on fait du java, on va pas faire du cobol et chercher un convertisseur.

  12. #572
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kpouer
    Je sais pas si c'est vraiment judicieux. Si c'est un prototype, ca se refait vite dans un autre langage, si c'est un mec qui aime développer en java et doit faire du c++ ou l'inverse on en revient un peu au concept de .NET. Pour ma part j'ai toujours trouvé ca con, l'informatique c'est pour les gens qui peuvent s'adapter, on doit faire du java, on fait du java, on va pas faire du cobol et chercher un convertisseur.
    Non .NET compile vers un même byte code
    La traduction de langage repose sur la sémantique d'un grammaire

  13. #573
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par super_navide
    Non .NET compile vers un même byte code
    La traduction de langage repose sur la sémantique d'un grammaire
    Exact maintenant que j'y pense, ca repose sur l'api qu'ils ont développé dans les 36 langages qu'ils supportent, j'étais focalisé sur le coup de programmer dans n'importe quel langage pour obtenir le même résultat. Je trouve ca idiot quand même

  14. #574
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par kpouer
    Probablement pas, c'est pourquoi je suis totalement contre SWT qui va a l'encontre du concept de java. Et qui de plus selon moi n'apporte pas grand chose de bon
    Le problème c'est que Swing commence à vieillir, et on utilise des classes assez mal concues, par exemple pas de modèle pour un JTabbedPane, l'utilisation de collections synchronisée (de l'ancienne api) dans des modèles de liste ou de table (par défaut), alors qu'elles ne seront accedées que depuis 1 seul thread (l'EDT)...
    On pourrait rajouter depuis la sortie de java 1.5 l'absence de généricité et l'utilisation d'entiers (ou pire, de Strings) pour une option, au lieu d'une enum (bon ça c'est pareil pour SWT).
    Mais bon tout ça c'est facile d'arriver après et de critiquer, une fois qu'on le résultat fini C'est juste que ça serait sympa un Swing 2 qui soit fait en utilisant les dernières technologies (java 5-6).

    Voilà c'était mon souhait du jour (du mois même)

  15. #575
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par ®om
    Le problème c'est que Swing commence à vieillir, et on utilise des classes assez mal concues, par exemple pas de modèle pour un JTabbedPane, l'utilisation de collections synchronisée (de l'ancienne api) dans des modèles de liste ou de table (par défaut), alors qu'elles ne seront accedées que depuis 1 seul thread (l'EDT)...
    On pourrait rajouter depuis la sortie de java 1.5 l'absence de généricité et l'utilisation d'entiers (ou pire, de Strings) pour une option, au lieu d'une enum (bon ça c'est pareil pour SWT).
    Mais bon tout ça c'est facile d'arriver après et de critiquer, une fois qu'on le résultat fini C'est juste que ça serait sympa un Swing 2 qui soit fait en utilisant les dernières technologies (java 5-6).

    Voilà c'était mon souhait du jour (du mois même)
    Oui c'est le problème de la compatibilité ascendante. Pas facile a gérer comme question

  16. #576
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Quelqu'un connaitrait un framework en C++ pour produire du code C a l'execution ?


    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef FC int (*fc)(int )
    FunctionC f = new FunctionC("int f(int c) { return c+1 }" );
    FC fc = (FC)f.ptrFct()

  17. #577
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    je pense qu'il faut plutot te tourner vers un back-end en C à partir d'un AST produit par un front-end C++
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  18. #578
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Non c'est pas trop ce que je veux

    c'est plutot

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef FC int (*fc)(int )
    FunctionC f = new FunctionC();
    f.addArgument("int","c" ) ;
    f.addInstruction( new Return( new Add( new Var("c") , new Int(1) ))) ;
    FC fc = (FC)f.ptrFct()

    le framework génere le binaire lui même sans parser un source .

  19. #579
    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
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par super_navide
    le framework génere le binaire lui même sans parser un source .

    T'es sûr qu'il génère le binaire et pas qu'il interprète ? Pour l'interpretation, ça doit être trouvable... (enfin, j'en connais pas). Pour la compilation, avec une instruction comme : FC fc = (FC)f.ptrFct()

    Il faudrait compiler dans un fichier et charger dynamiquement la fonction (avec dlopen et tout ça...). Ca doit être délicat à faire
    Je ne répondrai à aucune question technique en privé

  20. #580
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    C'est pas top d'utiliser un fichier il faut générer le binnaire en mémoire sans
    avoir a utiliser un executable avec des fichiers
    En Java c'est possible

Discussions similaires

  1. [Débat] Technologie .NET vs JAVA
    Par neo.51 dans le forum Débats sur le développement - Le Best Of
    Réponses: 1047
    Dernier message: 14/01/2019, 16h15
  2. [Débat] .NET vs JAVA/J2EE
    Par tssi555 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/12/2008, 07h54

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