Article sur Ruby

Posté par  (site web personnel) . Modéré par Fabien Penso.
Étiquettes :
0
1
nov.
2001
Ruby
Un article sur Ruby vient de paraitre sur le site d'O'Reilly, qui doit également sortir un bouquin sur cet excellent langage de script.

Perleurs, pythoniens, jetez un oeil à Ruby, ce langage est une petite merveille.

Aller plus loin

  • # Ruby Rulez !

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

    Pour moi LE language ultime pour scripter =)

    Par contre dommage que http://www.rubyfr.org/(...) ne donne plus signe de vie =(

    Fans de Perl, Python et SmallTalk, essayez-le =)
    • [^] # Re: Ruby Rulez !

      Posté par  . Évalué à 9.

      Je reconnais que c'est un langage de script tres agreable. Malheuresement, il est relativement meconnu, ce qui fait que les "decideurs" au sein des entreprises ne sont pas tres chauds. Quitte a faire du script, ils preferent du Perl ou bien du Python.

      Pour les fans d'objet, je signale aussi Eiffel ( closed-source : http://www.eiffel.com/(...) , open-source : http://www.loria.fr/projets/SmallEiffel/(...) ) qui est tres bon et utilise dans la haute finance et d'autres activites importantes.

      --
      Law of the Jungle:
      He who hesitates is lunch.
    • [^] # Re: Ruby Rulez !

      Posté par  . Évalué à 3.

      > Par contre dommage que www.rubyfr.org/ ne donne plus signe de vie =(

      Il est de nouveau up, un simple problème lors de l'upgrade d'Apache :/
      Par contre, comme je n'ai plus le temps de m'en occuper, si cela intéresse quelqu'un ...
    • [^] # Re: Ruby Rulez !

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

      Le gros de l'activité est sur Ruby Garden maintenant :

      http://www.rubygarden.org/(...)
  • # Mangez-en

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

    Pour ceux qui ne connaissent pas, Ruby est un langage vraiment intéressant, par rapport à Perl ou Python.

    • C'est un langage dynamique à tous les points de vue (typage et extension des classes).

    • C'est un langage à objet complet, proposant des mécanismes simples pour les singletons et les « mixin » (je ne sais traduire celà en français correct, si quelqu'un a une idée ?)

    • C'est un langage de script extensible à vonlonté. La programmation de nouvelles classes ou modules de bases en C est très facile.

    • Enfin, son plus grand point fort, c'est qu'il permet une approche fonctionnelle grâce aux blocs et aux fonctions anonymes (comme Python, mais en mieux et plus élégant).

    Voilà, j'espère vous avoir donné un peu envi de regarder vers ce langage.

    Sachez aussi qu'il existe une implémentation spécifique de Ruby pour les pages web dynamique (à la PHP), irb.
    • [^] # Re: Mangez-en

      Posté par  . Évalué à 0.

      irb est un shell ruby interatif.

      Ce dont tu parles est surement ERuby :)
  • # bon language

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

    A mon avis, l'un des problèmes de ruby actuellement c'est le manque d'exemplaires installés pour faire tourner les scripts sur plusieurs machines différentes... On trouve Perl et Python dans n'importe quelle distribution linux ou n'importe quel unix, ce qui n'est malheureusement pas le cas de ruby... Sinon ca a l'air bien foutu comme language.
    • [^] # Re: bon language

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

      C'est vrai, mais sa popularité augmente (avec raison). En attendant, il est sur Mandrake, je suppose qu'il est sur RedHat aussi.

      Par ailleurs tu ne trouvera pas Perl sur n'importe quel Unix, loin de là, et encore moins Python.
      • [^] # Re: bon language

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

        Si je peux juste rajouter en passant : il est sur Mandrake... depuis le 14 Fev 2000 (ce superbe langage).
  • # Juste pour dire quelque chose contre Ruby :-)

    Posté par  . Évalué à 10.

    J'aime bien Ruby aussi, mais il y a quand meme des trucs qui me gene:
    * AUCUNE possibilité de déclarer des variables! (comme en Python, d'ailleurs)

    En Perl, la déclaration des variables est optionelle (et non nécéssaire par défaut), mais elle existe: c'est très utile pour les gros programme, moins pour les petits scripts.

    si ecrivez le code suivant en Ruby:

    maVariable = 1
    if ( <une condition> )
    then
    maVariablee = 2 <-- faute de frappe
    end

    <utiliser maVariable>

    Il n'y aura aucune erreur.. Bon courage pour retrouver pourquoi le script ne marche pas dans certains cas.

    Ruby et Python sont "plus strict" que Perl pour la lecture de variable inconnu, cela limite le probleme..
    Mais franchement c'est un peu dommage: Ruby et Python sont meilleurs (a mon avis) que Perl pour écrire des gros programmes mais ils leur manque tous les deux la déclaration de variable et l'équivalent de "use strict"..

    * un petit defaut:
    a = b + c
    ou
    a = b +c
    peuvent avoir des comportements differents..
    • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

      > * AUCUNE possibilité de déclarer des variables! (comme en Python, d'ailleurs)

      C'est commun à absolument tous les langages de scripts, et même tous les langages faiblement typés je crois.

      > Mais franchement c'est un peu dommage: Ruby et Python sont meilleurs (a mon avis) que Perl pour écrire des gros programmes mais ils leur manque tous les deux la déclaration de variable et l'équivalent de "use strict"..

      Je ne crois pas que ça soit un si gros problème. Un mode "warning" à la Perl serait sans doute utile, mais la propreté de Ruby par rapport à Perl fait que la balance penche toujours largement de son coté, surtout lorsque le nombre de lignes augmente.

      Contrairement à Perl, en Ruby tu aura moins tendance à avoir des variables avec un scope très large (genre variables globales), plutôt uniquement des variables membres ayant le scope d'une classe, donc ça facilite beaucoup le debug.
      • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

        Posté par  . Évalué à 5.

        >> * AUCUNE possibilité de déclarer des variables! (comme en Python, d'ailleurs)

        >C'est commun à absolument tous les langages de scripts, et même tous les langages faiblement typés je crois.

        Bin et Perl ?? Une "exception notable" non??
        Ca doit etre encore le language de script le plus utilise (les shells mis a part bien sur).

        Je suis d'accord que Ruby et Python restent beaucoup plus propres que Perl, malgres ce defaut, mais bon Perl est tellement moche (a mon avis) que ce n'est pas un exploit..

        Les fautes de frappes bien planqués qui ne se montrent que chez le client (loi de Murphy), ca arrive et c'est quand meme dommage que ni Ruby ni Python ne permette d'éviter cela..

        J'ai meme vu sur la mailing-list de Ruby que matz (l'inventeur de Ruby) avait fait une erreur de ce type (je ne me souviens plus exactement quel message, désolé).

        Dans l'entreprise ou je bosse, les regles de codage en Perl imposent l'utilisation de "use strict" et aussi les warning (pour eviter l'utilisation de variable non-definie).

        Je trouve que ca fait gagner du temps de developper en activant ces options..
        • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

          Posté par  . Évalué à 1.

          Oui, je pense que Perl c'est le langage libre par excellence:
          si tu veux coder comme un porc, libre à toi, mais si tu veux qu'on puisse relire ton code (et ne pas passer trente ans à débugguer), use the strict Luke !
          En un mot : TIMTOWTDI (ouf!)
          • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

            Oui mais Perl t'encourage à coder comme un porc, (c'est la voie la plus facile, pour re-citer Star Wars :-), et surtout la syntaxe est intrinsèquement pénible à lire.

            Il est plus facile de coder clean en Python ou Ruby qu'en Perl. C'est le gros avantage, et c'est essentiellement ça qui fait que le langage passe mieux à l'echelle.
            • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

              Posté par  . Évalué à 2.

              >Oui mais Perl t'encourage à coder comme un porc
              Je ne suis pas d'accord : pour moi, si Perl ne t'impose aucune de facon de coder, c'est pour te permettre de coder comme tu l'entends.

              Si tu veux faire un programme qui sera utilisé régulièrement, alors à toi de l'écrire proprement.
              Par contre, s'il s'agit d'écrire rapidement un script à l'usage éphemère, alors pourquoi avoir à suivre des règles strictes ?

              Pour une fois, ce n'est pas toi qui doit t'adapter à la syntaxe du langage, mais le langage qui s'adapte à ta facon d'écrire...

              Ce n'est pas au Perl qu'il faut en vouloir, lorsqu'on se trouve face à un script imbittable, mais a son auteur.
              • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

                > Si tu veux faire un programme qui sera utilisé régulièrement, alors à toi de l'écrire proprement.

                Mais justement, là Ruby est clairement gagnant parce que l'effort à faire pour l'écrire proprement est bien moindre en Ruby qu'en Perl.

                > Par contre, s'il s'agit d'écrire rapidement un script à l'usage éphemère, alors pourquoi avoir à suivre des règles strictes ?

                Et là aussi Ruby gagne, parce que même pour les petits scripts jetables, il est plus efficace que Perl.

                > Pour une fois, ce n'est pas toi qui doit t'adapter à la syntaxe du langage, mais le langage qui s'adapte à ta facon d'écrire...

                Non, a quelques exceptions près, la syntaxe de Perl est une contrainte, pas une liberté. Et c'est justement ces quelques exceptions que Ruby a repris. La syntaxe de Ruby est aussi assez souple, mais "juste ce qu'il faut". Quiconque vient de C++, Perl ou Java peut l'assimiler en quelques heures.

                Essaie-le, tu verra bien.
          • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

            Posté par  . Évalué à 0.

            En un mot : TIMTOWTDI (ouf!)


            Ben non justement, pour du travail en équipe, avec des niveaux différents et/ou du turnover TIMTOWTDI est TRES mauvais.

            Un program de + de 10000 lignes en Perl est imintenable.
            D'ailleur j'en connais pas beaucoup qui tiennent la route.
        • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

          Pour python, il existe pyChecker qui verifie ton code et detecte ce genre d'erreurs, entre autres...
      • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

        Posté par  . Évalué à 1.

        >> * AUCUNE possibilité de déclarer des variables! (comme en Python, d'ailleurs)
        >C'est commun à absolument tous les langages de scripts, et même tous les langages faiblement typés je crois.

        Arrgh, pour moi, les premiers langages de scripts sont Korn shell et awk... eh bien tous deux permettent de déclarer des variables, on peut meme spécifier la nature de la variable (typeset)... voyons voir en PHP aussi, en perl aussi...

        bon bah en fait il n'y a que le Ruby et le Python où l'on ne pourrait pas déclarer de variable avant de les utiliser...?
        • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

          OK, je reformule : dans tous les langages de script que je connais, tu n'est pas obligé de déclarer tes variables, contrairement à un langage comme C++ ou Java. Tu peux le faire, mais ça n'est pas une obligation.
          • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

            Posté par  . Évalué à 0.

            OK, je comprends mieux ton post avec cette correction.

            Je vais tenter de clarifier mon "reproche": je ne reproche pas a Ruby|Python de ne pas avoir de déclaration obligatoire par défaut, c'est "normal" pour un language de script.
            Ce que je leur reproche, c'est qu'il ne soit pas possible DU TOUT de declarer des variables avec un mode "use strict" pour trouver les erreurs.. Pour des languages qui prétendent pouvoir être utilisé pour batir des gros programme ça ne fait pas sérieux..

            Je ne connaissais pas PyChecker, qui doit aider un peu, encore que les outils "a la lint" sont souvent difficile a utiliser: soit ils génèrent un monceau de messages d'erreurs, soit ils laissent passer des probléme..

            Je vais regarder s'il existe un outil similaire pour Ruby..

            reno
            • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

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

              Ça dépend un peu de ce que tu appelles "gros programmes". Par rapport à un script de base (disons < 1kloc), "gros" c'est 10 ou 100 klocs. Je pense que Ruby ou Python peuvent arriver à ça sans trop de problèmes, mais pas Perl (enfin si, Perl peut surement et je suis sur qu'il y aura plein de zealots pour me citer des exemples, mais la maintenance sera toujours un cauchemard).

              Par contre si tu parles de "gros" dans l'absolu (e.g. au dessus du million de lignes), là je doute qu'aucun langage de script n'y arrive...
            • [^] # Re: Juste pour dire quelque chose contre Ruby :-)

              Posté par  . Évalué à 1.

              Bof. PyChecker ne vérifie pas grand chose...
  • # Pour les usenautes

    Posté par  . Évalué à 8.

    A noter qu'un vote est actuellement en cours sur Usenet-fr concernant la création d'un forum fr.comp.lang.ruby (non-modéré).

    Le vote durera jusqu'au 11 novembre 2001. Les AAV se trouvent aux lieux habituels (fufe / fufa) et sur plusieurs forums de la hierarchie fr.comp.lang.* (notamment ceux dédiés aux langages de script).
  • # c'est mieux quand y'a moins à faire

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

    Ce que j'aime dans le perl, c'est qu'on peut faire un client mail en 5 lignes, j'avais fait un p'tit programme rapide pour récuperer mes mails en POP3 à 7h45 parce qu'à la fac les acces au net fermait à 8h du matin (début des cours), le programme en C, faisait 60 lignes, le programme en perl en faisait 5, j'ai rajouté des filtres pour enlever les messages indésirables (une banned list) ça faisait 10 lignes en tout...
    Pourquoi ? parce qu'il existe en Perl une chiée de module qui font tout et n'importe quoi et qui évite de réinventer la roue.
    Quand je fais du scripts c'est justement pour développer rapidement un p'tit truc... Quels sont les modules/bibliotheques qui existe en Ruby ?
    Peut on faire de l'open-gl comme avec Perl ? parser du XML ? mettre en route la machine à café à distance ?

    C'est là dessus que je suis le plus interressé, si quelqu'un pouvait m'éclairer :-)

    Merci

    Axel - 584
    • [^] # Re: c'est mieux quand y'a moins à faire

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

      > Quels sont les modules/bibliotheques qui existe en Ruby ?

      Pour la partie qui t'interesse (networking) :

      http://www.rubycentral.com/book/lib_network.html(...)

      Pour faire de l'OpenGL, je ne crois pas (du moins pas encore). Pour parser du XML, c'est en train d'arriver. Pour la machine à café, je m'en fous j'aime pas le café.

      > C'est là dessus que je suis le plus interressé, si quelqu'un pouvait m'éclairer :-)

      Le temps que tu tapes ta question, tu aurais déjà eu la réponse en visitant les liens mentionnés dans la news :-).

Suivre le flux des commentaires

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