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

C++ Discussion :

[Debat] C++ et IHM


Sujet :

C++

  1. #21
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je vais faire mon chieur, mais une IHM en C#, non merci, je préfère la faire... en Python, beaucoup plus rapide à mettre en place.
    Ca me rappelle quand Alp et moi sommes passe sur un autre forum pour dire que en C++ les templates c'etait le bien contre quelqu un qui disait que ca ne servait a rien puisqu'on peut tout resoudre avec de la POO. Mon argument c'est que CERTES ca marche mais que certains outils sont encore mieux adaptes (et ca vaut mieux puisque ils ont ete fait pour)
    Tout à fait d'accord, d'autant que les template sont super utiles pour la POO.

  2. #22
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par Miles Voir le message
    Je vais faire mon chieur, mais une IHM en C#, non merci, je préfère la faire... en Python, beaucoup plus rapide à mettre en place.
    Oui c'est vrai, je n'ai pas essaye d'etre exhaustif. Le Python a aussi le RTTI tres pratique pour les IHM et une flexibilité runtime que le C++ n'a pas.

  3. #23
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Je suis assez d'accord avec rod pour dire qu'utiliser le framework .Net pour faire une IHM standard, fonctionnelle, mais peu personnalisée (d'un point de vue contrôles avec des nouvelles images, animations) reste le best. Tout est là pour qu'en trois secondes on ait quelque chose qui marche et solide.

    Maintenant dès qu'on cherche à sortir un peu des sentiers battus, ben on s'en mords les dents.

    Qt, même si j'ai peu pratiqué, je ne suis pas fan. Ok il apporte la portabilité, mais je ne le trouve pas très beau, il me semble qu'il manque des fonctions élémentaire de docking, anchoring des composants au profit de layouts un peu déroutants, l'installation et l'utilisation en elle même n'est pas triviale, etc.
    Je ne suis allé assez loin pour savoir si la personalisation d'applis est plus simple.
    Sans être une critique j'aimerais aussi comprendre pourquoi ils ont choisi un système signal slot interne, alors que des solutions C++ pur étaient possibles, mais je pense que les signaux ne sont pas la seule raison pour laquelle ils utilisent MOC si ?
    Je pense que j'aurais également mieux adhéré si ils s'étaient limités à une IHM plutôt que vouloir créer un framework à tout faire.

  4. #24
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Sans être une critique j'aimerais aussi comprendre pourquoi ils ont choisi un système signal slot interne, alors que des solutions C++ pur étaient possibles
    A l'epoque ou QT a ete concu?

  5. #25
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    En 3 secondes, on a aussi qqch avec Qt qui marche (vive le designer).

    Plus sérieusement, Qt est beau si on considère que les plateformes natives ont de belles fenêtres puisqu'il utilise les styles par défaut, y compris le dernier .Net dans les QSolutions, et on peut aussi créer son propore style, c'est tout de même appréciable !

    Le mécanisme de signaux et slots est très efficace car il permet de communiquer entre threads ou dans le même thread de manière transparente en utilisant le meilleur mécanisme. Une pompe à message effectue la même opération, sauf que là, on a directement accès aux outils pour outre passer la pompe. Il n'y aucun outil en C++ pur qui permet de faire ce que Qt propose, Boost.Signals s'en approche, mais il n'est pas thread safe, donc il y a de la marge !

    Enfin, ils ne se limitent pas à une IHM parce que Qt, c'est aussi KDE, c'est surtout DBus sous Linux - et oui, ils sont à l'origine de ce mécanisme qui existe depuis très longtemps sous Windows pour la communication entre applications -, c'est aussi un pont vers Qtopia qui est une solution tout en un pour les solutions portables (PDA, téléphones, ...) et le code Qt est compatible à 100% avec le code Qtopia, pratique pour le débuggage, non ? Et pourquoi le réseau ? C'est super utile, wxWidgets propose aussi sa propre couche, comme Boost maintenant. Idem pour accéder à des bases de données, des fichiers XML, ...

  6. #26
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Je pense que j'aurais également mieux adhéré si ils s'étaient limités à une IHM plutôt que vouloir créer un framework à tout faire.
    Tu peut voir tout cette ensemble comme un framework puissant pour faire des IHM personnalisé simplement (faut bien comprend l'héritage).
    Mais pour cela faut bien concevoir ces class pour ne pas mélanger le code avec l'IHM et rester en mode vue - contrôleur.
    Je suis d'accord qu'il n'aurai pas du tout mélanger : conteneur; thread, d-bus, IHM ...

  7. #27
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Citation Envoyé par screetch Voir le message
    non! ^^
    - le C++ ne permet pas l'introspection (le RTTI) qui est un ajout de C#
    Le C++ n'a pas l'introspection, mais il ne faut pas confondre cela avec le RTTI (Run Type Type Information), qui est géré en natif en C++ et qui n'est pas une "émulation du C#"... Merci de ne pas confondre

    Citation Envoyé par NiamorH Voir le message
    Je suis assez d'accord avec rod pour dire qu'utiliser le framework .Net pour faire une IHM standard, fonctionnelle, mais peu personnalisée (d'un point de vue contrôles avec des nouvelles images, animations) reste le best. Tout est là pour qu'en trois secondes on ait quelque chose qui marche et solide.

    Maintenant dès qu'on cherche à sortir un peu des sentiers battus, ben on s'en mords les dents.
    Heuu... Ce serait pas plutot les doigts

    Citation Envoyé par NiamorH Voir le message
    Qt, même si j'ai peu pratiqué, je ne suis pas fan. Ok il apporte la portabilité, mais je ne le trouve pas très beau, il me semble qu'il manque des fonctions élémentaire de docking, anchoring des composants au profit de layouts un peu déroutants, l'installation et l'utilisation en elle même n'est pas triviale, etc.
    Je ne suis allé assez loin pour savoir si la personalisation d'applis est plus simple.
    Il les as, du moins dans la version que je connais
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #28
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par Miles Voir le message
    Le mécanisme de signaux et slots est très efficace car il permet de communiquer entre threads.
    Est-ce vraiment nécessaire ? Faire intervenir des slots dans un thread différent de celui du signal serait à mes yeux une mauvaise conception qui apporte plus de risques qu'autre chose.
    Citation Envoyé par Miles Voir le message
    ou dans le même thread de manière transparente en utilisant le meilleur mécanisme.
    La j'ai pas compris.
    Citation Envoyé par Miles Voir le message
    Il n'y aucun outil en C++ pur qui permet de faire ce que Qt propose.
    A part le fait d'être thread safe ce qui n'est pas un critère déterminant pour moi, bien sur que si. Que vois tu que fait le signal/slot de Qt qu'on ne puisse pas faire en C++ pur?

    @koala01 pour le dock et l'anchor, autant pour moi alors ! Pour s'en mordre les dents c'est de Coluche.

  9. #29
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah non, c'est super pratique et au contraire, il faut bien prévenir différents threads, non ?
    Exemple enfantin :
    Tu as un chat de discussion, un thread GUI et un thread pour la gestion du réseau. Dès qu'un paquet arrive sur le réseau pour toi, le thread réseau envoie un signal au thread GUI avec le nouveau message. De même le thread GUI envoie au thread réseau la phrase qu'on vient de taper après avoir appuyé sur envoyer.

    Ce n'est pas un problème de conception, c'est bien une solution à un problème récurrent qu'est la communication entre thread.

    Ensuite, Qt peut utiliser ce mécanisme lors de signaux entre threads (pompe à message) ou un simple appel à la fonction quand l'objet auquel on envoie le signal appartient au même thread.

    En fait, on reprend le principe des GUI dans lequel il y a toujours une pompe à messages et on se dit qu'il y en a une dans chaque thead.

  10. #30
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Cette après-midi je n'étais pas dispo, sinon je serais intervenu instantanément.

    Premier point : IHM
    Les IHM en C++ c'est pour la plupart des usines à gaz, en exagérant un peu. Seulement, Qt gère ça très bien, avec comme Miles l'a dit un système signal/slot inégalé encore en C++, à ma connaissance.
    De plus, pas besoin d'utiliser moc et compagnie. qmake gère tout ça très bien, et pour peu qu'on ait un bon IDE sous la main, ou un éditeur du genre vim/emacs, on peut automatiser tout ça avec un simple raccourci. C'est bien ce qu'on fait en C# non ? Un designer, puis on clique sur des boutons, bam les fichiers sont générés, un autre bouton et hop tout est compilé. De plus, pas besoin de framework. Installer Qt n'est pas si dur, et sur developpez on couvre quand même 2 groupes d'IDE pour l'installation. Et puis c'est toujours pareil : on compile et on ajoute les répertoires pour les entêtes et le linker. Je ne vois pas ce que C++/Qt a à envier à C#.

    Deuxième point : C++ par rapport aux autres langages (fonctionnels, logiques, à faible typage ...)
    Le C++ supporte ou permet d'implémenter ce qu'il faut pour supporter ces paradigmes. Cependant, ici c'est l'histoire du marteau et du tournevis ... Sauf pour la programmation fonctionnelle. Mais bon les DSEL avec comme langage hôte C++ c'est quand même pas si dur à gérer. Donc si un projet nécessite vraiment d'implémenter un DSEL pour supporter tel ou tel paradigme de programmation, ca n'est pas tellement compliqué. Mais peut-être qu'utiliser un autre langage s'avèrera plus approprié.

    Pour les optimisations du compilo, c'est quand même assez correct ... Les compilos réputés sont assez bons dans ce domaine, et en progrès constant.


    Je tiens à insister sur le fait que le C++ est un langage qui permet tant de choses, et pas de framework derrière. Les meilleures bibliothèques (Boost pour les outils génériques, Qt pour l'IHM avec un gros support XML/Réseau/BDD [...], ...) point de vue technique et utilité combinées à une bonne utilisation du C++, c'est un duo gagnant. Ce n'est pas dur de les intégrer à un projet, elles possèdent tout ce qu'il faut pour faciliter le développement, ... C# et Java, pour ne citer qu'eux, se retrouvent assez vite rattrappés.

  11. #31
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Aux (avant) dernières nouvelles, tout ce que fait moc est faisable en C++ moderne sans passer par du préprocessing.

    Simplement, à l'époque, et même maintenant pour une plus grande portabilité, ces techniques n'étaient pas utilisables.

    Quant à qmake, on put très bien s'en passer, il n'est en rien nécessaire à Qt.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #32
    screetch
    Invité(e)
    Par défaut
    si on se passe de qmake il faut s'occupper de moc.

    Comment puis je faire pour integrer mes sources Flex/Bison qui sont dans mon projet a un projet Qt ?

    Je ne dis pas que Qt est nul, je dis qu'ils ont implemente eux memes des choses qui sont implementees de base en C#, comme les priprietes et l'introspection.

  13. #33
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    mais beaucoup plus contraignant que ce que permet un langage avec un support direct.
    Ce n'est absolument pas contraignant à utiliser une fois qu'on a conçu les bons outils pour le faire. Concevoir ces outils peut être cependant assez contraignant, mais il s'agit a priori d'une réalisation unique.
    Il est évident, par exemple, que de créer un DSEL pour programmer de manière spécifique n'est pas trivial, même avec Boost.Proto.

  14. #34
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Je ne te dis pas de te passer de qmake, mais de le rendre transparent grâce à ton IDE/éditeur avancé.

  15. #35
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par screetch Voir le message
    si on se passe de qmake il faut s'occupper de moc.
    Si tu le fais à la main, avec CMake ou SCons, c'est automatisable.

  16. #36
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Les IHM en C++ c'est pour la plupart des usines à gaz, en exagérant un peu. Seulement, Qt gère ça très bien, avec comme Miles l'a dit un système signal/slot inégalé encore en C++, à ma connaissance.
    C'était ironique ?
    Parce que bon Qt c'est une grosse usine à gaz qui veut tout faire, ça utilise un préprocesseur bidon (qui peut permettre d'écrire du code non sûr et non type-safe) pour implémenter certains trucs qu'on fait parfaitement en C++, ça utilise des pointeurs dans des interfaces publiques -- souvent à la place de références -- et des allocations dans tous les sens avec une gestion des ressources pas claire (c'est toujours mieux que wxwidgets bien entendu)

  17. #37
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Oui, c'est très criticable. Seulement, FLTK, wx, gtkmm et consorts sont dépassés de loin.
    Mais aux débuts de Qt, les points que tu abordes n'étaient pas si critiqués je pense. L'accent a été mis dessus après je pense.

    Vraiment il est dommage que ça n'utilise pas quelques petites choses apportées et reconnues ces dernières années...

    Sinon, on peut aussi parler de Adam & Eve ... Mais c'est autre chose. Je n'ai jamais essayé par contre. Quelqu'un peut apporter des précisions ?

  18. #38
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Juste pour mettre mon grain de sel.
    wxWidgets tient très bien la comparaison avec Qt quand on a compris que ces deux framework ont une vision très différente de la conception d'IHM.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  19. #39
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le point négatif est que wxWidgets n'est pas autant objet que ne l'est Qt.

  20. #40
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Oui, +1.
    wxWidgets est plus "archaïque" si l'on peut dire.

    Et wxWidgets est relativement moins abouti, tout de même...

Discussions similaires

  1. Réponses: 26
    Dernier message: 11/08/2013, 19h27
  2. Débat sur les outils de développement RAD.
    Par PsychicStorm dans le forum Débats sur le développement - Le Best Of
    Réponses: 20
    Dernier message: 20/08/2003, 11h29
  3. [DEBAT] Cadre ou Technicien ?
    Par Maître Kenobi dans le forum Emploi
    Réponses: 50
    Dernier message: 05/06/2003, 23h19
  4. [DEBAT]Différence entre pme et grande entreprise
    Par dante2002 dans le forum Emploi
    Réponses: 6
    Dernier message: 02/06/2003, 17h20
  5. Réponses: 13
    Dernier message: 11/05/2003, 13h25

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