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

Langages de programmation Discussion :

GUI : Java "vs" C++, Python


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Par défaut GUI : Java "vs" C++, Python
    Bonjour,
    Je connais un peu le Java et sa bibliothèque graphique Swing.
    J'aimerais avoir des avis de développeurs qui ont pratiqué Java et d'autres langages, notamment C++ et Python pour avoir leur avis, notamment sur les aspects graphiques : est-ce que coder son interface graphique en C++ ou Python est "plus/moins facile" qu'en Java/Swing (si la question a un sens...) ?

    Toute information sur le sujet m'intéresse.
    Je précise que je cherche à faire des applications dont le métier est tourné vers le scientifique avec pas mal de calculs...

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Créer des GUI n'est plus actuellement une activité qui requiert des années d'études du sujet (sauf si tu te lances dans Win32, mais bon ). Si tu utilises Tk (Tcl puis Python, C++), Qt (C++ puis Python, Java) et autres, ça ne sera pas long de te lancer à réaliser des GUI. Tant que tu restes dans le basique, on peut s'avancer à dire qu'ils seront à peu près tous égaux.

    Maintenant, puisque ton objectif est du calcul pur, tu peux envisager de t'orienter plus vers un langage prévu pour ça (C++ dans ta liste) et un toolkit dans ce langage (Qt ). Tu peux toujours envisager d'utiliser une extension Python pour lancer tes calculs et bénéficier du reste du langage de script pour ta GUI (ou bien tout faire ne PYthon et passer en C++ si le besoin s'en fait sentir). Idem pour Java. Il ne faut pas dénigrer d'avance ces langages pour les perfs, ils peuvent s'en sortir suffisamment bien pour ton application.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Par défaut
    Merci pour ta réponse.
    Du côté des performances, je sais que certains outils (probablement déjà assez optimisés car utilisés par des grands centres de calculs) prennent plusieurs heures pour tourner. Donc je cherche à être le plus performant possible sans toutefois retomber au niveau assembleur, même si mes objectifs sont plus modestes.

    En ce qui concerne la GUI, je serais intéressé par avoir des précisions sur la façon de procéder. Par exemple, est-ce qu'il y a des layout comme en Swing dans toutes les bibliothèques graphiques (Qt, GTK, Tk, wxWidget,...) ? Le mécanisme des listeners est-il répandu ou bien y a-t-il d'autres façons de procéder ? etc.

    Et concernant le "mélange" des genres, est-ce que ça ne freine pas un peu les performances d'avoir plusieurs langages plutôt qu'un code "monolithique" ?

    J'ai oublié une question importante : l'EDI. Est-ce qu'Eclipse pour C++ est aussi bien fait (c'est un avis personnel, s'entend...) que pour Java ? Que valent Code blocks et dev-C++ par rapport à lui ?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par totojava Voir le message
    Du côté des performances, je sais que certains outils (probablement déjà assez optimisés car utilisés par des grands centres de calculs) prennent plusieurs heures pour tourner. Donc je cherche à être le plus performant possible sans toutefois retomber au niveau assembleur, même si mes objectifs sont plus modestes.
    Dans ce cas, je crois que tu rentres plus dans la gamme du HPC : tu auras plus une GUI pour configurer les calculs et toute la masse envoyée aux désarticulateurs compulsifs de problèmes. Mais je ne sais pas du tout ce que tu dois faire, donc je ne peux pas vraiment porter un avis sur le sujet.

    Citation Envoyé par totojava Voir le message
    En ce qui concerne la GUI, je serais intéressé par avoir des précisions sur la façon de procéder. Par exemple, est-ce qu'il y a des layout comme en Swing dans toutes les bibliothèques graphiques (Qt, GTK, Tk, wxWidget,...) ? Le mécanisme des listeners est-il répandu ou bien y a-t-il d'autres façons de procéder ? etc.
    Tu ne retrouveras pas forcément les mêmes concepts partout, mais tout sera partout possible (exemple que je connais bien : Qt dispose de layouts mais pas de listeners, on utilise alors un système de signaux et de slots).

    Citation Envoyé par totojava Voir le message
    Et concernant le "mélange" des genres, est-ce que ça ne freine pas un peu les performances d'avoir plusieurs langages plutôt qu'un code "monolithique" ?
    Tu auras un overhead lors de l'appel d'une fonction externe, probablement, mais sans plus. Contre-exemple : MATLAB. Il est souvent beaucoup plus rapide d'appeler une fonction compilée plutôt qu'une fonction MATLAB (l'objectif n'étant pas les performances pures mais la facilité de développement) ; si on ne peut pas utiliser de fonction compilée, on en est souvent réduit à tout mettre dans une seule fonction pour gagner 10 à 25 % en temps d'exécution (). Mais c'est un cas plutôt assez rare, un appel natif avec Java ou Python ne souffre pas de tels défauts.

    Citation Envoyé par totojava Voir le message
    J'ai oublié une question importante : l'EDI. Est-ce qu'Eclipse pour C++ est aussi bien fait (c'est un avis personnel, s'entend...) que pour Java ? Que valent Code blocks et dev-C++ par rapport à lui ?
    DevCpp est mort et enterré depuis longtemps. Code::Blocks est un très bon EDI, au même titre que Qt Creator ou d'autres. Si tu cherches un équivalent d'Eclipse, dans la gamme des poids lourds qui peuvent à peu près tout faire, regarde du côté de Visual Studio. Personnellement, je n'ai jamais réussi à utiliser Eclipse, je lui préfère soit VS soit NetBeans, il te faudra donc essayer ces EDI avant d'en trouver un qui te convient.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Par défaut
    Hum... Non, j'y suis peut-être allé un peu fort. Je ne cherche pas des performances "HPC", je vais faire beaucoup plus light que les calculs qui prennent des heures, mais je m'inquiète tout de même des performances.
    Je ne dénigre pas les langages, bien sûr, surtout que j'aime bien Java... Mais je me dis que si je dois passer des heures pour faire quelque chose qui n'est pas utilisable parce qu'à chaque changement de clic de souris sur un curseur il faut attendre 10 secondes pour voir les nouvelles valeurs s'afficher, ça va faire fuir les utilisateurs. D'autant que la portabilité est importante.
    J'imagine d'ailleurs qu'avec C++ je vais souffrir de ce côté là, non ? Vu qu'avec Java on a souvent des surprises déjà !

    En fait, cette histoire de mélange peut m'intéresser. On m'avait conseillé Python, mais le côté interprété me fait peur (sans dénigrer, hein ;-)).

    Bref, je ne sais pas si je dois me tourner tout de suite vers le C++ pour être sûr d'en avoir pour mon argent côté performances, ou bien si je prends le risque de continuer sur Java, quitte à reprendre la partie calculs si jamais ça ne suit pas, comme tu dis... ?

    Et Scala, quelqu'un connait (je connais un peu le caml...) ? Ca vaut le coup pour le calcul scientifique ?

    Une autre question me vient à la relecture des réponses. Est-ce qu'on peut comparer le développement des GUI en C++/Qt ou autre et en Java/Swing : plus facile, pareil, plus difficile ? Concrètement par exemple, est-ce que le mécanisme des slots/signaux évoqué est plus facile ou plus difficile à gérer que les listeners ?

    Et de façon générale, est-ce qu'une bibliothèque (Qt, Gtk, Tk, ... ???) est plus abordable qu'une autre (du point de vue rapport "prise en main/possibilités") ?
    J'ai cherché (pas beaucoup certes...) des comparaisons mais je n'ai rien trouvé de vraiment satisfaisant.
    Merci.

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par totojava Voir le message
    J'imagine d'ailleurs qu'avec C++ je vais souffrir de ce côté là, non ? Vu qu'avec Java on a souvent des surprises déjà !
    Le C++ ? Si tu l'utilises mal, tu vas avoir des problèmes partout. Si tu l'utilises bien, ça ira parfaitement. Un code C++ bien écrit est parfaitement portable.

    Maintenant, quand tu utilises des GUI ou d'autres fonctionnalités dépendantes du système, ça n'est plus valable, malheureusement. C'est pour ça qu'il y a de belles solutions : ASIO pour le réseau, Qt pour à peu près tout (code once, deploy everywhere), etc.

    Citation Envoyé par totojava Voir le message
    En fait, cette histoire de mélange peut m'intéresser. On m'avait conseillé Python, mais le côté interprété me fait peur (sans dénigrer, hein ;-)).
    Tu auras de plus mauvaises performances de base avec un code Python qu'avec du Java ou du C++, c'est un fait, parce qu'il est interprété, que le travail de compilation est fait à l'exécution. Si tu fais juste ta GUI en Python puis que tu envoies tous les calculs à un kernel prévu pour ça, tu ne remarqueras pas grande différence.

    Citation Envoyé par totojava Voir le message
    Bref, je ne sais pas si je dois me tourner tout de suite vers le C++ pour être sûr d'en avoir pour mon argent côté performances, ou bien si je prends le risque de continuer sur Java, quitte à reprendre la partie calculs si jamais ça ne suit pas, comme tu dis... ?
    Si tu préfères le Java, que tu as une grande expérience en Java, tu auras des résultats beaucoup plus rapidement en Java, à voir donc si tu vas réellement perdre du temps comme ça.

    Citation Envoyé par totojava Voir le message
    Une autre question me vient à la relecture des réponses. Est-ce qu'on peut comparer le développement des GUI en C++/Qt ou autre et en Java/Swing : plus facile, pareil, plus difficile ? Concrètement par exemple, est-ce que le mécanisme des slots/signaux évoqué est plus facile ou plus difficile à gérer que les listeners ?
    Je n'ai à peu près eu que des échos très favorables pour Qt en comparaison des autres solutions disponibles. Tout est une question d'habitude : si tu maîtrises les GUI avec Swing, fonce dedans, tu perdras à coup sûr du temps à apprendre autre chose pour être fortement déçu du résultat dans un premier temps (mais je faisais ça en deux lignes de code avec Swing ! mais oui, il suffit de penser autrement pour avoir le même résultat en deux lignes de code avec un autre toolkit).

    Si tu ne connais qu'un peu Swing, tu es déjà moins lié, donc tu peux prendre le risque d'aller côté C++/Qt : tu devras réapprendre des choses, mais sans une série de réflexes bien ancrés. Tu pourras aussi accéder à des perfs sans commune mesure au besoin (tu peux toujours écrire des fonctions en assembleur si c'est nécessaire, par exemple ; tu auras accès sans difficulté à des bibliothèques comme MPIR ou aux GPU avec une uniformité de langage, donc simplicité au final à la maintenance et au codage vu qu'il ne faudra maîtriser qu'un langage pour tout comprendre).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Java requête SQL quote antislash
    Par ritchie23 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 01/10/2008, 16h50

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