Nouvelles versions de Ruby

Posté par . Modéré par Fabien Penso.
Tags :
0
24
déc.
2002
Ruby
Pour noël, matz (le créateur de Ruby) vient de mettre à disposition la nouvelle version stable de Ruby (1.6.8) ainsi que la première preview de la nouvelle branche stable (1.8.0).
Pour ceux qui n'ont pas encore la chance de connaitre Ruby, c'est un langage de script simple et puissant comme Perl et orienté objet. Cette sortie est l'occasion de parler de Ruby.

Ruby est un langage récent (sa première version publique date de 1995). Il a été développé au Japon par Yukihiro Matsumoto, alias «Matz». Celui ci ne trouvant pas dans les langages de scripts disponibles (Perl et Python en particluier) un que le satisfasse, aussi il décida d'en créer un. Il cherchait un langage alliant la puissance de Perl à un model Objet Pure (celui de Python n'étant pas satisfaisant). Le langage allie des fonctionnalités héritées de divers langages tels que la manipulation de texte de Perl, le modèle objet de SmallTalk, une syntaxe très claire similaire à Eiffel, ...

Voici un petit résumé des fonctionnalités intéressantes de Ruby:
Interprété. Le développement plus rapide, pas de phase de compilation.
Pure Objet. Tout ce que l'on manipule est est un objet. Il est néanmoins possible de programmer de manière procédurale et de presque oublier cette particuliarité.
Non typé. Le type des variables est déterminé pendant l'éxécution. Ceci permet d'écrire du code génirique sans avoir à se soucier du type de donnée que l'on manipule.
Gestion automatique de la mémoire. C'est l'interpréteur qui se charge d'allouer de la mémoire lors de la création d'objets, il gére aussi leur destruction (garbage collector).
Possibilité de passer un bloc d'intructions en paramètre d'une méthode.
Gestion des processus, signaux, threads, mutex, ...
Librairie TCP/IP très puissante.
Surcharge des opérateurs.
Disponible sur un grand nombre de plateformes (Unix, Windows, Dos, Amiga, ...)

Ruby est un langage extremment bien pensé et cohérent , il obéit au principe de la «moindre suprise» (Principle of Least Surprise), c'est à dire que le langage est conçu pour se comporter de la manière attendue. La syntaxe simple fait que l'on n'est pas surchargé de message d'erreurs lors de l'exécution (contrairement aux compilateurs C/C++ ou Java pour ne citer qu'eux), la gestion de structures de données complexes (de type tableaux de tableaux) est bien plus simple qu'en Perl et la gestion automatique de la mémoire évite bien des problèmes. Ruby permet de se concentrer sur l'aspect créatif de la programmation sans avoir à se soucier des complexités du langage.

Aller plus loin

  • # Re: Nouvelles versions de Ruby

    Posté par . Évalué à 10.

    Pour ceux qui connaissent python et pas Ruby, une petite comparaison.

    http://www.thinkware.se/cgi-bin/thinki.cgi/RubyVsPython(...)

    Deux beaux langages de script somme toute.
    • [^] # Re: Nouvelles versions de Ruby

      Posté par . Évalué à 7.

      Attention à ne pas confondre langage de script avec langage éventuellement utilisé pour du script. Ce serait dommage de les enfermer dans un domaine aussi restreint !
  • # Re: Nouvelles versions de Ruby

    Posté par . Évalué à 10.

  • # Re: Nouvelles versions de Ruby

    Posté par . Évalué à 8.

    Pure Objet. Tout ce que l'on manipule est est un objet. Il est néanmoins possible de programmer de manière procédurale et de presque oublier cette particuliarité.

    Et Ruby transformera tout le procédural en mèthodes s'appliquant à un objet global ;)
    • [^] # Re: Nouvelles versions de Ruby

      Posté par . Évalué à 10.

      En Ruby on est par défaut dans la classe 'main', les "fonctions" sont en fait des méthodes de cette classe. De même les "variables" sont les attributs de cette classe "main".
      En Python (moins propre) les fonctions sont des instances d'une classe fonction. Cette classe surcharge l'opérateur ().

      Quand on fait en Python fun(var), on fait en fait fun.()(var) (fun est une instance de classe fonction, on appelle la méthode () en lui passant var en parametre). (enfin c'est ce que j'ai compris, je ne maitrise pas particulierement ce langage).

      Quand on fait en Ruby fun(var), on fait en fait main.fun(var).
      • [^] # Re: Nouvelles versions de Ruby

        Posté par (page perso) . Évalué à 6.

        main ?? ca rajoute une méthode privée dans Object plutot, non ?
        • [^] # Re: Nouvelles versions de Ruby

          Posté par . Évalué à 6.

          Oui, exacte (mais bon comme main est une instance de classe et que toute classe hérite d'Object à un moment ou un autre on ajoute au final une méthode à main):

          $cat > test.rb
          def hello
          puts "hello"
          end
          p self.private_methods.grep "hello" #self c'est "main"
          p Object.private_methods.grep "hello"
          ^D
          $ruby test.rb
          ["hello"]
          ["hello"]

          On a raison tout les deux. (je suis limite de mauvaise foi je sais ...)
  • # Taduction du Perl Cookbook de O'reilly

    Posté par . Évalué à 10.

    Voici un projet intéressant auquel je participe: http://pleac.sourceforge.net/.(...)
    Ce projet a pour but de traduire le livre "Perl Cookbook" ("Perl en action" dans sa version française) dans différents langages de programmation.
    Pour ce qui ne connaissent pas ce livre, il s'agit d'un recueil de recettes (comment faire tel ou tel truc en Perl ?).
    Le but de site est de traduire les recettes Perl dans différents langages de programmations (Python, Ruby, guile, ...).
    Environs 40% des recettes ont été trdauites en Ruby, il reste du boulot pour les amateurs.
  • # Re: Nouvelles versions de Ruby

    Posté par (page perso) . Évalué à 7.

    > La syntaxe simple fait que l'on n'est pas surchargé de message d'erreurs lors de l'exécution (contrairement aux compilateurs C/C++ ou Java pour ne citer qu'eux)

    D'un autre côté, un ingé qui essayait récemment de montrer les bases du C++ dans mon assoc' (salut, Denis :-) expliquait pour sa part que le grand nombre de messages d'erreur du compilo C++ était une bonne chose, car ils étaient affichés à la compilation (et non à l'exécution, comme le dit l'auteur de l'article), ce qui permettait (justement) de minimiser les problèmes à l'exécution, en faisant du code plus robuste dès le départ. Personnellement, je n'ai pas été très convaincu (je pense qu'une syntaxe simple évite au débutant la plupart des chausse-trappes qui nécessiteraient de telles vérifications en profondeur), mais ça montre qu'il y a des arguments pour et contre. Pour ma part, j'aime bien que (le compilo|l'interpréteur) vérifie un minimum ce que j'ai pondu. En Perl, je mets toujours l'option `-w' et le drapeau `use strict;', par exemple...

    --
    WSA
    Noyeux Joël à tous les dyslexiques !

    Envoyé depuis mon PDP 11/70

  • # Re: Nouvelles versions de Ruby

    Posté par (page perso) . Évalué à 1.

    Exite-t-il un comparatif des languages de script objet, tels que pike, python, ruby et les autres (j'en oublie certainement !)
    Cela permettrait de savoir quel language est adapté à des besoins spécifiques d'une application.
    On pourrait comparer les performances, les OS supportés, les blibliothèques intégrées, licenses, etc...
    Cette profusion de languages de script n'entraine-t-elle pas un ambaras (du choix) pour celui qui veut commencer une application en script ?
    • [^] # Re: Nouvelles versions de Ruby

      Posté par . Évalué à 10.

      Exite-t-il un comparatif des languages de script objet, tels que pike, python, ruby et les autres (j'en oublie certainement !)

      tu as l'excellent http://www.bagley.org/~doug/shootout/(...)
      et aussi :
      - http://www.ruby-lang.org/en/compar.html(...)
      - http://www.python.org/doc/Comparisons.html(...)

      Cette profusion de languages de script n'entraine-t-elle pas un ambaras (du choix) pour celui qui veut commencer une application en script ?

      Pas vraiment AMHA : bien que Perl, Ruby et Python soient comparables en terme de performances et de fonctionnalités, chacun possède ses propres petites caractéristiques qui font qu'on les adoptera plutôt qu'un autre selon le developpement à faire ou tout le temps ;) :
      - le symbole de Perl est le chameau : il travaille dur et bien dans toutes les situations mais il n'est pas beau et parfois il crache à la figure (quand on relie son code par exemple :)
      - Python est beaucoup plus joli mais oblige à une identation très stricte ce qui peut provoquer des erreurs quand tu fais un copier coller (même si le copier coller c'est pas conseillé...)
      - Quant à Ruby j'ai 37 raisons de l'aimer : http://www.hypermetrics.com/ruby37.html(...) ;)

Suivre le flux des commentaires

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