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. #1021
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 733
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par FloMo Voir le message
    Par contre, la prise de tête en Java pour déployer le moindre programme... surtout si tu ne connais pas l'architecture Java.
    Je ne suis pas d'accord. Un programme java sous forme de jar est facile à déployer. Un simple zip(les scripts batchs sont devenus inutiles), un installeur en java ou un java web start rend cette opération très simple.

    Pour les applications plus complexes genre une application web avec ou sans EJB, il y a des tâche ant dédiés au déploiement. Maven simplifie aussi ce genre d'opération. Parfois un simple déploiement à chaud par l'interface web du serveur d'application ou du conteneur.

  2. #1022
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    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 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par FloMo Voir le message
    Java, c'est facile à coder, mais l'enfer à développer.
    D'accord mais peux-tu plus développer ?

  3. #1023
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Incroyable : java c'est dur a déployer quand on sait pas comment ca marche.
    Ben oui c'est la même chose pour tout, quand on connait pas on galère
    Non : un binaire, c'est un binaire. Tu le mets avec les bibliothèques qui vont bien éventuellement et c'est tout. Au pire, tu crées un installeur.

    Tu n'as pas les contraintes de machine virtuelle voir d'environnement au niveau de l'OS ( Gtk+ par exemple sous Linux ) . C'est d'ailleurs pour ça, je pense, que la démo du browser cross-plateform JDIC ne fonctionne pas sur mon Linux alors que Mozilla est installé dans la bonne version, comme requis, et que Java est configuré pour le web.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  4. #1024
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    D'accord mais peux-tu plus développer ?
    Oui : le langage en lui-même est très simple. C'est d'ailleurs son but à la base : créé facilement des petites applets pour s'amuser.

    Le problème, c'est que ça devient vite une usine à gaz car on est totalement prisonnier du modèle objet. D'un point de vue conceptuel, c'est sympa, c'est carré. Mais d'un point de vue productivité, c'est très moyen.

    Pour passer une application C++ entière en UTF-8 par exemple, c'est 2 appels maximum ( un pour l'interface, un pour les flux de données, après c'est de la customisation au cas par cas ). En Java, c'est une autre paire de manche.

    Dans le même esprit, la dépendance entre Java et le GUI ( Gtk+ sous Linux ) peut rapidement poser des problèmes. Pour le GUI toujours, si on veut personnaliser le moindre élément, c'est la croix et la bannière : il faut déjà penser optimisation. En C++, tu as l'embarras du choix : attaquer le moteur de rendu, mettre une feuille de style, ... de toutes façon, l'optimisation est en très grande partie le travail du compilateur ( hormis l'aspect SQL & co, bien entendu ), donc la seul limite est l'imagination.

    Au niveau cross-plateforme, c'est le même topo :
    - un moteur web rigoureux et performant ? WebKit,
    - un moteur multimédia ? Phonon, VLC,
    - de la 3D ? OpenGL,
    - ...

    Concrètement, j'ai eu à réaliser une application au niveau réseau récemment : à faire fonctionner sous Linux, Windows, SCO avec des performances accrues. C et autotools : du vrai cross-plateforme. C'est vrai, une bibliothèque autre que la standard m'aurait aidé, mais bon. Un seul source pour 3 plateformes, fuites mémoires contrôlées ( en majeure partie, personne n'a le contrôle total ) grâce à Valgrind : ça tourne depuis un moment et on n'a pas besoin de revenir dessus.

    Pour avoir travaillé avec les 2 environnements, je constate que Java est de la poudre aux yeux : c'est bien uniquement dans les cas académiques.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  5. #1025
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par Tarul Voir le message
    Je ne suis pas d'accord. Un programme java sous forme de jar est facile à déployer. Un simple zip(les scripts batchs sont devenus inutiles), un installeur en java ou un java web start rend cette opération très simple.

    Pour les applications plus complexes genre une application web avec ou sans EJB, il y a des tâche ant dédiés au déploiement. Maven simplifie aussi ce genre d'opération. Parfois un simple déploiement à chaud par l'interface web du serveur d'application ou du conteneur.
    Pour les binaires :

    - Installation :
    Windows : suivant, suivant, suivant, terminer.
    Linux ( Fedora pour l'exemple ) : yum update ( ou double-clique sur le RPM si on n'a que le RPM )

    - Génération des installeurs :
    Windows : 1 script NSIS
    Linux : 1 fichier SPEC ( ou debian )
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  6. #1026
    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 FloMo Voir le message
    Pour avoir travaillé avec les 2 environnements, je constate que Java est de la poudre aux yeux : c'est bien uniquement dans les cas académiques.
    Quel genre de projet as tu fait avec Java ? Car dans le monde industriel c'est surtout utilisé pour faire du Java EE ce qui est loin d'être un cas académique. (comme c'est du Java EE, le déploiement n'est pas compliqué car il suffit de déposer l'EAR ou le war sur le serveur d'application)

    Oui : le langage en lui-même est très simple. C'est d'ailleurs son but à la base : créé facilement des petites applets pour s'amuser.
    C'est rarement utilisé pour faire des applets en fait. Le but de base de Java, c'est surtout d'offrir un compilateur compilant vers un bytecode multiplateforme et une machine virtuelle sachant l'exécuter.
    Je ne répondrai à aucune question technique en privé

  7. #1027
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par millie Voir le message
    Quel genre de projet as tu fait avec Java ? Car dans le monde industriel c'est surtout utilisé pour faire du Java EE ce qui est loin d'être un cas académique. (comme c'est du Java EE, le déploiement n'est pas compliqué car il suffit de déposer l'EAR ou le war sur le serveur d'application)
    Création d'applications multimédia multi-plateformes ( à la AIR, mais il y a 2 ans ) . Côté GUI en fait. Ca marchait bien sur une plateforme : on essaye sur l'autre et là ça tombe. Optimisation était le maître mot.
    Côté serveur, je connais moins vu que j'ai surtout fait du PHP de ce côté-là. J'ai juste eu des démos lors de séminaires pour le côté serveur ( démos relativement lentes, mais je mettrai ça sur le dos du manque d'optimisation des développeurs ) .
    Mais mon expérience a clairement été orientée GUI.

    Citation Envoyé par millie Voir le message
    C'est rarement utilisé pour faire des applets en fait. Le but de base de Java, c'est surtout d'offrir un compilateur compilant vers un bytecode multiplateforme et une machine virtuelle sachant l'exécuter.
    De ce que j'ai pu constater, d'un point de vue GUI, c'est pas ça du tout. Ca va pour des applications demandant le minimum niveau interface, mais on sent très vite les limites de l'outil.

    Par exemple, pour égailler rapidement une application, je met une feuille de style sur un widget avec une image de fond, le texte en couleur : 2 lignes et le résultat est nickel. Pas besoin de tout redessiner, sous réserve que ça fonctionne ou non.

    Enfin, je n'ai testé que jusqu'à Java 6. Peut-être que le 7 est meilleur de ce côté-là.

    Je trouve que ça passe pour des applications internes, mais pas pour une application à diffuser ( qui demande une interface travaillée et une indépendance entre l'utilisateur et le technicien ) .
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  8. #1028
    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 FloMo Voir le message
    Non : un binaire, c'est un binaire. Tu le mets avec les bibliothèques qui vont bien éventuellement et c'est tout. Au pire, tu crées un installeur.

    Tu n'as pas les contraintes de machine virtuelle voir d'environnement au niveau de l'OS ( Gtk+ par exemple sous Linux ) . C'est d'ailleurs pour ça, je pense, que la démo du browser cross-plateform JDIC ne fonctionne pas sur mon Linux alors que Mozilla est installé dans la bonne version, comme requis, et que Java est configuré pour le web.
    Ben tu vas compiler ton binaire en 32 bits, il va marcher nickel, un jour un mec va l'installer sur sa plateforme 64 bits, et là ben par malchance il a les libs qui te sont nécéssaires, mais en version 64 bits seulement. Il faut donc qu'il installe en plus les versions 32 bits de ces mêmes libs, ou alors que toi tu recompile en 64 bits, a condition d'avoir la machine pour.
    Si après ca tu trouves que installer une JVM (c'est a dire double click sur un exe sous windows, ou ./jrexxxxx sous linux) c'est dur, alors là je vais me poser des questions.

  9. #1029
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 733
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par FloMo Voir le message
    Création d'applications multimédia multi-plateformes ( à la AIR, mais il y a 2 ans ) . Côté GUI en fait. Ca marchait bien sur une plateforme : on essaye sur l'autre et là ça tombe. Optimisation était le maître mot.
    Côté serveur, je connais moins vu que j'ai surtout fait du PHP de ce côté-là. J'ai juste eu des démos lors de séminaires pour le côté serveur ( démos relativement lentes, mais je mettrai ça sur le dos du manque d'optimisation des développeurs ) .
    Mais mon expérience a clairement été orientée GUI.
    C'est un gros défaut de java. Le Gui peut être améliorer et est toujours en cours d'amélioration. Je comprends que l'on puisse garder un mauvais souvenir.

    Citation Envoyé par FloMo Voir le message
    Par exemple, pour égailler rapidement une application, je met une feuille de style sur un widget avec une image de fond, le texte en couleur : 2 lignes et le résultat est nickel. Pas besoin de tout redessiner, sous réserve que ça fonctionne ou non.
    Il y a outils qui émerge afin de faciliter ce genre de personnalisation. La JSR296 permet d'injecter les resources depuis des fichiers properties au chargement d'une application swing. Là c'est le framework qui faut le boulot de personnalisation, il ne te reste qu'à choisir les couleurs et les images.
    Au fait avec quel bibliothèque fais-tu cette personnalisation dont tu parles. Avec Qt?

    Citation Envoyé par FloMo Voir le message
    Enfin, je n'ai testé que jusqu'à Java 6. Peut-être que le 7 est meilleur de ce côté-là.
    Peut être, mais java 7 étant en cours de dev, mieux vaut ne pas l'utiliser en environnement de production.

    L'ouverture des sources de la jvm permettra peut être d'améliorer swing pour GTK+ et lui permettre de supporter un environnement kde/qt.

  10. #1030
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 86
    Points
    86
    Par défaut
    ce qui est certain, c'est que FloMo n'aide pas a la bonne ambience du debat avec son ton provocateur.
    je n'aime pas C, ni C++, mais je ne vais pas le descendre pour autant au rang de phenomene de foire.

    Par ailleurs, FloMo, vu ton experience java tres tourne vers le GUI, qu'as-tu utilise comme librairie graphique de base? Swing? SWT? autre chose?

    je cite egalement :
    Le problème, c'est que ça devient vite une usine à gaz car on est totalement prisonnier du modèle objet. D'un point de vue conceptuel, c'est sympa, c'est carré. Mais d'un point de vue productivité, c'est très moyen.
    ton approche n'est peut-etre simplement pas la bonne pour java, ou l'oriente objet(surtout apres avoir lu qu'un codeur C++ bosse mieux en java qu'un codeur java en C++). Par exemple, beaucoup de developpeurs ne savent pas utiliser correctement les threads dans Swing, ce qui a eu pour consequence des interfaces graphiques de pietre qualite. Tu as egalement cite des problemes d'optimisation pour customizer des composants graphiques. Pourtant la aussi il y a du choix: look&feel, attaquer directement les listeners (pour le canvas ou les par exemple), reimplementer une partie de swing...
    bien sur, si c'est swt qui est utilise, le probleme est que du jni est utilise. forcement, swt souffre d'un manque de personnalisation a cause de ca.

  11. #1031
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Ben tu vas compiler ton binaire en 32 bits, il va marcher nickel, un jour un mec va l'installer sur sa plateforme 64 bits, et là ben par malchance il a les libs qui te sont nécéssaires, mais en version 64 bits seulement. Il faut donc qu'il installe en plus les versions 32 bits de ces mêmes libs, ou alors que toi tu recompile en 64 bits, a condition d'avoir la machine pour.
    Si après ca tu trouves que installer une JVM (c'est a dire double click sur un exe sous windows, ou ./jrexxxxx sous linux) c'est dur, alors là je vais me poser des questions.
    Bah tu fais une version 64 bits et une version 32 bits, tout simplement. Je vois pas le problème.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  12. #1032
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par Tarul Voir le message
    Il y a outils qui émerge afin de faciliter ce genre de personnalisation. La JSR296 permet d'injecter les resources depuis des fichiers properties au chargement d'une application swing. Là c'est le framework qui faut le boulot de personnalisation, il ne te reste qu'à choisir les couleurs et les images.
    Au fait avec quel bibliothèque fais-tu cette personnalisation dont tu parles. Avec Qt?
    En effet, je fais ça avec Qt, soit dans le designer, soit dans le code, soit dans les directives de dessin. Après, on peut aller très loin en dessinant les widgets dans les canvas ( cf. QtDemo de Qt4.4 avec les sous-fenêtres déformées ) .

    Citation Envoyé par Tarul Voir le message
    Peut être, mais java 7 étant en cours de dev, mieux vaut ne pas l'utiliser en environnement de production.
    Je suis bien d'accord.

    Citation Envoyé par Tarul Voir le message
    L'ouverture des sources de la jvm permettra peut être d'améliorer swing pour GTK+ et lui permettre de supporter un environnement kde/qt.
    Pour Qt, il y a Jambi. Mais bon, mixer les frameworks, je ne trouve pas ça top.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  13. #1033
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par gokud-o-matic Voir le message
    ce qui est certain, c'est que FloMo n'aide pas a la bonne ambience du debat avec son ton provocateur.
    je n'aime pas C, ni C++, mais je ne vais pas le descendre pour autant au rang de phenomene de foire.
    C'est juste un débat d'idées. Concrètement, je m'en fous : pour moi, Java ou C++ c'est vert chou et chou vert. Mais je trouve que c'est l'idéal pour vraiment connaître points forts et faiblesses de chacun des outils.

    Citation Envoyé par gokud-o-matic Voir le message
    Par ailleurs, FloMo, vu ton experience java tres tourne vers le GUI, qu'as-tu utilise comme librairie graphique de base? Swing? SWT? autre chose?
    Swing, à l'époque où GFX faisait des trucs vraiment sympas ( je ne sais pas où s'en est aujourd'hui ) .

    Citation Envoyé par gokud-o-matic Voir le message
    ton approche n'est peut-etre simplement pas la bonne pour java, ou l'oriente objet(surtout apres avoir lu qu'un codeur C++ bosse mieux en java qu'un codeur java en C++).
    Je disais ça dans le sens où un codeur Java ignore ce qu'est un pointeur bien souvent. Pas d'un point de vue conceptuel.


    Citation Envoyé par gokud-o-matic Voir le message
    Par exemple, beaucoup de developpeurs ne savent pas utiliser correctement les threads dans Swing, ce qui a eu pour consequence des interfaces graphiques de pietre qualite. Tu as egalement cite des problemes d'optimisation pour customizer des composants graphiques. Pourtant la aussi il y a du choix: look&feel, attaquer directement les listeners (pour le canvas ou les par exemple), reimplementer une partie de swing...
    bien sur, si c'est swt qui est utilise, le probleme est que du jni est utilise. forcement, swt souffre d'un manque de personnalisation a cause de ca.
    J'ai utilisé swing et ai suivi les conseils de développeurs Java pour bien utiliser les threads. Après, j'attaquais directement les listeners mais je trouvais vraiment que je codais plus que nécessaire juste pour avoir un rendu fluide alors que j'utilisais justement Java pour coder efficacement.

    Je pense qu'on peut pas tout faire avec Java ( tout comme on ne peut pas tout faire en C++ ) . C'est très pratique en applications internes ( Eclipse RCP par exemple ) mais faut pas trop gratter. Cela ne remet pas en cause les capacités hors GUI.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  14. #1034
    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 FloMo Voir le message
    Bah tu fais une version 64 bits et une version 32 bits, tout simplement. Je vois pas le problème.
    Le problème est qu'une version 64 bits n'apporterai rien, et que la 32 bit tournerait sur un OS 64 bits si les libs étaient installées. Enfin bref tout ca pour dire que que ce soit en c++ comme en java des problèmes d'installation peuvent se présenter

  15. #1035
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Le problème est qu'une version 64 bits n'apporterai rien, et que la 32 bit tournerait sur un OS 64 bits si les libs étaient installées. Enfin bref tout ca pour dire que que ce soit en c++ comme en java des problèmes d'installation peuvent se présenter
    Oui, c'est vrai. Après, faut s'adapter au contexte.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  16. #1036
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    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 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par FloMo Voir le message
    Oui : le langage en lui-même est très simple. C'est d'ailleurs son but à la base : créé facilement des petites applets pour s'amuser.

    Pour passer une application C++ entière en UTF-8 par exemple, c'est 2 appels maximum ( un pour l'interface, un pour les flux de données, après c'est de la customisation au cas par cas ). En Java, c'est une autre paire de manche.
    .
    Comme on l'aura remarqué je suis pro C/C++ et pas très fana de Java ( et autres C# sharp machin ) .
    Ceci dit Java et consorts comme C# c'est sensé "améliorer la productivité et réduire les lignes de code" , non ?
    En C/C++ pour déclarer une chaine et l'affecter il faut utiliser strcpy en faisant gaffe aux débordements de tableaux .
    Remarque il y a std::string et CString pour MFC,String pour la VCL

    C'est curieux concernant ton exemple de chaine de caractere avec Utf8 cela devrait être plus simple en Java, il ya des classes pour ça ? ( je ne suis pas assez calé sur Java )

    Le problème, c'est que ça devient vite une usine à gaz car on est totalement prisonnier du modèle objet. D'un point de vue conceptuel, c'est sympa, c'est carré. Mais d'un point de vue productivité, c'est très moyen.
    C'est vrai en Java et autres langages avec GC comme VB.NET et C# on ne peut pas faire un code source "hétéroclite" et déclarer des fonctions que j'appelle dans le vide c.a.d. du genre _cdecl c.a.d. non encapsulée dans une classe

  17. #1037
    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
    Ceci dit Java et consorts comme C# c'est sensé "améliorer la productivité et réduire les lignes de code" , non ?
    Ils apportent surtout une vision plus "haut-niveau". Ce n'est pas forcément un avantage et ça dépend des besoins. Cette vision "haut-niveau" vient d'une couche supplémentaire (la VM) et offre un certain nombre de fonctionnalités (introspection et compagnie).

    L'évolution des langages s'accompagne souvent d'une réduction du nombre de lignes. En moyenne, je trouve que C# et Java sont très verbeux. Mais, de ce que j'ai vu, C# l'est en effet (légèrement) moins que C++

    Citation Envoyé par Mat.M Voir le message
    C'est curieux concernant ton exemple de chaine de caractere avec Utf8 cela devrait être plus simple en Java, il ya des classes pour ça ? ( je ne suis pas assez calé sur Java )
    C'est plus une question de bibliothèque que de langage. C'est peut-être plus simple pour faire ça avec Java (je ne sais pas), mais tu devrais pouvoir obtenir quelque chose de similaire avec C++.


    Citation Envoyé par Mat.M Voir le message
    C'est vrai en Java et autres langages avec GC comme VB.NET et C# on ne peut pas faire un code source "hétéroclite" et déclarer des fonctions que j'appelle dans le vide c.a.d. du genre _cdecl c.a.d. non encapsulée dans une classe
    Il n'y a aucun rapport avec le GC. Java et C# ont choisi d'imposer le modèle objet. Je trouve ça dommage d'imposer ce paradigme, mais tu peux toujours faire des méthodes statiques (il y a alors peu de différences avec une fonction "dans le vide").

    on parle de C++ là, strcpy c'est du C.
    ... qui est incluse dans C++. Mais je crois que Mat.M est au courant.

  18. #1038
    Membre régulier
    Homme Profil pro
    Développeur .NET/C/C++
    Inscrit en
    Septembre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET/C/C++
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 71
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par LLB Voir le message
    Ils apportent surtout une vision plus "haut-niveau". Ce n'est pas forcément un avantage et ça dépend des besoins. Cette vision "haut-niveau" vient d'une couche supplémentaire (la VM) et offre un certain nombre de fonctionnalités (introspection et compagnie).

    L'évolution des langages s'accompagne souvent d'une réduction du nombre de lignes. En moyenne, je trouve que C# et Java sont très verbeux. Mais, de ce que j'ai vu, C# l'est en effet (légèrement) moins que C++
    En utilisant les templates, cela peut dans certains cas être l'inverse. Mais cela demande aussi un peu plus de reflexion.
    C'est plus une question de bibliothèque que de langage. C'est peut-être plus simple pour faire ça avec Java (je ne sais pas), mais tu devrais pouvoir obtenir quelque chose de similaire avec C++.
    Tout à fait d'accord (d'une manière générale, les gens ont par ailleurs souvent tendance à comparer les API plutot que les langages en eux-même, je trouve).
    Il n'y a aucun rapport avec le GC. Java et C# ont choisi d'imposer le modèle objet. Je trouve ça dommage d'imposer ce paradigme, mais tu peux toujours faire des méthodes statiques (il y a alors peu de différences avec une fonction "dans le vide").
    Tout à fait d'accord ici aussi.
    ... qui est incluse dans C++. Mais je crois que Mat.M est au courant.
    En même temps, je ne crois pas que l'on peut encore raisonnablement parler de fonction en C quand on fait du C++. Le C++ et a été conçu de sorte à reprendre la syntaxe du C et d'être compatible avec celui-ci (dans le sens je peux utiliser mes fonctions C en C++). Mais ça s'arete là. (Ce n'est pas pou rien que développez a décider des scinder les sections C et C++ ;-) )

    Sinon autre chose, on parle souvent de l'introspection dans ce débat en disant que celui-ci est plus avancé en java qu'en C++. Cela est plus que probablement vrai (j'connais assez mal java, mais je sais que C++ n'est pas super avancé en la matière), mais je pense aussi que l'utilisation, certes intensive, de templates peut limiter en grande partie ce besoin, car il permettent de connaitre au moment de la compilation le type précis d'une variable, ce que ne permettent pas toujours de faire les types générics en java (enfin il me semble).
    "Toujours en faire plus pour en faire moins"

  19. #1039
    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 bountykiler Voir le message
    Tout à fait d'accord (d'une manière générale, les gens ont par ailleurs souvent tendance à comparer les API plutot que les langages en eux-même, je trouve).
    Effectivement mais en java comme en C# d'ailleurs l'api fait partie intégrante du langage et est probablement une raison important pour laquelle on peut choisir ces langages plutot qu'un autre : on a accès a énormément de choses de manière standard.
    Evidemment ce n'est pas impossible d'avoir des api équivalentes en c++, mais leur cohérence ne sera pas la même.
    Je ne suis pas un grand expert en c++ donc je peux me tromper mais par exemple en java une api décrit les parseurs xml. Ainsi on peut avoir plusieurs implémentation des parseurs xml et en changer en gardant la compatibilité des sources. C'est tout de même assez pratique

  20. #1040
    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
    Sinon autre chose, on parle souvent de l'introspection dans ce débat en disant que celui-ci est plus avancé en java qu'en C++. Cela est plus que probablement vrai (j'connais assez mal java, mais je sais que C++ n'est pas super avancé en la matière), mais je pense aussi que l'utilisation, certes intensive, de templates peut limiter en grande partie ce besoin, car il permettent de connaitre au moment de la compilation le type précis d'une variable, ce que ne permettent pas toujours de faire les types générics en java (enfin il me semble).
    Oui, les templates sont bien plus puissants que les generics. Peut-être des gens utilisent-ils l'introspection pour pallier les limitations du langage, c'est possible, mais ce n'est pas vraiment le but à la base.

    L'introspection (je parle de façon générale, j'ai très peu d'expérience en Java) permet d'apporter un dynamisme qui n'est pas possible sans. Cela apporte une partie des fonctionnalités des langages de script (comme tout ce qui est dynamique, on réduit alors un peu la sûreté).

    Cela peut être très utile dans des bibliothèques (qui peuvent alors récupérer automatiquement des informations sur le reste). Par exemple, la (dé)sérialisation automatique. Par exemple, l'accès à des méthodes dont on ne connait le nom qu'à l'exécution. Par exemple, je sais que l'interfaçage de Lua avec .NET est grandement simplifié par introspection (le code Lua peut accéder à certaines méthodes du code). Etc.

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