Ruby 1.8.0 est sorti

Posté par  . Modéré par Nÿco.
Étiquettes :
0
6
août
2003
Ruby
Après 7 jets d'essais depuis fin 2002, la version finale et stable de Ruby 1.8.0 est arrivée. C'est l'occasion de remettre en lumière ce langage qui monte en puissance.

N'oubliez pas qu'il est fourni en standard avec la plupart des distributions Linux et avec MacOS X 10.2 (pour Windows des binaires sont disponibles). Vous verrez, l'essayer, c'est l'adopter !

NdM: Au passage, je signale qu'une nouvelle version des bindings Ruby/Gnome2 (qui sont déjà très avancés dans leur version actuelle) devrait sortir ce Week-End. Cette nouvelle version apporte son lot de fonctionnalités (à vous de détailler le change log), mais je me bornerai à souligner l'intégration de nombreuses bibliothèques à la distribution standard de Ruby, ce qui prouve à la fois le dynamisme de sa communauté (hélas, encore trop peu francophonne, mais cela ne tiens qu'à nous :) ), et sa maturité. En vrac, les sujets abordés passent par l'OpenSSL, XML, YAML, la base de registre Windows, la programmation distribuée, ...
A noter l'annonce du port de Ruby sous WindowsCE (les japonais sont friants de PDA ...).

Pour terminer, quelques liens pour vous faire une idée, ou pour plonger carrement dedans :

Focus sur certains points de la nouvelle version 1.8.0 :
http://whytheluckystiff.net/articles/2003/08/04/rubyOneEightOh

Sur DLFP, quelques brèves :
http://linuxfr.org/index.php?file=recherche.html&recherche=ruby

Les communautés :
Le *FrenchGroup* : http://rubygarden.org/ruby?FrenchGroup
La mailing liste française (en sommeil) : ruby-fr-ctl@ruby-lang.org
Le Wiki principal : http://rubygarden.org/ruby?HomePage
Le newsgroup, très actif : comp.lang.ruby

Les Applications / bibliothèques :
Le répertoire central : http://raa.ruby-lang.org/
Le nouveau site OpenSource Ruby : http://rubyforge.org/

Les livres :
Le seul en français (pour l'instant j'espère) : http://www.oreilly.fr/catalogue/rubynut.html
Le livre de référence (sous Open Publication License) : http://www.pragmaticprogrammer.com/ruby/downloads/book.html

Enfin quelques présentations présentant rapidement les fonctionnalités principales de Ruby :
La seule en français : http://www.approximity.com/ruby/ruby_fr/siframes.html
http://www.pragmaticprogrammer.com/talks/perlmongers/perlmongers.htm
http://rubyhacker.com/rubyperl/slide1.html
http://www.hypermetrics.com/ruby37.html

Aller plus loin

  • # Re: Ruby 1.8.0 est sorti

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

    Question qui ne peux que dégénérer en troll, mais je tente quand même...

    On entends de plus en plus parler de Ruby et de Python. Quelles sont les différences : sont ils plutôt concurrents ou complèmentaires ?

    Je serais bien tenté de rajouter que je voudrais des avis objectifs de la part de ceux qui connaissent les 2 langages, mais j'ai le vague sentiment que ce serait peine perdue ;-)
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 9.

      Je m'assois au premier rang, et je me prépare à regarder atterrir le joli troll velu que tu viens de lancer bien haut...

      "Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).

    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à -6.

      Ruby a beaucoup pompé de Perl, donc il est forcément mieux que Python

      Ok, je -->[]
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 8.

      En tant qu'utilisateur de Ruby, je ne me suis pas intéressé à Python car il m'oblige à indenter mon fichier d'une certaine façon. Oui, c'est idiot de se passer d'un langage probablement excellent pour une raison aussi mauvaise, mais c'est une question de principe: le langage doit m'offrir des possibilités et sûrement pas les restreindre.
      Vous l'aurez compris, je suis (j'étais ?) un fan de Perl, et je retrouve dans Ruby ce qui a fait la force de Perl («il y a plus d'un moyen de le faire»), dans un langage 100% objet (absolument tout est un objet, ce qui peut paraître trop mais est en fait très pratique).

      Les afficionados de Python me rétorqueront que l'indentation obligatoire dans Python permet de faire en sorte que le code soit lisible facilement, si un goret est passé par là. Pour ma part, je répondrais que si un goret est passé, ce n'est sûrement pas l'indentation qui sera la plus mauvaise...

      Ce qu'on peut reprocher à Ruby (par rapport à Perl): sa lenteur. C'est bien plus lent que Perl, mais l'auteur a bien dit qu'il ne se focalisait pas pour l'instant sur la rapidité. Enfin bon, c'est bien pratique pour faire des petits scripts système.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 6.

        J'ai oublié de rajouter deux liens comparant Python et Ruby:

        De la FAQ Ruby, cité sur le site de Python comme étant une bonne comparaison: http://www.rubygarden.org/iowa/faqtotum/abo6DJGbLjE6/b/1.11.7.2.5(...)

        Un autre lien intéressant que j'ai trouvé en cherchant sur google :)
        http://www.rexx.com/~oinkoink/Ruby_v_Python.html(...)
      • [^] # Re: Ruby 1.8.0 est sorti

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

        Moi (qui utilise pas mal Python), je reproche au système d'indentation:
        - un mélange d'indentation avec des tabulations et des espaces peut être trompeur (si on utilise deux éditeurs différents avec des indentations différentes)
        - si une fonction ou une classe et longue, il peut être difficile de voir quel bout de code appartient à quel bloc (à moins d'avoir des barres verticales pour l'indentation comme dans PythonWin).
        • [^] # Re: Ruby 1.8.0 est sorti

          Posté par  . Évalué à 4.

          >>si une fonction ou une classe et longue, il peut être difficile de voir quel bout de code appartient à quel bloc

          Bon, d'accord, mais quand t'as pas l'indentation, c'est pas plus facile à voir !
          • [^] # Re: Ruby 1.8.0 est sorti

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

            Oui, enfin sauf que on a pas attendu python pour indenter des programmes hein ... y'a même une flopée d'indenteurs automatiques.

            Et ne pas avoir de délimiteurs style accolades est pas terrible pour plusieurs raisons, dont par exemple les charmants problèmes qui peuvent se poser avec cvs, différents éditeurs, ou simplement le fait d'avoir de ne pas avoir le raccourci très pratiques (sous vim ou emacs) de "sauter" d'une accolade fermante à l'accolade ouverte correspondante et vice versa.

            Bref. Python en tant que langage, pour ce que j'en ai vu c'est sympa, mais cette histoire de délimitation des blocs par des blancs ... berk.

            Accessoirement, sans être vraiment rentré dans le détail des deux langages, j'avait plus apprécié le côté tout-objet de ruby.
            • [^] # Re: Ruby 1.8.0 est sorti

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

              Je m'insurge. Tu peux utiliser les délimiteurs de blocs en python :
              def f(x): #{
              return x*x
              #}


              ou même, pour les nostalgiques du pascal :
              def f(x): #begin
              return x*x
              #end;


              C'est pas un beau langage, ça ? :)
              • [^] # Re: Ruby 1.8.0 est sorti

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

                Ah ben je connaissais pas.

                C'est pas un beau langage, ça ? :)

                Honnêtement ? c'est assez hideux àmha.
                • [^] # Re: Ruby 1.8.0 est sorti

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

                  Je parle des délimiteurs de blocs cités plus haut, bien sûr.

                  Enfin moi ce qui m'avait de toute façon plus intéressé dans Ruby par rapport à Python, c'était le côté fortement orienté objet. Mais bon, ça n'empêche pas que Python sois un langage sympa et tout (beaucoup de choses vraiment Très Sympas utilisent python ;-), c'est juste que moi je m'y suis pas fait (ou on va dire que j'ai pas pris la peine).
                  • [^] # Re: Ruby 1.8.0 est sorti

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

                    Je répond peut-être un peu tard, mais tant pis.

                    Pour les délimiteurs de bloc... Ben vu que le # indique un commentaire, tu peux utiliser ce que tu veux, même #debut/#fin, ton bloc devra toujours être indenté :)

                    Sinon, pour l'orienté objet, je rappelle qu'en python c'est facile, tout est objet.
                    Une fonction est un objet de type "function".
                    Une déclaration de classe est un objet de type "class".
                    Une méthode est un objet de type "instanced method" (ou "class method")
                    Même un type est un objet de type... "type", eh oui.
        • [^] # Re: Ruby 1.8.0 est sorti

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

          > melange d'indentation et tabulation

          C'est vrai que c'est chiant a mourrir. Le probleme, c'est quand tu edites le code de qq'un d'autre qui n'a pas les memes reglages sur ton editeur que toi. L'horreur complete etant quand il melange tab et space, genre il indente a deux espaces mais mais un tab au lieu de 8 espaces (c'est malheureusement un des rares defaut du code autrement nickel de Qt).

          Heureusement, il y a la solution: faire detecter par l'editeur l'indentation utilisee: http://phil.freehackers.org/indent-finder/index.html(...)

          > si une fonction / class est longue

          Si une fonction est longue, c'est qu'il faut la racourcir. Tu augmentes la lisibilite du code en utilisant des noms explicites, tu le rends plus modulaire. Linus recommande egaglement de ne pas avoir plus de trois niveaux d'indentation et il a raison. Dans ce cas, je compte l'indentqation de la class et de la methode comme nulle.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 2.

        <borborygme>un programme mal indenté est aussi buggé qu'un programme qui plante</borborygme>
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 2.

        À propos de l'indentation pour faire des blocs en python.
        Je fais remarquer aussi que du coup il n'est plus possible d'indenter sans créer un bloc, et qu'en plus python n'accepte pas les blocs inutiles (c'est à dire qui ne suivent pas un if for while def classs ...).
        Il m'est déjà arrivé d'indenter quelques lignes de code pour bien les mettre en évidence par rapport au reste (c'était en java, pour créer une UI avec des widget imbriqués, l'indentation mettait en évidence l'imbrication des widget). Avec python c'est pas possible.
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 9.

      Ruby est purement interpreté contrairement à Python qui est precompilé en byte code avant la phase d'interpretation.
      Python est donc plus rapide que Ruby et plus adapté à des projets conséquents.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 4.

        Ouais bof.
        Dire ça c'est un peu comme confondre le langage Java en lui même et la JVM. D'ailleur une vm pour ruby c'est pas nouveau comme idée. Mais là on en est au début et matz voulait d'abord stabiliser le langage. Donc autant on peut apprecier le langage de ruby depuis cette sortie, autant il est urgent d'attendre à propos de perfs.
      • [^] # Re: Ruby 1.8.0 est sorti

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

        XXXXXX est donc plus rapide que YYYY et plus adapté à des projets conséquents.

        En quoi la "rapidité" est-elle un critère discriminant pour un projet conséquent ?
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 5.

      Python et Ruby sont bien des concurrent directs !
      Je connais peu Ruby (pour avoir commencé python, j'ai pas envie de changer :-)

      La différence c que Python à l'air beaucoup plus utilisé que Ruby, notamment comme langage de plugin pour de grosses applications.
      On va dire que c'est parce qu'il est plus vieux...

      En tout cas, je vois pas de raison valable de passer à Ruby si on connait Python, je pense que les 2 langages sont comparables, sauf encore une fois que python est plus utilisé pour l'instant.

      [troll] Ruby est-il un effet de mode ? Pour faire un peu rebelle et puriste (100% objet) ? [/troll]
      • [^] # Re: Ruby 1.8.0 est sorti

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

        «On va dire que c'est parce qu'il est plus vieux... »

        Je crois que c'est surtout parce que Ruby est d''origine japonaise, et que pendant longtemps la doc était en japonais. C'est lorsque des journalistes ont fait le très bon "Programming Ruby" [1] que le langage se répand.

        Pour ma part j'ai commencé avec Ruby, et ne connais pas Python, donc j'ai plus ou moi la même position que toi (à l'envers).

        [1] http://www.rubycentral.com/book/(...)
        • [^] # Re: Ruby 1.8.0 est sorti

          Posté par  . Évalué à 9.

          A l'epoque je cherchais un langage elegant pour faire du prototypage.
          Le choix s'etait vite porte sur Python, Perl, Ruby.

          J'avais vite elimine Perl, malgre beaucoup de points forts (une enorme communeaute) a cause de son code que je trouve un peu 'foutoir'.

          Donc en fait l'alternative etait vite devenue Python/Ruby.
          Ils partagent de nombreux points communs :
          - faiblement types
          - tres orientes objets
          - plutot 'haut niveau'
          - tres elegants
          - tres faciles a apprendre

          J'ai finalement choisi Python (mais je continue de croire que Ruby est un tres tres bon langage)
          - une communeaute un peu plus importante que Ruby.
          - des developpements plus aboutis a l'epoque (stabilite du langage, libs...).
          - un peu plus rapide que Ruby.
          - et surtout une doc plus fournie.

          Contrairement a beaucoup, j'ai vecu le cote indentation obligatoire comme un point fort qui oblige a coder propre et qui aide a rendre le code maintenable.

          Au final je vois ces deux langages comme a la fois concurrents et complementaires, et dont les communeautes apprennent beaucoup l'une de l'autre.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 3.

        > [troll] Ruby est-il un effet de mode ? Pour faire un peu rebelle et puriste (100% objet) ? [/troll]

        Non, je ne pense pas .. D'abord il n'est pas tout recent, ensuite je pense que quitte a faire de l'objet, autant faire vraiment de l'objet ...
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Python et Ruby sont directement concurrents, et à mon avis Ruby l'emporte de loin sur le plan technique. Outre le fait qu'il est bourré de bonnes idées (entre autres, les iterateurs, l'utilisation de '@' et '$' pour denoter les variables membres ou globales), Ruby est OO dès le départ, alors que pour Python ça n'est venu qu'après. Du coup on se retrouve avec des 'self' partout, des '__machin__', etc... Ruby a ainsi une syntaxe à la fois plus concise et plus claire que celle de Python.

      Et surtout, Ruby est un langage très agréable à utiliser. C'est l'un des rares langages que je connaisse qui donne envie de coder.

      Par contre, les avantages de Python sont une doc plus complèete, et plus de librairies. Il faut que Ruby murisse un peu de ce coté là...
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Je ne connais pas Ruby mais Python est le langage utilisé pour développer le serveur d'application Zope ( http://www.zope.org(...) - nouveau site web !) qui est vraiment bien foutu pour la gestion de contenu (cf CPS de Nuxeo en GPL).

      Connaitre Python est un atout pour bien exploiter les capacités de Zope.

      Voila une autre raison d'apprendre python.
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 2.

      Entre autres, Ruby est un projet initie par un japonais. Par consequent, les expressions regulieres permettent de tenir compte de la nature du caractere rencontre (caractere latin, hiragana, katakana ou kanji). C'est tres utile quand on bosse sur des chaines en langue naturelle en japonais.
    • [^] # Attention, Python aussi évolue...

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

      Par rapport à ce que j'ai pu lire et aux liens donnés, attention aux comparaisons par rapport à d'anciennes versions de Python (ex. 1.5.2).

      Dans la dernière version - la 2.3 sortie récemment - et même avec les précédentes, certaines critiques ne sont plus valables (par exemple il y a maintenant un type booléen, les types de base ont été unifiés aux classes (http://www.python.org/2.2.2/descrintro.html(...) ), les itérateurs sont apparus, le support d'Unicode s'est bien amélioré...).

      Python a tendance a reprendre ce qui est bon ailleurs (et j'imagines que si la communauté Ruby est efficace, c'est pareil de ce côté). L'auteur principal de Python (Guido Van Rossum) tient un peu le rôle de Linus Torvald pour Linux: sélectionner parmis toutes les propositions d'évolution celles qui sont bonnes.

      Un avantage (actuel) de Python c'est sa maturité. Les développeurs en sont maintenant a travailler sur l'efficacité du code (et ils bossent bien). Et les librairies sont de plus en plus nombreuses un peu dans tous les domaines.

      Un avantage (mais peut-être Ruby est-il aussi dans ce cas) c'est que Python s'adapte très bien à toutes les tailles de projets, et permet de coder directement le projet final en codant la maquette.

      Pour ce qui est de l'indentation, c'est vraiment une question de goût. Personnellement, avec les chaînes de documentation directement dans le code, c'est un aspect que me fait aimer Python.

      Maintenant, à choisir... les deux langages semblent assez proches en terme de fonctionnalités et comme c'est gratuit: téléchargez les deux, montez un (petit) projet de test et développez le (faites appel aux communautés des newsgroups et listes de diffusion pour améliorer le code)... et faites votre chois en fonction de vos goûts.

      A+

      Laurent P.

      Pour les évolutions:
      http://www.python.org/2.3/highlights.html(...)
      http://www.python.org/doc/2.2.1/whatsnew/(...)
      http://www.amk.ca/python/2.1/(...)
      http://www.amk.ca/python/2.0/(...)
      http://www.python.org/1.6/#news(...)

      Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Ruby 1.8.0 est sorti (plash dans le troll)

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

      Je pratique assez régulièrement Ruby, surtout pour des petits scripts, mais j'apprécie beaucoup les possibilités de la chose, en particulier pour le tcp. La création d'objets munis de comportements complexes est assez facile. La lisibilité des scripts est en général assez bonne, sauf si on fait le goret, bien entendu.

      D'un autre coté, je n'ai jamais trop pratiqué Python, ses impératifs de formatage du source m'ont toujours rebutés. Je sais, ce n'est pas une bonne raison... Il faudra que je m'y remette un de ces jours, d'autant plus que je pratique régulièrement le f77, qui réclame lui aussi un formatage précis, donc ça n'est finalement pas une bonne excuse...

      En tout cas, je recommande fortement d'essayer Ruby. Dans le tarball, il y a une foultitude d'exemples bien sympathiques, dont la lecture attentive est riche d'enseignements.

      Voilà, je retourne dans la piscine...
  • # Re: Ruby 1.8.0 est sorti

    Posté par  . Évalué à 3.

    J'ai une question simple pour les programmeurs Ruby : Existe-t-il des GUI cross-plateforme pour Ruby (Linux/MacOs X/Windows) ?
    Sinon, y a-t-il d'autres langages de script avec des GUIs cross-plateforme ?
    Et même question pour les accès aux BD ;-)
    Merci.
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Je dirais bien qu'on peut coder des applis GNUstep en ruby ...
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 1.

        Hormis les différences entre un langage compilé et un langage interprété, quel est ton sentiment sur Ruby comparé à Objective C pour coder des appli GNUstep ?
        • [^] # Re: Ruby 1.8.0 est sorti

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

          Ben j'avais vaguement joué avec ruby il y a quelques mois, histoire de voire comment ça marchait, et j'avais plutôt bien aimé. Mais bon j'avais pas trop regardé son utilisation dans le cadre de GNUstep; du coup la news m'a donné envie de me pencher un peu dessus, et j'aime assez. C'est plutôt simple et tout. Par contre j'ai pas vu rapidement comment utiliser les fichiers Gorm, ce qui est un peu dommage :-/ mais bon je suis en train de me renseigner (à priori le binding ruby pour MacOS X n'a pas ce problème, mais peut être fonctionne-t-il sur un principe différent).
          Sinon ça ressemble à ça : 
          
          require 'rigs'
          Rigs.import("NSApplication")
          Rigs.import("NSGraphicsContext")
          Rigs.import("NSWindow")
          Rigs.import("NSButton")
          Rigs.import("NSProcessInfo")
          Rigs.import("NSSelector")
          Rigs.import("NSString")
          
          class NSButtonTest
          
              def initialize
                  @window = NSWindow.alloc
              end
          
              def applicationWillFinishLaunching (notification)
          
                  button = NSButton.new
                  button.setTarget(self)
                  button.setAction( selector("buttonPress:"))
                  button.setTitle("Print Quote")
                  button.sizeToFit()
          
                  rect = button.frame()
                  styleMask = NSTitledWindowMask | NSClosableWindowMask |
                      NSMiniaturizableWindowMask | NSResizableWindowMask
          
                  @window.initWithContentRect_styleMask_backing_defer \
                                   (rect, styleMask, NSBackingStoreRetained, false)
                  @window.setTitle("GNUstep")
                  @window.setContentView (button)
              end
            
              def buttonPress (sender)
                  puts "Ca vous chatouille ou ca vous gratouille ?"
              end
          
              def applicationDidFinishLaunching (notification)
                  @window.center()
                  @window.makeKeyAndOrderFront(self)
              end
          
              def applicationShouldTerminateAfterLastWindowClosed (application)
                  true
              end
              
          end
          
            
          # main
          NSProcessInfo.processInfo.setProcessName("NSButtonTest")
          
          application = NSApplication.sharedApplication
          buttonTest = NSButtonTest.new
          
          application.setDelegate(buttonTest)
          
          application.run
          
          Donc c'est très simple à mettre en oeuvre. On récupère l'objet application : 
          
          application = NSApplication.sharedApplication
          
          on crée un bouton à partir d'une classe que l'on a écrite plus haut :
          
          buttonTest = NSButtonTest.new
          
          et on délègue à ce bouton les messages envoyés à NSApplication comme applicationWillFinishLaunching (envoyé quand avant que l'application soit effectivement considéré comme lancée), applicationDidFinishLaunching (envoyé après que l'application soit considérée comme démarrée) et applicationShouldTerminateAfterLastWindowClosed (on indique qu'on veut que l'application se termine quand on ferme la fenêtre)
          
          Ensuite, dans applicationWillFinishLaunching on crée un bouton (NSButton), on lui dit d'envoyer le message "buttonPress:" quand on clique dessus, on crée une fenêtre et on mets le bouton en tant que vue principale dans la fenêtre. Enfin dans la méthode "buttonPress:" on affiche un texte (qui sera donc affiché quand l'utilisateur cliquera sur le bouton). Enfin, dans applicationDidFinishLaunching on en profite pour centrer la fenêtre à l'écran et lui donner le focus.
          
          
          Bref, pas bien compliqué, on fait exactement la même chose qu'en Objective-C quoi, sauf que c'est en ruby ... ;-)
          
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 4.

      Sinon, y a-t-il d'autres langages de script avec des GUIs cross-plateforme ?

      tcl/tk ? (www.tcl.tk)

      mais tcl sapu© et tk cépabo©
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 2.

      GTK+ étant cross platform (au moins linux/windows, je suis pas sur qu'il y ait un port macosx natif utilisable, mais en X11 ca fonctionne), tu peux croiser les doigts très forts pour que les bindings ruby/python/perl (je crois que ça existe) pour gtk soient aussi multiplateforme :)
      • [^] # Re: Ruby 1.8.0 est sorti

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

        Je n'ai pas testé les bindings Ruby-GTK sous Windows (même si j'voulais...), mais ils sont censés être portables. Et vu la manière dont ils sont codés, ça m'étonnerait qu'ils soient moins portables que GTK, puisqu'il s'agit en gros d'englober les fonctions GTK dans des macros et de dire à ruby comment les appeler et quels paramètres on veut. Il n'y a rien là dedans qui devrait être dépendant du système.
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Python + (wxPython | tk)
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 6.

      Existe-t-il des GUI cross-plateforme pour Ruby

      FOX : http://fxruby.sourceforge.net/(...)
      GTK2 : http://ruby-gnome2.sourceforge.jp/(...)
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 2.

      Pour les accès aux bases de données, tu disposes sous Ruby de l'excellent DBI, équivalent à celui de Perl, qui permet de faire l'interface avec un ensemble de bases de données, le tout de façon abstraite: tu changes de base de données, et si tu as pondu du code SQL standard, il te suffit de modifier les paramètres d'accès à la base (type de base, nom d'utilisateur, mot de passe) et ça marche nickel (en théorie :)

      La page Web: http://ruby-dbi.sourceforge.net/(...)
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Python + wxPython vraiment bien (et joli sur tous les systèmes):
      wxPython (qui vient de la lib cross-plateforme wxWindows pour C++) utilise les GUI natifs pour chaque systeme:
      - GTK (1.x ou 2.x) pour GNU/Linux et autres *BSD
      - X11 ou Motif/Lesstif (pabo :-) pour les ceuces qu'on pas GTK
      - WIN32 GUI pour Windows (cd 95 a XP en passant par NT et 2000)
      - Carbon & Cocoa pour MacOS 9/X
      (- y a meme un truc pour OS/2 il me semble)

      Y a aussi Python + PyQt mais je connais pas bien.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 1.

        Moi j'utilise pytgtk (gtk+2) et je le trouve vraiment agréable, sachant qu'il tourne aussi bien sous *nix que sous Win32. Mac je sais pas : je crois que seul GTK+1.2 est porté actuellement... dc le binding pygtk risque pas trop de marcher dessus.
        • [^] # Re: Ruby 1.8.0 est sorti

          Posté par  . Évalué à 1.

          import pygtk
          pygtk.require ('2.0')

          PyGTK avec GTK+ 2.x fonctionne sur tous les systèmes sur lesquels et Python et GTK+ 2.x fonctionnent.

          WxWindows est à mes yeux beaucoup plus lourd/complexe et apporte peu vu la portabilité de GTK+.
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Existe-t-il des GUI cross-plateforme pour Ruby (Linux/MacOs X/Windows) ?
      voir ma NdM

      Sinon, y a-t-il d'autres langages de script avec des GUIs cross-plateforme
      Perl, PHP, Python, ...
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 1.

      il y a un bindings de Qt pour ruby, par contre la dernière fois que j'ai regardé c'etait un binding de la version 2.3 de Qt -mais bon j'ai pas regardé dernièrement-
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 0.

        On ne répétera jamais assez que qt n'est *pas* une solution pour faire du logiciel libre multiplateforme (et on fait tous une petite prière pour que la version windows soit dispo sous gpl un jour prochain).
        • [^] # Re: Ruby 1.8.0 est sorti

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

          GTK non plus vu la stabilite des portages et en plus ca n'existe pas pour MacOS X (enfin si mais c'est comme si ca n'existait pas en fait).

          Qt est dispo sous licence GPL pour Unix et MacOS X de facon stable.

          Reste plus que wxWindows qui est vraiment portable partout (Unix, MacOS X et Windows) sous licence LGPL.
          • [^] # Re: Ruby 1.8.0 est sorti

            Posté par  . Évalué à 0.

            On est d'accord, sauf qu'il y a quand meme une différence entre un truc qui n'est pas libre et un truc libre mais (un peu beaucoup) buggé... Pour ma part, je préfère faire du multiplateforme linux/windows que du multiplateforme linux/macosx (surtout que sous osx x11 est preque livré en standard)
            • [^] # Re: Ruby 1.8.0 est sorti

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

              > un truc libre mais (un peu beaucoup) buggé

              J'ai fait 6 mois de gtk 1.2 en C++ sous Linux et Windows il y a environ 1 an dans une boite a plein temps. Ba sous windows c'etait vraiment pas la joie, il y avait des differences de comportement importantes et puis comme la doc est inexistante. Tu es oblige de bidouiller pour que ca fonctionne de la meme facon sous Linux et Windows. Autant utiliser wxWindows.

              Depuis ca a peut etre change, mais bon niveau programmation Qt est de toute facon loin devant gtk ahma et il n'est pas exclus d'avoir une version GPL de Qt sous windows d'ici quelques mois.
              • [^] # Re: Ruby 1.8.0 est sorti

                Posté par  . Évalué à 3.

                Ouais enfin bon, gtk 1.2....
                Les developpeurs de gtk eux memes sont surpris que des gens aient réussi à écrire des applis avec, c'est pour dire ;)

                Sinon on dit exactement la même chose mais pas de la même façon, c'est un peu contreproductif comme thread :)
              • [^] # Re: Ruby 1.8.0 est sorti

                Posté par  . Évalué à 1.

                GTK+ 1.2, et avec un binding.

                Seule les versions >= 2.0 peuvent être véritablement considérées comme portées sous Windows.

                Lorsque l'on juge un logiciel, on évite de juger des versions depuis longtemps obsolètes.

                Quand à la prétendue supériorité de Qt elle est certainement dûe (sans vouloir vous offenser) à votre goût trop prononcé pour le C++ *ahem*.

                http://inti.sourceforge.net/download.html(...)

                (c'est bien pour les amateurs d'Unix-likes et de C++, mais aura-t-on le courage d'extraire le GTK+ et de compiler sous Windows pour les autres ? :-)
                • [^] # Re: Ruby 1.8.0 est sorti

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

                  Lorsque l'on juge un logiciel, on évite de juger des versions depuis longtemps obsolètes.

                  C'est vrai. Néanmoins, même sans juger des versions obsolètes, on peut dire des anneries. Démonstration par l'exemple :

                  Quand à la prétendue supériorité de Qt elle est certainement dûe (sans vouloir vous offenser) à votre goût trop prononcé pour le C++ *ahem*.

                  CQFD (sans vouloir t'offenser).
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 4.

        Ben Richard Dale est en train de dériver des bindings Ruby-Qt à partir de la version Perl (maintenue par ma pomme)...
        Ca commence à être propre, même si encore un peu lent.
        Comme on se base sur une librairie commune (SmokeQt, qui est une sorte d'interface introspective à la Corba pour Qt), il n'y a plus de problèmes de version. Le Smoke actuel peut être compilé avec Qt 2.3 à 3.2 et est généré automatiquement à partir des en-têtes.
        Seule la partie Signal/Slots est susceptible de changer et de nécessiter des ajustements d'une version à l'autre (en gros, pour chaque version majeure).
        Donc les bindings Perl et Ruby offrent le même niveau de fonctionnalité: accès complet à tout Qt, surcharge des fonctions virtuelles, signaux/slots illimités et définissables, etc...
  • # Re: Ruby 1.8.0 est sorti

    Posté par  . Évalué à 6.

    Quelques remarques en plus ...

    1. Juste pour différencier Python et Ruby, un concept interressant dans Ruby (issu du langage CLU) qu'on ne retrouve pas dans Python : la conception facilitée des itérateurs.
    Un simple exemple tiré du livre de référence ("Programming Ruby" déjà cité):
    class Array
    def find
    for i in 0...size
    value = self[i]
    return value if yield(value)
    end
    return nil
    end
    end
    [1, 3, 5, 7, 9].find {|v| v*v > 30 } --> donne 7

    Au passage, on note la facilité d'extention des classes de bases, et l'utilisation du tout objet.

    2. Le débat sur l'indentation dépend AMHA des habitudes de chacun et de l'éditeur utilisé.

    Maintenant, le langage choisi n'est qu'une question de contexte et de gout personnel :)

    3. Aux GUI FOX et GTK déjà mentionnés, on peut rajouter Tk ( voir http://www.rubygarden.org/ruby?RubyTk(...) ), et l'expérimentation Appolo (sur une base des librairies VCL de Delphi : http://www.moriq.com/apollo/index-en.html(...) ). Maintenant allez farfouiller du côté de RAA pour en trouver beaucoup d'autres : http://raa.ruby-lang.org/cat.rhtml?category_major=Library;category_(...) .

    4. Deux nouveaux livres sur Ruby devraient sortir en fin d'année (en anglais ...) : "Game Programming With Python, Lua, and Ruby" et surtout "Code generation in action" ( http://www.codegeneration.net/(...) ) traitant de la métaprogrammation en basant ses exemples sur Ruby.

    5. Désolé enfin pour les url non cliquables ... (c'était ma première brève sur DLFP :) ).
    • [^] # Re: Ruby 1.8.0 est sorti

      Posté par  . Évalué à 3.

      1) ce concept existe aussi en python avec une synthaxe très similaire.
      2) absolument d'accord
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 1.

        origine : design patterns
        autre concept commun : introspection

        ça dépasse ruby/python tout ça
    • [^] # Re: Ruby 1.8.0 est sorti

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

      Aux GUI FOX et GTK déjà mentionnés, on peut rajouter Tk

      Et GNUstep ... le binding ruby est d'ailleurs assez original si je me souviens, car tirant partie des particularités de ruby et d'objective-c (à savoir l'instrospection). Du coup, le binding est toujours à jour en fait ... il "découvre" tout seul les classes au besoin :

      One of the most interesting feature of RIGS is that it is 100%
      dynamic. It means that RIGS maps Ruby object/methods to GNUstep and
      vice/versa entirely on the fly when running the Ruby script. As a
      consequence there is no need to generate any kind of wrapping code to
      use either existing GNUstep classes or even new ones that you have
      developped by yourself. Simply compile your new classes in a shared
      library and then do a simple:


      cool, non ?
      • [^] # Re: Ruby 1.8.0 est sorti

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

        oops il manquait un bout :

        require('MyNewClass') # load your extra ObjC shared library
        Rigs.import("MyNewClass") # dynamically import the class in Ruby

        and you are in business! Cool, hey.
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 2.

        Une petite partie de l'API de Ruby-GNOME2 est également générée on-the-fly (c'est à dire les propriétés, les signaux et les accesseurs).

        Tout ceci graçe à Ruby/GLib ;-)
      • [^] # Re: Ruby 1.8.0 est sorti

        Posté par  . Évalué à 1.

        Mentionnons en ce cas StepTalk, qui me semble un excellent projet.
        • [^] # Re: Ruby 1.8.0 est sorti

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

          Oui, c'est effectivement un très très bon projet :-P

          Pour ceux qui ne connaissent pas, StepTalk permet d'inclure ultra-simplement dans une application un moteur de script (avec AppTalk), en indiquant quels sont les objets de l'appli qui peuvent être accédés. Vraiment cool.

          Mais StepTalk est plus que ça, en fait il permet d'accèder très simplement à des objets qui ne sont pas forcément dans l'appli (objets répartis, ou objets d'une autre application). L'idée c'est que StepTalk soit une sorte de "glue" entre des objets et applications -- l'utilisateur ne travaillerait pas avec des "applications" en tête, mais en utilisant les objets disponibles, ou qu'ils soient. Donc c'est plus une sorte de VBScript ou AppleScript, dopé aux stéroïdes.

          Théoriquement, il est langage-indépendant (les langages de scripts sont dans des bundles), mais pour le moment il n'y a que deux langages supportés : SmallTalk (héhé... forcément! :-) et Guile. Un bundle ruby serait bien cool !

          Plus d'infos :
          http://steptalk.host.sk/(...)
  • # Tutoriel Ruby

    Posté par  . Évalué à 6.

    Hello tout le monde,

    Le tutoriel "Apprenez Ruby" est disponible sur ruby-doc: http://www.ruby-doc.org/docs/beginner-fr/xhtml/index.html(...) .

    Le lien actuel pointe sur une machine cable, ca doit lagger un peu ;-)

    Si un modérateur passe, saurait-il faire le changement?

    (et également virer le premier jet sur le thread gentoo, je m'ai trompé ;-)

    --
    lrz
    • [^] # Re: Tutoriel Ruby

      Posté par  . Évalué à 1.

      Merci à vous et à vos «collègues» pour cet excellent tutoriel.
      • [^] # Re: Tutoriel Ruby

        Posté par  . Évalué à 4.

        Mais de rien :-) Il faut surtout remercier Daniel Carrera, qui est l'initiateur du tutoriel.

        Tant que j'y suis, nous allons traduire le hiki de Ruby-GNOME2 dans le courant de la semaine prochaine, et nous recherchons des volontaires. Contactez-moi si vous êtes intéressé ;-)

Suivre le flux des commentaires

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