Journal Eclipse, Qt et GTK+ sont dans un bateau ...

Posté par  (site web personnel) .
Étiquettes : aucune
0
22
sept.
2005
... S'il devait en tomber 2 à l'eau qui feriez-vous rester sur le bateau ?

En fait, je fais une étude rapide sur la possibilité de remplacement d'une IHM faite en Motif et un autre logiciel propriétaire (Sphinx).
Je me suis fait ma propre opinion sur les 3 technologies, mais histoire de ne pas introduire un biais dans mon raisonnement, je souhaitais avoir vos opinions libres sur le sujet.

Ce que je cherche de votre part, c'est juste un retour d'expérience si vous avez été confrontés à au moins 2 des technologies sus mentionnées. Avez-vous une préférence ? Pouvez-vous argumenter en 2-3 trois points votre préférence ?
Pour ceux d'entre vous qui ne serait familier que d'une seule de ces technologies, pourriez-vous me donner un feedback sur celle-ci : difficulté d'implémentation, difficulté d'en comprendre la philosophie, etc. ou l'inverse aussi :-)

Voilà, je vous remercie pour votre aide.

PS: je transmettrais ma propre opinion une fois avoir accumulé vos réponses.
  • # Aaaah que c'est bon d'être LIBRE de choisir!

    Posté par  . Évalué à 2.

    QT = C++
    GTK = C ou C++

    QT = Essentiellement Trolltech.
    GTK = Un peu tout le monde.

    QT = GPL et autre chose.
    GTK = GPL

    Je préfère Gnome, donc mon choix personnel est GTK.
    • [^] # Re: Aaaah que c'est bon d'être LIBRE de choisir!

      Posté par  (Mastodon) . Évalué à 10.

      GTK = C ou C++

      ou Perl, ou Python, ou Ruby, ou Java, ou Eiffel, ou Objective Caml, ou C#, ou sûrement plein d'autres que je n'ai pas encore essayés :)

      Autant GTK+ est assez lourd à utiliser en C, autant dans un langage de plus haut niveau comme Ruby, c'est très agréable.
    • [^] # Re: Aaaah que c'est bon d'être LIBRE de choisir!

      Posté par  . Évalué à 10.


      QT = GPL et autre chose.
      GTK = GPL

      non , GTK est LGPL
      • [^] # Re: Aaaah que c'est bon d'être LIBRE de choisir!

        Posté par  . Évalué à -10.


        gtk+ 2.8.3:
        GNU LIBRARY GENERAL PUBLIC LICENSE
        Version 2, June 1991

        Copyright (C) 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not allowed.

        [This is the first released version of the library GPL. It is
        numbered 2 because it goes with version 2 of the ordinary GPL.]

        J'ai loupé une marche?
    • [^] # Re: Aaaah que c'est bon d'être LIBRE de choisir!

      Posté par  (site web personnel) . Évalué à 9.

      si je ne me trompe pas il y a aussi des bindings perl, python, ruby, java pour kde (et donc pour qt je pense)

      Sinon quand tu parles d'Eclipse, tu fais référence à quoi ?
      Le trio à départager ça serait pas plutôt swing (ou java), qt et gtk ?
      • [^] # Re: Aaaah que c'est bon d'être LIBRE de choisir!

        Posté par  (site web personnel) . Évalué à 4.

        Peut être veut-il parler de SWT qui a été développé par et pour Eclipse.
        • [^] # A propos d'Eclipse

          Posté par  (site web personnel) . Évalué à 1.

          Effectivement, ça serait de passer à SWT pour la partie graphique en ayant en tête à terme que la prochaine version du logiciel pourrait être refaite entièrement basée sur la plateforme d'Eclipse. Donc le travail sur les IHM pourrait alors être utilisé.

          Au fait l'environement courant de l'application est SUN Solaris 8-10, mais pour le futur Linux est plus que envisagé!

          Cheers,

          Jean-Christophe
          • [^] # Re: A propos d'Eclipse

            Posté par  (site web personnel) . Évalué à 2.

            En fait tu as l'air de focaliser sur les APIs graphiques, mais comptes-tu réutiliser du code existant de l'appli ? Si oui regarde le langage utilisé, tu devrais déjà pouvoir éliminer quelques solutions pour les APIs graphiques... (ou pas)
            • [^] # Re: A propos d'Eclipse

              Posté par  (site web personnel) . Évalué à 2.

              Effectivement, le langage de l'appli obligerait pour un moindre coût à utiliser seulement une des 3 de bibliothèque graphique.
              Mais en fait, ma vision est également à plus long terme. On cherche à voir ce que pourrait apporter Eclipse et sa plateforme pour notre application. Donc si on doit bouger à terme pour Eclipse, pourquoi pas le faire maintenant pour les IHMs...

              La pour me suivre, je vais faire un tour par l'archi de l'appli:
              l'appli est divisée en 2 un client et un serveur qui causent en CORBA entre eux. Le seveur n'a rien de graphique mais contient l'intelligence du système, par contre le client ne fait qu'afficher les données du serveur.
              Donc si à terme on baserait tout sur Eclipse, on pourrait aujourd'hui faire le client sur cette base, car c'est lui qui m'intéresse aujourd'hui. Et à terme migrer tout le reste de l'appli.

              Mais évidement, il est moins coûteux sur le court terme de passer à un Qt ou GTK-- (car c'est du C++). Le moins coûteux serait Qt car c'est bien documenté pour la migration vers Motif, et la version 4 offre quelques facilités à ce niveau.

              Jean-Christophe
              • [^] # Re: A propos d'Eclipse

                Posté par  (site web personnel) . Évalué à 3.

                Ce qu'il faut voir c'est que Eclipse (ou plutôt SWT, Eclipse c'est l'IDE), c'est quand même spécifique à Java, et que si tu veux utiliser SWT, faudra tout recoder en Java ou se taper JNI vers du C++ (ce qui est loin d'être trivial).
              • [^] # Re: A propos d'Eclipse

                Posté par  . Évalué à 4.

                Ton serveur n'utilise aucune spécifité graphique donc il n'ya auras de rapport direct avec SWT pour lui.

                Si toutefois tu pars sur cette solution tu devras dans un premier temps réécrire la couche graphique du client et en plus utiliser un ORB et regenér ta partie cliente

                Par la suite, tu peux si tu le souhaites récrire le serveur en JAVA (sous Eclipse en tant qu'IDE) conservere CORBA ou communiquer directement via RMI.

                De même tu peux évoluer vers une architecture clients riches avec RCP
                http://www.eclipse.org/rcp/(...)
                ce qui t'apporteras des facilités en terme de déploiement.
                • [^] # Re: A propos d'Eclipse

                  Posté par  (site web personnel) . Évalué à 1.

                  Oui effectivement quand je parlais de baser le serveur sur la plateforme Eclipse, je pensais à RCP. De même si on fait le mouvement vers Eclipse pour le client aujourd'hui on aura le choix d'utiliser SWT avec JNI ou de réécrire le tout basé sur RCP. Mais utiliser SWT avec JNI c'est faire du travail un peu pour rien (à mon humble avis...)
                  Pour la partie ORB, on ne devrait pas avoir trop de problème car on a un autre projet qui fonctionne sur ce principe (serveur C++, com CORBA et client Java). Par contre, je ne sais pas quel ORB ils ont choisis :-( (Probablement JacORB.) On pourra se débrouiller pour récupérer du code ou des compétences.

                  Enfin le but de ces études c'est de montrer les avantages, inconvénients et coûts estimés des différentes solutions, dans proposer une, et de voir finalement votre management ne pas bouger :-( ou de faire des choix étranges! Donc je ne suis pas sûr à la fin que je mentionnerai la solution SWT+JNI, ils seraient capable de la choisir ;-)
                  • [^] # Re: A propos d'Eclipse

                    Posté par  . Évalué à 2.

                    L'approche JNI pourrait permettre une migration progressive de la partie client.
                    Tu ne recodes que la couche présention et appelle ta logique applicative au travers de JNI dans un premier temps
                    Si tu arrives à fiare passer plusieurs itérations pour le projets c'est pas mal.
                    Notes que j'avais vu passer une fois que JNI n'était pas l'unique (ni la meilleure) solution pour appeler du natif ou qu'il y avait des surcouches qui facilitaient le travail (je ne me souviens plus)
                    un coup de Google
                    http://weblog.janek.org/Archive/2005/07/28/AlternativestoJavaNative(...)

                    Mais c'est vrai qu'on s'éloigne un peu du sujet sur les tk graphiques

                    Sinon pour rich cleintss semble que dans ma boite on s'oriente vers une solution RCP face aux alternatives Xul, OpenLazlo et autres Flex.
                    Il faut dire qu'ici la culture est plus Java/clients légers.
                    • [^] # Re: A propos d'Eclipse

                      Posté par  . Évalué à 1.

                      La page que tu sites ne parle pas de Swig: http://www.swig.org/(...)

                      Swig permet de faire le lien entre du code C/C++ et d'autres langages comme Java, Perl, Python, Ruby, C#, OCAML, ...
                      A essayer.
  • # Mon expérience

    Posté par  . Évalué à 10.

    Pour ma part, j'ai développé différents produits en environnement pro dans le domaine gestion/compta :

    Les techno évaluées et utilisées (selon besoins des clients) : QT / wxWidget / Gtk

    Au final, QT largement vainqueur pour :

    - qualité du framework et notamment la documentation
    - portabilité (dev sous Mac, Win et désormais deux portage en cours sous Linux sans soucis et cela pour toutes les appli sur lesquelles j'ai bossé)
    - réactivité de trolltech par rapport aux bug signalés mais également pour le suivi
    - bonne compatibilité entre les version des framework, même lors de changements majeurs (de plus trolltech fourni des outils d'aide à la migration du style qt2 -> qt3 et également qt3 -> qt4)

    Deuxième place : wxWidget

    - j'ai commencé avec il y a plus de 6 ans donc personnellement j'aime bien :-)
    - assez robuste mais peu d'exemples et parfois le framework est assez bas niveau (widget manquant par exemple ou bien la gestion de l'impression ou il faut faire pas mal de boulot soit même, contrairement à Qt)
    - quelques soucis de portabilité lors de développements Windows et Macintosh


    Troisième place Gtk :

    - Prise en main assez difficile
    - Doc assez pauvre mais apparement cela s'améliore
    - Personnellement, je trouve qu'il n'y a pas une assez grande constance entre les différentes fonctionnalités (en terme de paramètres, de nommage de fonctions et de structures, de types de retour, etc) c'est déroutant au début mais on s'y fait vite.
    - Personnellment, je trouve Gtk un peu moins "pro" et moins bien fini que Qt et wxWidget
    - J'ai essuyé de très nombreux bug dans les versions 2.4 et 2.6 avec des corrections proposées parfois "sauvages" :-)

    Au besoin, contacte-moi par mail
    • [^] # Re: Mon expérience

      Posté par  (Mastodon) . Évalué à 4.

      Pour quelqu'un qui a déjà fait des interfaces graphiques avec SWING (par exemple), je trouve que GTK n'est pas compliqué du tout à aborder: il utilise essentiellement les mêmes concepts (qui sont quand même assez classiques).

      Les "layout managers" deviennent des "containers", les "event listeners" deviennent des "signals", et voilà, on peut directement se lancer en gardant l'API sous le coude.

      Par contre, c'est vrai que la documentation manque parfois, surtout sur les widgets les moins utilisés ou les plus récents/complexes.
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 7.

        Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Mon expérience

      Posté par  (site web personnel) . Évalué à 10.

      Le framework QT est vraiment exceptionnel.
      Le mécanisme de SIGNAL/SLOT par exemple est terriblement efficace, à tel point que je l'utilise même pour mes propres structures de données lorsque j'ai besoin d'implémenter un mécanisme évènementiel.
      La documentation est exemplaire.
      Le travail est propre.
      Bref, c'est que du bonheur.
      Néammoins, si je voulais être totalement honnête, je dirais que si TrollTech ré-écrivait QT en C#, ça ne serait pas plus mal. En fait, au fil du temps, on se rend compte que les macros QT servent à pallier les manques du langage (qui commence à vieillir, avouons-le).
      • [^] # Re: Mon expérience

        Posté par  . Évalué à 2.

        Je te trouve bien méchant avec le C++. Gtkmm permet de gérer le mécanisme SIGNAL/SLOT sans passer par un pré-processeur extérieur au C++. Glade permet de développer rapidement des interfaces graphiques dans des fichiers ".glade". La libglademm charge dynamiquement ces fichiers et en fait une représentation Gtkmm afin de pouvoir la manipuler. Par contre, la documentation n'est pas des plus complète et le port de programme Gtk vers windows n'est pas des plus aisé je l'admet.
        • [^] # Re: Mon expérience

          Posté par  (site web personnel) . Évalué à 4.

          Je pense qu'il veut surtout mette en évidence le fait que les slot/signal sont "intégrés" nativement et élégament dans le langage C#, contrairement au C++ qui nécessite plus de contorsions.
          • [^] # Re: Mon expérience

            Posté par  . Évalué à 1.

            Peut-être, mais je ne pense pas que ce soit des contorsions, la libsigc++ (utilisée par Gtkmm) est assez clair je trouve, il faut juste un compilateur récent. J'ai peut-être un avis biaisé par quelques années de C++ je l'avoue. :)
          • [^] # Re: Mon expérience

            Posté par  (site web personnel) . Évalué à 3.

            Exactement.
            On peut probablement discuter de la pertinence d'avoir intégré un système delegate/event dans le langage mais force est de constater que je prend réellement plaisir à l'utiliser lorsque je fais du C# et je pense pour ma part que c'est une évolution remarquable.
    • [^] # Re: Mon expérience

      Posté par  . Évalué à 2.

      À l'époque ou j'ai essayé Gtk+. Il y avait des articles dans Linux mag sur Qt et Gtk+. Bien que j'ai survolé les articles, le code Gtk+ (côté utilisateur) me semblait plus logique. Je dirais même que Gtk+ bénéficie de la simplicité (relative) du C, et que Qt hérite de tous les défauts de C++. Sinon, c'est vrai que la documentation est parfois absente sous Gtk+. Personnellement, je pense qu'une interface graphique ne devrait être programmé quand langage de script. Ce qui réduit les différences.

      Et GnuStep?
  • # Eclipse?

    Posté par  . Évalué à 8.

    Mon avis sur eclipse, c'est que c'est, et de tres loin, le meilleur IDE que j'ai essaye.
    Bon c'est sur que si tu fais autre chose que du java, ca va pas te servir a grand chose, si ce n'est occuper de la RAM :)

    Les wizards sont pratiques (avec les classiques : generateur de classes, auto implementation d'interfaces, en tetes automatiques etc.), la completion est typee, organisation auto des imports, navigation dans le code, sauts aux classes mere/filles, surdefinition de methodes, la compilation a la volee qui change la vie, il te propose des corrections aux erreurs de codes, il te propose meme des optimisations, detection du code mort, evidemment un refactoring surpuissant, le debugger est top of the pop (pas a pas, modification a la volee du code execute, infos detaillees sur tous les objets du bloc entre autres etc.), integration de ant, la vue CVS est plutot bien branlee, avec un diff auto etc. et je dois surement oublier pas mal de features.
    A ca tu ajoutes une chiee de divers plugin proprio ou libre, de qualite inegale (d'excellent a plutot a chier) dont certains sont indispensables.
    Clairement, utilise la version 3.1 voire 3.0, les 2.x sont trop vieilles.

    Bref, je peux pas imaginer un developpement java sans eclipse.
    Et pourtant, ya 1.5 an, j'etais un inconditionnel d'emacs/ligne de commande/make (et quand je dis inconditionnel, c'est inconditionnel, ie je l'ai meme tente sous windows).

    Un peu gourmand en ram par contre (quoique ca tourne tres bien sur mon p4 2Ghz/512Mo au taff), des fois il "garbage collector", en gros il freeze pendant 30 secondes, le temps de faire passer le gc, rien de mechant ca me le fait tout au plus 2 fois par jour.

    Pour le c/c++ par contre..
    c'est plutot bof.

    La bonne nouvelle c'est que autant la version Windows est top of the pop, autant la version linux...
    bah je trouve qu'elle "lag" trop, surement du a la jvm qui est a chier.
    bon, ca c'est un probleme qui est plus lie a java en soi qu'a eclipse.
    Jamais essaye la version compilee avec gcj, ca resoud peut etre ce probleme?

    Apres, SWT.
    Pas encore assez mur a mon gout.
    Des choix d'implementation a s'arracher les cheveux. Par exemple, la classe Button est declaree finale. Du coup pas moyen de se faire un bouton au comportement customise en profitant de l'heritage etc. Et c'est comme ca pour enormement de widgets de base.
    Pas de spinner avant la version 3.1. Et ca m'a sacrement fait chier ca, j'ai du implementer un spinner a partir d'un slider, super.
    Une javadoc proprement pourrie, mais pas mal de tuto a droite a gauche et des newsgroups actifs, donc ca se balance.
    Necessite de liberer les objets graphique (car natifs...). En pratique, la plupart des objets de la lib se liberent tout seul quand ils se ferment, donc c'est pas si genant que ca.
    Des composants de tres haut niveau pour gerer les vues sur les tables/arbres etc. extremement pratiques et plutot simple a mettre en oeuvre.
    Les layouts dispos par defaut sont biens penses (contrairement a cette chose qu'est swing).
    Au final, la prise en main est pas triviale, mais ca passe bien.

    Quelques gros manques tout de meme, par exemple SWT ne gere pas la transparence a la png, c'est tout ou rien.
    Le DND "évolué" (ie ; dnd d'objets java) est tres chiant a mettre en oeuvre, car on doit passer par une moulinette java -> natif puis natif ->java. Le DND de texte se passe nickel par contre.

    Mais conceptuellement, c'est exactement ce qu'il faut a java : de l'ihm moins lourde a coder que Swing, integree a l'os (car natif reposant sur les libs de l'os) et reactive.
    la lib est dispo pour beaucoup d'environnement (je l'ai fait tourner sur un HP-UX 10 et un sunos 4, c'est vous dire si ca tourne sur des trucs bizarres).
    Portabilite egale a celle de java (j'ai compile sous windows et deploye sur des stations sun sans AUCUN probleme)

    Il ya SWT Designer pour creer ses propres gui de facons graphique dans Eclipse, malheureusement proprio et payant comme plugin.
    Je ne le connais pas, donc je peux pas dire ce qu'il vaut.

    Je pense que d'ici la version 5 on aura quelque chose de vraiment mur, et un argument de poids face a cette saloperie de SWING.
    • [^] # Re: Eclipse?

      Posté par  . Évalué à 2.

      ah oui, j'oublias, dans le monde unix, ya deux implementation de SWT, une basee sur GTK et une basee sur Motif.
      c'est toi qui choise en fonction de ce que tu veux ou a a disposition.
      .
    • [^] # Re: Eclipse?

      Posté par  . Évalué à 3.

      Mon avis sur eclipse, c'est que c'est, et de tres loin, le meilleur IDE que j'ai essaye.
      Bon c'est sur que si tu fais autre chose que du java, ca va pas te servir a grand chose, si ce n'est occuper de la RAM :)


      C'est un peu sévère... perso, je me suis mis à Python récemment avec pydev, le plugin eclipse qui va bien ( http://pydev.sourceforge.net(...) )

      Et que du bonheur... stabilitité, refactoring correct (pas parfait mais ça progresse) efficacité grace aux visualiseurs de classes d'Eclipse, auto-complétion très aboutie (dans les limites du langage bien sur, il peut difficilement deviner ce que contient un tuple par exemple)

      Un plugin que je vous encourage à essayer.

      Par ailleurs, si ça peut servir à quelqu'un, je suis sous Fedora qui a la particularité de faire tourner Eclipse avec le binaire java libre. Et bien... force est de constater quelques lacunes encore. Par exemple, impossible de faire marcher la nouvelle version de pydev sans le java de Sun. Par ailleurs, j'ai constaté que faire tourner eclipse avec le vrai java accélérait sensiblement le bouzin (en plus de l'option -Xmx512M)
      • [^] # Re: Eclipse?

        Posté par  . Évalué à 2.

        oui, effectivement, je me suis un peu enflamme.

        Disons que Eclipse est tout bonnement excellent pour le java.

        Apres, ben ca depend de la qualite du plugin et du langage dans lequel on developpe.

        C'est sur que le C/C++ ne permet pas trop les features offertes pour java, mais qui sont quand meme permises par des languages plus haut niveau style python etc.
  • # XUL !

    Posté par  (site web personnel) . Évalué à 2.

    Et pourquoi pas XUL. Si on arrive a faire un firefox, ca doit bien marcher pour une autre IHM.

    En pratique, ca dépend un peu du type d'IHM que l'on veut faire... Personnellement, je suis plus que tenté de faire toutes mes IHM en script.
    • [^] # Tous est dans la phrase

      Posté par  . Évalué à 5.

      Si on arrive a faire un firefox

      Un jour j'aimerai avoir un navigateur web parfaitement fonctionnelle ... Mais pour l'instant j'en ai jamais vu. Alors les technos du web, je suis frileux.
    • [^] # Re: XUL !

      Posté par  . Évalué à 2.

      Les IHM en script c'est ce qui se fait pour les applis pro(tm)(r)(c).

      Enfin, du moins en microélectronique. C'est du TCL/TK pour la plupart, ca te permet de modifier l'apparence de l'appli pour l'adapter à ton environnement de travail assez facilement (menus spéciaux qui appellent des scripts, nouveaux widgets, etc...) Je crois que ca se mettrait à râler sérieusement si les applis n'était plus modifiables :)

      Je suis pas sûr de l'intérêt pour les applis grand public, autant faire l'IHM avec les outils adaptés au langage utilisé pour écrire l'appli, ca facilite la vie du développeur, AMHA. De toute facon l'utilisateur lambda ne va pas s'amuser à aller modifier son appli.
      • [^] # Re: XUL !

        Posté par  . Évalué à 4.

        ce qui me gene le plus avec les languages de scripts, c'est que c'est pas compile...

        Et si tu veux faire des IHM un tant soit peu evoluee (ie : pas juste un layout d'objets de base, mais des interactions haut niveau entre les composants), ben c'est pas franchement top of the pop...
        Bon, je sais c'est un coup a prendre tout ca, mais quand meme la phase de compilation permet quand meme de detecter un tres grand nombre d'erreurs de facon automatique..
        • [^] # Langages statiques/dynamiques et bugs

          Posté par  . Évalué à 4.


          ce qui me gene le plus avec les languages de scripts, c'est que c'est pas compile...
          [...]
          Bon, je sais c'est un coup a prendre tout ca, mais quand meme la phase de compilation permet quand meme de detecter un tres grand nombre d'erreurs de facon automatique..


          Il y a des prémisses à ton raisonnement qui sont discutables...

          1) Le premier est que dans ton esprit tu limites l'usage des langages dynamiques [1] aux seuls scripts alors qu'ils sont de facto des langages permettant de réaliser des applications des pieds à la tête

          2) Le second est qu'un code écrit dans un langage statique contient autant ou moins de bugs qu'un code écrit dans un langage dynamique.

          - D'une part, mon impression est que, les langages dynamiques étant plus expressifs que les langages statiques, ils permettent de décrire le même besoin avec moins de code, de façon plus lisible ; j'y vois plutôt (toutes choses égales par ailleurs) un gage de plus grande fiabilité.

          - D'autre part, certains bugs (dans quelle proportion ? non négligeable je dirais) détectés à la compilation découlent directement du fait que le langage... requiert une compilation ! Exemple typique: dans un langage statique tu écris souvent qu'une classe C hérite d'une classe S ou implémente une interface I. Si tu as mal écrit l'identifiant de S ou I, ou que celui-ci a changé au cours du développement, tu auras une erreur à la compilation. Or, aussi gênant que ça puisse paraître quand on n'y est pas habitué, l'implémentation la plus naturelle dans un langage dynamique de cet exemple ne nécessite *pas* d'écrire S ou I... on adopte plutôt l'approche de "duck typing" (pas le temps d'expliciter mais d'un coup de google ca se trouve) --> avec un langage dynamique, de telles erreurs *n'existent pas*

          3) Dernier point: l'idée, ou l'espoir, que corriger des bugs à la compilation fasse gagner du temps

          => De toutes manières, on ne peut pas se contenter de débugger lors de l'écriture du code, les tests unitaires + la phase de "recettage", de tests fonctionnels, sont indispensables. Ceci considéré, chasser 2 ou 3 bugs supplémentaires lors de la compilation ne change pas grand-chose

          [1] J'y vais à la louche dans ce commentaire et ne considère que des langages "dynamiques" (python, ruby,...) contre des langages "statiques" (c++, c#, java,...).
          • [^] # Re: Langages statiques/dynamiques et bugs

            Posté par  . Évalué à 2.

            1) Le premier est que dans ton esprit tu limites l'usage des langages dynamiques [1] aux seuls scripts alors qu'ils sont de facto des langages permettant de réaliser des applications des pieds à la tête
            j'entends bien, je saisi tout a fait la difference, et je sais pertinemment que de grosses applis sont ecrites avec ces langages dit "de script".

            avec un langage dynamique, de telles erreurs *n'existent pas*
            Disons plutot qu'elles peuvent ne pas exister.
            Et quand aux erreurs de typages, elles peuvent toujours exister (t'as beau avoir un langage dynamique si t'affecte des types incompatibles, tu vas avoir un probleme).
            Itou pour les declarations implicites de variables.
            Et celles la elles peuvent etre particulierement chiantes a detecter en runtime.

            Quand tu code un plugin ou equivalent, effectivement t'es bien oblige de pouvoir etendre une classe qui n'existe pas dans ton environnement de dev.
            Quoique t'es quand meme oblige d'avoir un minimum de spec dessus, au minimum l'interface de la classe etendue, donc en quoi est ce utile ? (c'est une vraie question, je connais assez peu ces langages..)

            Cela dit, ya pas mal de cas ou tu ne veux pas deriver une classe inexistante et ou tu aimerais bien pouvoir le verifier en compilant ton code pour t'en assurer, plutot que de rechercher la faute de frappe malencontreuse pendant des heures.

            Disons que la compilation permet de blinder un peu plus l'appli de facon automatique.

            En fait, j'ai mal formule l'histoire de compilation, sans forcement compiler au sens strict, le fait de pouvoir valider le typage serait un plus notoire je pense.

            Sinon pour reagir a ton [1], contrairement a ce que tu dit, Java est dynamique, tu peux charger une classe en runtime, appeler des methodes dynamiquement dessus etc., je m'en sert d'ailleurs enormement au taff en ce moment.
            Evidmment, pas possible de compiler une classe derivant une autre sans la classe mere, vu qu'il faut generer du byte code.
          • [^] # Re: Langages statiques/dynamiques et bugs

            Posté par  . Évalué à 3.

            Un truc qui vient de m'arriver et qui est un désavantage des languages interprétés : je développe un outil en Perl qui met environ 20 minutes pour se finir. Et comme c'est moderne et tout, j'utilise pour la sortie des templates (programmés eux aussi en Perl).

            Génial, c'est tout flexible et tout. Seulement m'arrive d'avoir des bugs dans les templates de sortie. Des trucs tout con (genre un point virgule oublié à la fin d'une ligne). Comme les templates sont compilés lors de leur utilisation (on peut considérer ca comme des plugins), c'est au bout de 15 minutes qu'il me sort que j'ai une erreur de syntaxe. Et j'ai donc le droit de corriger mon erreur et de tout recommencer.

            Avec un langage précompilé, cette erreur se serait vue lors de la compilation (relativement rapide, je dirais même pas une minute si c'était en C), et j'aurais pas attendu pendant 15 minutes pour rien.

            Bon, c'est assez spécifique (temps de compilation théorique court par rapport au temps d'exécution de l'appli), mais quand même.

            Ceci dit, ca me permet de mouler 2 fois plus sur linuxfr :)
            • [^] # Re: Langages statiques/dynamiques et bugs

              Posté par  . Évalué à 3.

              ben c'est exactement ce a quoi je pensais.
              des erreurs triviales de syntaxe/typages ne peuvent se voir qu'en runtime et ca c'est pas terrible je trouve...
            • [^] # La compilation ne fait pas notre boulot...

              Posté par  . Évalué à 3.

              Et à moi, ça m'inspire que c'est un exemple typique de situation où on attend trop de la phase de compilation. Lorsqu'un code "statique" compile correctement, on a tendance (c'est aussi mon cas) à se dire, OK, tout va bien, je ne dois pas avoir fait d'erreurs. Mais malheureusement:

              1) un compilateur ne pourra jamais trouver tous les bugs
              2) ça relève d'une approche que j'appellerai ici, par provocation, "roulette russe" : on exécute son application compilée. En cas de bug, on corrige, et dans le cas contraire, confiant, on embraye sur une nouvelle fonctionnalité à implémenter. Or à cette étape, le code écrit est loin d'être fiable. Une approche beaucoup plus saine consiste à écrire les tests unitaires, en d'autres termes le comportement auquel l'application doit obéir, avant d'écrire l'application elle-même.

              Je dirais que l'étape de compilation lors de l'utilisation de code "statique", a tendance à nous bercer d'illusions sur la fiabilité du code écrit et à masquer les dangers de l'approche "roulette russe".

              Si on choisit d'adopter l'approche plus saine "les tests précèdent le code", alors il me semble que les langages "statiques" n'ont pas d'avantage par rapport aux langages "dynamiques", sur ce point précis.

              Inversement, je me verrais mal désormais écrire du code fiable avec un langage, qu'il soit "dynamique" ou "statique", sans adopter cette approche.
    • [^] # Re: XUL !

      Posté par  . Évalué à 3.

      Bin justement, il y a un mois, j'ai voulu tenter l'experience, un vrai désastre!

      * Pas d'IDE, d'éditeur spécialisé ou de plug-in/mode suffisament poussé: les rares projets sont soit mort (depuis plusieurs années pour certains), soit en phase de conception! Le plus abouti est écrit en Java, c'est dire la confiance qu'ils ont eu dans la techno XUL.

      * Pas de documentation: Mème si il y a un effort la dessus, la grosse majoritée de la doc que l'on trouve est dépassée. Les trés nombreux tutoriaux que l'on trouve sur le net sont en fait tous les mèmes et largement incomplet dés que l'on creuse un peu plus leurs exemples.

      * Pas de stabilitée! Tout a changé (et va changé?) en moins de deux ans. C'est un miracle si une applications écrite il y a a peine un ans s'installera et tournera sans problème sur ton mozilla (ou firefox!). Bon ok la techno est jeunes, mais ne l'est-t-ell pas un peu trop? Si je développe un truc, dans six mois il faudra que je le porte vers le nouveau lézard?

      * Complexitée de la plateforme elle mème: Que fait elle ? tout ... mais bon tout n'est pas encore implémenté.
      Des technos a comprendre: XPCOM, RDF, chrome ... Pour un exemple "jouet" tou va biens, tu peut t'en sortir avec tes connaissance actuelles (JS+XUL) mais dés que tu complique tu te les prend toutes d'un coup en pleine face. De plus créer ton composant XPCOM n'est pas difficile mais il faut étres (trés) méticuleux -> difficulté de tester ou de comprendre "en douceur".
      Instancier et utiliser un composant XPCom c'est plusieurs lignes de plus de 80 caractères! (ok tout est logique et simple quand on a compris mais bon c'est lourding et nuit a la lisibilitée)
      Certaines technos me font pensées au "théoriquemetn parfait" mais "inutilisable/imanipulable" (par exemple les "templates" ne sont utilisables que sur des données de types RDF ... que tout le monde connait, qui est simple et concis, et qui est trés utilisé pour nos données actuelles n'est-ce-pas?)

      * Enfin XUL est ... plutot mal foutu a mon sens: Dans un "listbox" (la vue "liste") tu ne peut afficher que objets d'un types prédéterminés, tu ne peut pas mettre un composant autres qu'un label et un icone.
      Pareil pour les arbres.
      Ce que vous verrez comme un point de détail est en fait important car la hiréarchie des composant (l'arbre d'héritage quoi) est mal faite car elle nous oblige a dire "amen" au avis des concepteur de XUL (citation: "avoir la possibilitée d'afficher dans un arbre, autre chose qu'un label, un icone ou une barre de progression est _inutile_"). On est trés loin de la souplesse de SWING ou QT alors que l'on est "dynamique" (donc on devrait avoir des possibilitée plus importantes).

      * Enfin il faut pas se leurrer, ca rame un poil. Pour une interface simple c'est ok mais le tout est quand mème un peu mou.

      Et pourtant! je révais d'une interface graphique "interprété", souple, jolie/elegante, basée sur de standard (XML) et "portable" (un super remplacant a TCL/TK quoi).
      Le top du top: avoir juste la technos XUL seule (et lègèrement amèliorée) et pouvoir l'utiliser avec n'importe quel langage (Eiffel, lisp, java Python ..).
      • [^] # Re: XUL !

        Posté par  (Mastodon) . Évalué à 2.


        Et pourtant! je révais d'une interface graphique "interprété", souple, jolie/elegante, basée sur de standard (XML) et "portable" (un super remplacant a TCL/TK quoi).


        Dans une certaine mesure, GTK+Glade+(Python|Ruby) fait ce que tu veux: tu as une description de ton interface en XML, c'est interprété, souple, et ça marche sur toutes les plateformes où GTK est porté.
      • [^] # Re: XUL !

        Posté par  . Évalué à 2.

        Et pourtant! je révais d'une interface graphique "interprété", souple, jolie/elegante, basée sur de standard (XML) et "portable" (un super remplacant a TCL/TK quoi).
        Mais tu l'as
        http://luxor-xul.sourceforge.net/(...)
    • [^] # Re: XUL !

      Posté par  . Évalué à 3.

      Ca depend du projet. Si c'est de la pure UI (genre un logiciel client qui se connecte a un serveur) ca va, mais s'il faut faire des traitements couteux en javascript ca rame. Il faut alors faire un composant XPCOM, et la faut s'accrocher.

      Inversement si tu fais du GTK en Ruby (ou en Python) c'est tres simple de brancher du code C pour coder certaines parties critiques.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.