Journal Quel langage choisir.

Posté par  .
Étiquettes : aucune
0
25
fév.
2004
Bonjour a tous,

Je suis à la recherche d'un bon langage pour développer des application Gtk. Voici quelques contraintes, j'aimerais que le langage en question les respecte.
- Je ne veut utiliser que des outils OpenSource
- Je veut un langage qui fasse un peu plus de choses pour moi que n'en fait le C
- Je veut un langage moins lourdingue que C++
- Je veut un langage qui gere tout seul la memoire
- Je veut un langage qui ait un typage statique fort

Ocaml serait un bon choix, et j'aime beaucoup ce langage, mais je n'aime l'utiliser que pour du fonctionnel pur, et j'ai l'impression qu'il me faudra encore beaucoup de temps pour que mon esprit s'habitue a ce style de programmation.

Il me vient a l'esprit 2 langages: java (avec gcj et le binding gnome) et C# (avec mono et gtk#) En connaissez vous d'autres qui repondent a mes criteres ? Java a l'avantage d'etre compilé nativement (halte aux trolls, je pale bien sur avec l'implementation de reference du libre, qui est gcj) mais je connais trop peu ces deux langages pour connaitre les autres avantages et inconvénients de chacun. Donc vos conseils me seront d'une grande utilité.
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 0.

    Troll detected
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    halte aux trolls

    bien tenté :p
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    Pike http://pike.ida.liu.se/(...)

    Quentin Garnier.
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    perl !

    on me dit à l'oreil que typage statique fort ne signifie pas $ @ %

    Bon. je sort, alors ->[]
  • # Re: Quel langage choisir.

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

    #!/usr/bin/perl -w
    use strict;
    print "Perl ?\n";
  • # Re: Quel langage choisir?

    Posté par  . Évalué à 10.

    Je te conseille le morse: http://www.cjonline.com/stories/021704/pag_morsecode.shtml(...)
    Tu peux tout coder en morse.
    Tu peux le faire avec un outil open source qui s'appelle la lampe torche.
    Tu peux faire plus de choses qu'en C, puisque tu peux même faire du C en morse.
    Le typage est fort. Un trait est un trait. Un point est un point.
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 2.

    ADA ?
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 1.

      c'est utilisé pour autre chose que adacoincoin et les tps d'algo ?
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        Oui il me semble que c'est utilisé chez Thalès (ATM) par exemple, car c'est un langage qui a de très bonnes propriétés, rien que quand "ca" compile tu as certaine garantie que ca va faire ce que tu veux.
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        Métro Ligne D, Lyon, France ;)
      • [^] # Re: Quel langage choisir.

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

        Conduite de métro automatique ligne 14, Paris
        Système de sécurité et régulation du trafic dans le tunnel sous la manche
        Aérospatiale, nucléaire ...
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    A premieres vu j'aurai effectivement dit Java, mais bon..

    Sinon de ce que je sais :

    C# ca pu un peu, et c'est très microsoftien quand meme (.net.. bouh)

    Je veut un langage qui fasse un peu plus de choses pour moi que n'en fait le C
    Un bon programmeur C fait a peu près tout ce qu'il veut avec. (moi pas)

    Java n'a pas de pointeur a proprement parler tel qu'en C ou C++. Ca peut parraitre pratique mais parfois, pour des exemple tout bete comme créer une fonction void permuter(int a, int b) bah on est bien emmerdé pour modifier les valeurs passées en parametres, car Java ne peut pas le faire, il sait le faire qu'avec des tableaux, des chaines, bref des variables compliqués, bah de simples entiers.
    Autrement java est un langage assez simple d'utilisation, très simple a prendre en main si on a l'habitude du C/C++, mais pourquoi coder en gtk avec java alors que les classes graphiques swing de java 2 marchent très bien ?
    Sinon netbean pour compiler java ca marche pas trop mal, mais c'est pas du gpl, c'est spl je crois..

    Je pense donc, en conclusion, que malheureusement pour toi le C/C++ reste le meilleur compromis pour faire du gtk.. :-(

    Désolé

    ++
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 2.

      Pour permuter il suffit d'utiliser des objets Integer plutot que des types primitifs int. Les objets sont passes par reference, tandis que les types primitifs sont passes par valeur.

      Integer iA = new Integer(a);

      rien de plus simple.. le probleme n'en est pas un.
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        J'a eu un probleme pour créér une fonction générique un jour avec un objet Integer, je connais "l'astuce", mais sur le fond je persiste avec mon idée (qui est, au passage, aussi valable pour le javascript)
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 2.

      "mais pourquoi coder en gtk avec java alors que les classes graphiques swing de java 2 marchent très bien ?"

      1erement, pour des questions d'intégration a mon environnement
      2emement, il me semble que l'implementation de swing dans gcj n'en est qu'a ses débuts.
    • [^] # Re: Quel langage choisir.

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

      Un bon programmeur C fait a peu près tout ce qu'il veut avec. (moi pas)


      correction : un bon programmeur C fait TOUT ce qu'il veux avec (au pire le peu de choses "impossibles" (bootloader etc), il peux le generer en C :)
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        Normal, c'est complet au sens de Turing. Comme l'assembleur. Un bon programmeur fait tout ce qu'il veut en assembleur. (mais qu'est-ce qu'il se fait chier).
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 1.

      C# ca pu un peu,

      Ah bon ? Pourquoi ?

      et c'est très microsoftien quand meme (.net.. bouh)

      Certes, c'est Microsoft qui l'a cree mais c'est maintenant normalise par ECMA. Donc sur toute la partie standard, et sur forcement sur Gtk#, il n'y a aucun probleme de brevet.

      En fait, tu voulais peut-etre dire "C# ca pue un peu parce c'est de Microsoft" ?
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 2.

        C# sans .net n'a que tres peu d'interet.

        C# ca pue un peu parce c'est de Microsoft
        Oui et c'est bien ca le probleme. En choisissant ce langage, tu depend de microsoft et des evolutions de ce langage, meme s'il est normalisé. Regarde ce qui s'est passé pour java (Microsoft a tenté de s'approprié ce langage en ajoutant des extensions qui lui etait propre et en le rendant peu a peu incompatible avec le java de sun)

        En choisissant C# tu renforce lq position dominante de Microsoft et tu te retrouves face a deux choix :
        - Accepter les évolutions de Microsoft, au risque de contredire tes principes sur les logiciels libres,
        - Te restreindre a l'implementation "standard" qui de toute facon n'aura aucun avenir car elle ne sera supporté pas personne et ne sera plus compatible avec ce que fait microsoft.

        C'est mon avis, vous aurez devinez que je suis contre l'introduction de C# et surtout .Net sous Linux meme si je pense que c'est un excellent langage/Framework (mais encore a des annees lumieres d'ObjC/GNUStep ;)
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        Certes, c'est Microsoft qui l'a cree mais c'est maintenant normalise par ECMA.

        Pour le normaliser il fallait entre autres en faire un langage multi-plateforme. Ben les dévs de Microsoft ont fait une version BeOS ... Non ils ne se moquent pas du monde mais ça donne une bonne idée de leur état d'esprit. :)
        • [^] # Re: Quel langage choisir.

          Posté par  . Évalué à 1.

          Peut importe, le fait qu'il soit normalise implique qu'il est documente, donc que les developpeurs de C# n'ont aucun probleme pour l'implementer, ils n'ont pas a faire de retro-ingenieurie ou autre. Comme en plus les developpeurs sont des gens de Ximian (filiale de Novell) payes pour developper de l'OpenSource a plein temps, le developpement avance bien.

          Il n'y a que System.Windows.Forms qui dependra de wine et permettra de compiler les applis graphiques developpees pour Windows, mais un programmeur mono choisira plus naturellement Gtk# qui ne se base sur aucune retro-ingenieurie, mais uniquement sur des API standardes et documentees.
          • [^] # Re: Quel langage choisir.

            Posté par  . Évalué à 1.

            Concernant la portabilité, je suis moins optimiste que toi... je dirais plutôt: il sera possible, en faisant attention d'avoir un programme portable. Sans doute plus facilement qu'avec le C/C++ mais ce ne sera pas aussi direct que cela.

            Suffit de voir le nombre des applis .NET qui font appel à un moment ou un autre à du code non managé.
        • [^] # Re: Quel langage choisir.

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

          pas BeOS, c'est pour FreeBSD et MacOSX.
        • [^] # Re: Quel langage choisir.

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

          pas BeOS, c'est FreeBSD et MacOSX
        • [^] # Re: Quel langage choisir.

          Posté par  . Évalué à 1.

          Il faut surtout que ce soit une norme reconnue... ah ben vi c'est le cas c'est ISO...

          Et il existe un CLI pour freebsd et macosx (dont les sources sont dispo... mais leur utilisation est évidemment restreinte).

          Ceci dit, le problème est toujours le même, C# et .NET auront beau offrir un paquet d'avantage, ça restera du "ça pue parce que c'est microsoft"... c'est con parce que c'est sympa ce langage...

          ps: java ça pue un peu c'est sun :P
          re-ps: je n'ai jamais entendu parler de version BeOS, des sources?
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 1.

      Sauf que Java n'est pas libre.
    • [^] # Re: Quel langage choisir.

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

      Tu as raison Netbeans est bien sous SPL (Sun Public License)

      http://www.netbeans.org/kb/faqs/license.html#FAQ_0(...)
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 2.

    Le binaire... ?

    - C'est forcement "open-source" :)
    - Ca fait plus de choses que le C :)
    - C'est pas du tout lourdingue.. y'a que deux instructions : 0 et 1, en deux minutes tu connais le langage :)

    Bon apres, forcement ca gere pas tout seul la memoire et niveau typage y'a mieux.. mais ca c'est du detail non ? Ah oui.. et puis c'est pas "vraiment" un langage.. mais bon...

    Treves de plaisanteries...

    A propos du Java :
    - Les APIs sont nombreuses tout comme leur domaines d'applications
    - Le Javadoc c'est cool et ca permet d'obtenir tres rapidement des docs a jour et efficaces.
    - C'est un langage sympa a utiliser, clair a la lecture et a l'ecriture, qui incite a l'evolutivite, la modularite et le developpement par composants
    - La memoire est geree automatiquement
    - Le typage est dynamique fort en late-binding et le systeme par interfaces et heritage simple est assez puissant. Le typage statique est realisable aussi.

    Je ne connais pas C# et eviterai donc la comparaison.
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    Comme tu le dis si bien
    Objective Caml http://www.ocaml.org/(...)

    ce langage est fortement typé
    il gére tout seul la mémoire
    il fera plus de chose pour toi que le C

    Il peut être interressant de lire des livres sur le lambda-calcul avant de plonger dedans. Voila:)
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 1.

      J'allais le dire. OCaml, c'est excellent, ça va vite, et tu as un pouvoir d'expression très fort. Par contre, un temps d'apprentissage un peu long. Disons que c'est un paradigme de programmation différent, qui demande d'être capable d'oublier bien des réflexes de la programmation impérative...
      Sinon, dans la même veine, Scheme, c'est bien aussi...
      David
  • # Re: Quel langage choisir.

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

    Si tu peux laisser tomber le typage statique et fort, j'entend énormément de bien de Python, au niveau simple, fait bcp de choses, et tout...

    Je sais qu'il gère pas mal le gtk : http://www.daa.com.au/~james/software/pygtk/(...)

    En y jettant un coup d'oeil, je l'ai trouvé un peu déroutant (pas de {} et autre begin/end, mais à coup d'indentation), mais très propre et efficace.
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 2.

      - Temps de codage réduit
      - Syntaxe claire (maintenance facilitée)
      - Riche panoplie de libs
      - Portable
      - Temps d'apprentissage très court

      C'est évident que c'est un langage pour feignasses, mais quel bonheur de pouvoir coder en si peu de lignes ! Et si un réel besoin de rapidité se fait sentir, il y a toujours la possibilité de compiler avec py2exe...

      Bon choix pour faire de la programmation orientée objet (même si Python ne l'est pas complètement) sans se prendre trop la tête et obtenir quelquechose d'utilisable et fiable.
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 3.

        J'aime bien python aussi, mais depuis les confs du fosdem sur ruby, je lorgne plus de ce côté là, et je dois avouer que c'est un langage qui présente toutes les qualités de python mais est plus propre, plus homogène, bref mieux pensé à la base amha.
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 1.

        Euh, je me trompe fort, ou bien py2exe est juste un moyen de distribuer l'interpreteur avec le code? Auquel cas, aucune amélioration en rapidité. Et à ma connaissance, aucun "vrai" compilo python complet.

        Par contre, pour accélérer du python, il y'a un JIT: psyco. A tester avant de jeter le serpent aux orties.
  • # Re: Quel langage choisir.

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

  • # Re: Quel langage choisir.

    Posté par  . Évalué à 4.

    Aller au pif : Objective C/GnuStep.

    Sinon OCaml, ruby est pas mal du tout.

    Mais le principal critere a mon avis est de prendre le langage avec lequel tu es le plus a l'aise. Un autre critere est de prendre un langage connu par la majorité et fournissant de nombreuses library.

    Tes contraintes ne sont pas suffisement fortes par rapport aux deux criteres precedents AMA.

    Ton second point ne veut rien dire, avec les bonnes lib, tu peux avoir un garbage collector, tu peux faire de la prog objet, ....

    Pour le troisieme point je ne dirais rien, bien utilisé et en s'interdisant d'utiliser certaines fonctionnalités, le C++ n'est pas lourdingue (templates, heritage multiple, const a tout va, ...)

    Le quatrieme point peut etre eviter en utilisant des smarts pointers, un garbage collector ou tout simplement en apprenant a gerer soit meme la memoire.

    Finalement, le typage statique fort n'est pas forcement ce qu'il y a de plus pratique (quid de la genericité)
    • [^] # Re: Quel langage choisir.

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

      Finalement, le typage statique fort n'est pas forcement ce qu'il y a de plus pratique (quid de la genericité)

      ça n'a rien à voir ... Ocaml est trés fortement et trés statiquement typé et il possède plusieurs formes de polymorphisme.
      • [^] # Re: Quel langage choisir.

        Posté par  . Évalué à 2.

        Je ne parlais pas de genericité au sens de polymorphisme (j'aurais du employer un autre terme que genericité).

        Pour ce qui est du typage dynamique/statique, je trouve plus pratique de se poser la question du type d'un objet au runtime qu'a la compilaition (ce qui est necessaire a tout langage veritablement objet).
        • [^] # Re: Quel langage choisir.

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

          j'aurais du employer un autre terme que genericité

          et ça serait quoi cet autre terme ?
          • [^] # Re: Quel langage choisir.

            Posté par  . Évalué à 1.

            Je ne sais pas, fait une proposition :) mais le terme genericité me convient personnelement.

            Le typage dynamique permet d'effectuer une edition de lien veritablement dynamique ou le branchement vers la bonne fonction est determinée a l'execution. Certe cela est possible en C++ grace a la table des fonction virtuelle, mais il ne s'agit pas vraiment d'une vrai liaison dynamique car on ne peut pas changer l'objet pendant l'execution par exemple.

            Une derniere chose Caml n'est pas statiquement typé car il fait de l'inference de type.
            • [^] # Re: Quel langage choisir.

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

              Je ne sais pas, fait une proposition :)

              j'ai un peu de mal, je ne vois pas trés bien ce que tu veux dire :)

              Le typage dynamique permet d'effectuer une edition de lien veritablement dynamique ou le branchement vers la bonne fonction est determinée a l'execution.

              non, rien à voir : le "branchement" à l'éxécution, c'est le "late binding" (liaison retardée en français) et c'est tout à fait possible avec un typage statique (cf caml).

              Une derniere chose Caml n'est pas statiquement typé

              Si : tous les types sont déterminés à la compilation (et ne peuvent être modifié), c'est du typage statique.
  • # Re: Quel langage choisir.

    Posté par  . Évalué à -3.

    J'aime bien les journaux mais ça en fait un peu trop comme ça à la suite...

    Ce n'est plus au gars de rechercher l'information, il pose sa demande et attend que le monde se presse à ses pieds pour lui apporter la solution.

    Mais bougez votre cul putain ! renseignez-vous, documentez-vous ! aiguisez votre esprit critique !
    • [^] # Re: Quel langage choisir.

      Posté par  . Évalué à 1.

      Il me semble que cette personne a deja analyser le probleme et hesite entre plusieurs langages.
      C'est bien aussi d'avoir plusieurs temoinages differents pour trancher, nan ?
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    C++ c'est souple à toi de le travailler a ta sauce, c'est fait pour le C++.
  • # Re: Quel langage choisir.

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

  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    Moi j'aime bien Eiffel, tu peux le compiler pour une JVM ou natif si ça t'intéresse. Tout est tout objet, très propre, s'apprend facilement et introduit le programmation par contrats qui te permet de bien déboguer ton application (pré-conditions, post-conditions, invariants de boucles).
  • # Re: Quel langage choisir.

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

    Pour répondre à une de tes inquiétudes, mono fait du JIT et compile aussi ton code en natif, donc t'inkiet pas pour les perfs ;)
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

    A priori, j'aurais dit : C/GTK+, C++/gtkmm ou C++/WxWidgets/GTK++, mais étant donné les contraintes, ça semble ne pas convenir. Alors je propose FreePascal/GTK+.

    http://www.freepascal.org/(...)
    http://www.freepascal.org/packages/gtk.html(...)
    http://gtk2forpascal.sourceforge.net/(...)
    Voir aussi les bindings fpGTK fournis avec le compilateur.

    Respect des contraintes :
    Licence LGPL modifiée/GPL
    Plus expressif que le C
    Moins lourdingue que le C++
    Gestion de la mémoire relativement simple
    Typage statique fort

    Quelques atouts supplémentaires :
    - la courbe d'apprentissage est aisée par rapport à la plupart des autres langages cités ici (Java, Python, OCaml, Perl, C#, etc.).
    - compatible avec Kylix/Delphi et Turbo Pascal (permet de capitaliser sur l'expérience de ces implémentations et sur du code déjà écrit pour elles)
    - les performances des exécutables en termes de vitesse et d'occupation mémoire sont sensiblement identiques à des programmes écrits en C/C++ (voir http://dada.perl.it/shootout/craps_cpumem.html(...))
    - supporte la programmation orientée objet, le paradigme étant plutôt bien intégré au langage
    - est fourni avec un IDE dédié
    - portable sur un très grand nombre de plates-formes et de processeurs
    - c'est agréable à programmer (avis très personnel :)

    Mes 0.02 €
  • # Re: Quel langage choisir.

    Posté par  . Évalué à 1.

Suivre le flux des commentaires

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