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. #901
    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
    J'ai pas dit que ce framework n'est pas faisable en C++ , juste qu'il n'existe pas a ma connaissance.
    Si il existe merci de me dire le site ou je peut le télécharger .

  2. #902
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par super_navide Voir le message
    Le but est de générer ou de modifier une classe existante (pour y ajouter des méthodes par exemple ou changer sont comportement ).

    Et ca en C++ c'est pas possible.
    ha ha ha ha ha ha ha !!!
    Quake 1 utilisait très exactement ce mecanisme pour gerer les mods... 96... la même année que Java... finalement, c'etait une belle avancé de sun
    si tu veut, tu peu télécharger le code source de quake, il est dispo...mais je doute que tu y comprenne quelque chose, carmack inside
    et sinon, tu ne t'est jamais posé la question de savoir comment il faisait en Java pour gérer ca ? il on fait une jolie partie de la JVM, en C++, qui se charge de ça... donc pour un truc pas faisable en C++, je trouve ça pas mal

    donc si on fait un poin, on a maintenant :
    - introspection et chargement de code à la volé possible en Java et C++ (enfin, pour quake, c'est du C)
    pour le C++, ca demande du boulot, mais on a le choix. En java, c'est intégré au langage, mais en dehors des mecanismes proposé pour ça par le langage... on ne peut rien faire.

    essaye de faire de l'introspection et du chargement de code à la volé SANS utilisé les mecanisme du langage, c'est à dire, faire un tel système par toi même... c'est impossible en Java, alors que c'est possible en C++

    allez, et maintenant, pour en revenir à un point qui fait mal à Java, je demande des générics turing complet après tout, pourquoi faire générer du code par un programmeur ou à l'execution quand le compilo peut s'en charger
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #903
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par bafman Voir le message
    ha ha ha ha ha ha ha !!!
    Quake 1 utilisait très exactement ce mecanisme pour gerer les mods... 96... la même année que Java... finalement, c'etait une belle avancé de sun
    On parle de fonctionnalités offertes par le langage, pas de ce que le binaire final peut faire. Dans ce cas, compare C++ avec l'assembleur et ose dire que le C++ n'a rien apporté...

    Citation Envoyé par bafman Voir le message
    et sinon, tu ne t'est jamais posé la question de savoir comment il faisait en Java pour gérer ca ? il on fait une jolie partie de la JVM, en C++, qui se charge de ça... donc pour un truc pas faisable en C++, je trouve ça pas mal
    Même remarque...
    Si tu veux recoder les compilateurs ou VM des autres langages dans ton code C++, c'est ton choix. Mais ça n'en fait pas vraiment un avantage pour C++. Tu sais, on peut implémenter un compilateur C++ en Java et dire que C++ n'apporte aucune fonctionnalité par apport à Java. Avec ce genre d'arguments, je comprends que le débat n'avance pas.

    Citation Envoyé par bafman Voir le message
    - introspection et chargement de code à la volé possible en Java et C++ (enfin, pour quake, c'est du C)
    Bon, si j'ai écrit une classe en C++, quelle est la fonction à appeler pour afficher les méthodes de cette classe ?

    Citation Envoyé par bafman Voir le message
    pour le C++, ca demande du boulot, mais on a le choix. En java, c'est intégré au langage, mais en dehors des mecanismes proposé pour ça par le langage... on ne peut rien faire.
    En utilisant autant de mauvaise foi que toi, on peut : il suffit de recoder un compilateur et une VM.

    Citation Envoyé par bafman Voir le message
    essaye de faire de l'introspection et du chargement de code à la volé SANS utilisé les mecanisme du langage, c'est à dire, faire un tel système par toi même... c'est impossible en Java, alors que c'est possible en C++
    Pareil.

    Citation Envoyé par bafman Voir le message
    allez, et maintenant, pour en revenir à un point qui fait mal à Java, je demande des générics turing complet
    Que veux-tu dire par là ? Les generics sont une fonctionnalité, pas un langage.

    Citation Envoyé par bafman Voir le message
    après tout, pourquoi faire générer du code par un programmeur ou à l'execution quand le compilo peut s'en charger
    Les generics ne génèrent/dupliquent pas le code, contrairement aux templates. Si tu veux générer du code, utilise un préprocesseur.

  4. #904
    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
    Moi j'attend toujours un site pour télécharger un framework c++ pour créer des fonctions c ou des classes c++ à l'éxecution.

  5. #905
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 366
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 366
    Points : 20 402
    Points
    20 402
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Euh je suis curieux : d'ou sors cette information ?
    de nulle part elle est peut-être faussée c'était pour voir si quelqu'un suivait..
    ceci dit si on regarde les specs de la Java Virtual Machine cela ne m'étonnerait pas que si on déclare un int il ne soit pas réellement stocké en tant que int ce qui est un gachis dans l'optimisation


    Citation Envoyé par LLB Voir le message
    Même remarque...
    Si tu veux recoder les compilateurs ou VM des autres langages dans ton code C++, c'est ton choix. Mais ça n'en fait pas vraiment un avantage pour C++. Tu sais, on peut implémenter un compilateur C++ en Java et dire que C++ n'apporte aucune fonctionnalité par apport à Java. Avec ce genre d'arguments, je comprends que le débat n'avance pas.
    Très bien.
    Et pendant votre temps libre vous tous vous avez pour projet de redévelopper une JVM en C++ ou faire un compilateur C++ avec environnement de développement Java ?

    j'aimerais bien avoir votre temps libre.

  6. #906
    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 Mat.M Voir le message
    de nulle part elle est peut-être faussée c'était pour voir si quelqu'un suivait..
    ceci dit si on regarde les specs de la Java Virtual Machine cela ne m'étonnerait pas que si on déclare un int il ne soit pas réellement stocké en tant que int ce qui est un gachis dans l'optimisation
    d'après mes calculs non, par contre un byte sera stocké en tant qu'int (int java) si je me souviens bien, faudrait vérifier.
    Un int en java fait 32 bits obligatoirement, il ne dépend pas de l'OS par contre

  7. #907
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 521
    Points
    521
    Par défaut
    Les type primitifs Java sont une concession du "tout Objet" à la performance.
    Donc les types primitifs ne sont pas transformés en objets, et ne prennent pas plus de place.
    Il est possible qu'un byte simple prenne 2 octets, ... comme c'est le cas aussi en C selon le compilateur et les options #pragma, pour être aligné sur la mémoire, et donc encore pour les perfs.

    Par contre, on ne maitrise pas l'encodage d'un objet en mémoire, il y a forcément + ou - 8 octets alloués pour contenir uniquement le type de classe, bref des données techniques spécifiques à la JVM. (qu'en est-il en C++)
    Quoiqu'il en soit, la maitrise de la mémoire est une des différences majeure entre Java et C++, ce qui fait par exemple qu'on est incapable de dire la taille d'un objet en mémoire (pas de sizeOf), ce dont j'ai eu besoin pour gérer un cache réglable en taille mémoire.

  8. #908
    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
    Un sizeof me parrait une opération bien compliquée si on veut obtenir sur un objet sa taille ainsi que celle de tous ses champs récursivement, sans compter les cycles possibles.

  9. #909
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 521
    Points
    521
    Par défaut Sizeof en java
    Oui, c'est potentiellement faux car on n'as pas les notions d'aggrégation ou association (pour arrêter la récursion) c'est néanmoins parfaitement possible par introspection (il y a plusieurs sources qui trainent sur le Web pour ça) (NB2: pour contrer les cycles: une Map de références, comme tout bon algo récursif sur un réseau)

    On a bien souvent besoin de connaître la place occupée par la création d'un objet en cache, par exemple en mesurant la mémoire libre avant et après création: le résultat de cette méthode est hasardeux à cause du garbage, et évidemment des autres thread qui interviennent sur la mémoire.

  10. #910
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Très bien.
    Et pendant votre temps libre vous tous vous avez pour projet de redévelopper une JVM en C++ ou faire un compilateur C++ avec environnement de développement Java ?
    Je crois que tu as mal compris mon propos : je m'étais en évidence l'absurdité des arguments. Ce n'est pas parce que Java peut être écrit en C++ que C++ possède nativement toutes les fonctionnalités de Java.

    Citation Envoyé par Mat.M Voir le message
    j'aimerais bien avoir votre temps libre.
    Pour ma part, j'essaie de l'utiliser intelligemment et j'évite de perdre mon temps avec C++ ou Java. Il y a des langages qui me permettent d'être autrement plus productif.

  11. #911
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par bafman Voir le message
    ha ha ha ha ha ha ha !!!
    Quake 1 utilisait très exactement ce mecanisme pour gerer les mods... 96... la même année que Java... finalement, c'etait une belle avancé de sun
    Et 10 ans avant ca, je faisais deja du code automodifiant en assembleur sur mon atari ST... Est-ce pour autant que l'assembleur du 68000 est mieux que Java ?

    Comme ca a été dit, on peut toujours ecrire un compilateur C++ en Java et une JVM en C++. Mais, comme ca a été dit aussi, ca n'a aucun interet, a part reinventer (en moins bien) la roue.

    Le but de cette discussion c'etait de savoir quel langage (syntaxe+compilateur+librairie) est le mieux adapté selon la problematique rencontrée. Pas de savoir si on peut quand meme prendre le langage le moins adapté.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #912
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    je crois que personne n'a compris que je repondais à ceci :
    Et ca en C++ c'est pas possible.
    j'ai tout simplement voulu montrer par un contre exemple que c'est possible, pas que c'etait simple (d'ailleurs, en passant, les deux etant Turing complet, on doit donc pouvoir faire la même chose avec les deux )
    sinon, pour revenir au debat, j'utilise regulierement les 2 langages, et pour mon boulot, Java n'est pas utilisable car :
    • par de control fin sur l'occupation memoire. On a en permanence besoin d'optimiser l'occupation memoire de nos structures de données, notamment quand on doit les envoyer à la carte graphique
    • Les generics manquent clairement de puissance par rapport au templates, ont les utilisent quotidiennement, et le mecanisme proposé par Java n'est finalement qu'un bete systeme pour cacher les cast (bof) et pour faire de la verification à la compile (déjà beaucoup plus utile )
    • Le garbage collector non deterministe... Lui il est vraiment embettant pour les perf
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  13. #913
    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 Mat.M Voir le message
    ceci dit si on regarde les specs de la Java Virtual Machine cela ne m'étonnerait pas que si on déclare un int il ne soit pas réellement stocké en tant que int ce qui est un gachis dans l'optimisation


    si tu restes dans une même méthode, c'est bien un int qui est stocké... après avec le passage en paramètres, il y a un boxing vers la classe Integer


    mais dans le code de la KVM (Java embarqué), ce n'est pas le cas... tout est stocké sur l'espace "standard" qu'on attend (int, long, float, double ou pointeur)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #914
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    après avec le passage en paramètres, il y a un boxing vers la classe Integer
    ?? Ah bon ? la spec. du bytecode a changé ? On ne peut plus empiler des types primitifs sur la pile d'appel ?

    Il faudrait prévenir Sun car leur documentation n'est plus a jour.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #915
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    On ne peut plus empiler des types primitifs sur la pile d'appel ?
    Bah moi je pense que oui. Quand on utilise ASM, on empile ou dépile des int, et non des objets Integer.

  16. #916
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par nicØB Voir le message
    Bah moi je pense que oui. Quand on utilise ASM, on empile ou dépile des int, et non des objets Integer.
    Tu es complètement à l'ouest là... Lis le sujet du thread avant de poster, Pseudocode et Gorgonite parlent de la pile d'appel de la JVM.

    --
    Jedaï

  17. #917
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Non c'est toi. Je parle de la même chose qu'eux.
    xLOAD et xSTORE, utilisés dans ASM, tu crois que c'est quoi ?

    Pour un modo tu ferais mieux de commencer par te modérer toi même.

  18. #918
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par nicØB Voir le message
    Non c'est toi. Je parle de la même chose qu'eux.
    xLOAD et xSTORE, utilisés dans ASM, tu crois que c'est quoi ?

    Pour un modo tu ferais mieux de commencer par te modérer toi même.
    Le seul problème c'est que ton premier message ne parlait pas de xLOAD et xSTORE mais uniquement d'ASM qui est en premier lieu pour un programmeur l'acronyme d'assembleur... Un peu hors sujet de ce point de vue. Si tu veux donner un sens différent à une abréviation couramment utilisée en informatique, précise ce dont tu parles (la librairie suivante dans notre cas) et ne t'offusque pas si tu n'es pas immédiatement compris.

    --
    Jedaï

  19. #919
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    1 point partout:

    @nicØB: tu devrais dire "objectweb-asm" pour eviter les confusions

    @Jedai: il avait précisé de quoi il parlait au post 899 (et meme avant)

    Peace And Love.... ce n'est que de l'informatique.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #920
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    @Jedai: il avait précisé de quoi il parlait au post 899 (et meme avant)
    Non, c'était SuperNavide et il disait bien ObjectWeb Asm, du coup je n'ai pas fait le lien... Ca m'apprendra à écrire quand je suis fatigué (et pas de bonne humeur). Enfin pour la suite du débat il serait préférable d'utiliser le nom complet de la librairie pour éviter les confusions.

    --
    Jedaï

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