IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Vos avis ? Vos expériences ?


Sujet :

Ruby

  1. #1
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut Vos avis ? Vos expériences ?
    Bonjour,

    J'entends de plus en plus parler de ce nouveau langage appelé Ruby et de son grand frère Rails. Mais les rares petits articles que j'ai trouvé sur la question ne sont que des vagues démonstrations type "hello world" pas très convaincantes et surtout qui auraient tendance à me repousser vu que dans ces situations, ruby a vraiment l'air d'un autre langage de bricoleur du dimanche à la perl (désolé pour les perliens mais moi c'est jamais passé lol).

    Enfin bref, est-ce que quelqu'un pourrait me dire (ou m'indiquer une ressource qui le fait bien sans m'obliger à plonger dans les méandres de la doc ou de "why's poignant guide to ruby", excellent au demeurant) ce qu'apporte concrètement ce langage par rapport à un Java par exemple (mon bestiau de prédilection). Dans quels cas d'utilisation il est vraiment plus puissant ? Quelle est votre expérience de ce langage ? Quels sont vos pronostics pour l'avenir ? Est-ce que ça vaut vraiment le coup de s'y attarder?
    Sébastien ARBOGAST
    SCJP

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Ruby est aussi un language interprete comme perl ou python.
    Rails est un framework de developpement web code en Ruby, pas un language a part entiere.

    le site officiel de ruby est :
    http://www.ruby-lang.org/en/

    tu peux aussi regarder la:
    http://www.rubygarden.org/ruby

    Pour Rails :
    http://www.rubyonrails.org/

    et si tu veux avoir des demos utilisant GTK, regarde la :
    http://ruby-gnome2.sourceforge.jp/fr/

    Maintenant, si les languages interpretes te donnent des boutons, ca ne permettra pas de te faire changer d'avis.

    JCM a qui il arrive de gagner sa croute en utilisant des languages de codeur du dimanche, comme quoi ....

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Pour faire court, je dirais que l'avantage de Ruby sur Java c'est que l'introspection fait partie du langage au lieu dêtre une API. Avec comme conséquence qu'un framework peut être fait de façon beaucoup plus simple et élégante en Ruby. Et là, Rails (le module ActiveRecords en fait) est un exemple typique.
    Inconvénient: pas de typage des données (parfois un obstacle pour certains habitués de Java) donc difficile d'avoir un IDE qui fait vraiment de la complétion de code.
    Mon pronostic pour l'avenir: pour le développement web il va très sérieusement concurrencer PHP et même Java. Pour le scripting il aura du mal à concurrencer Perl et Python car il a moins de librairies à disposition, mais il est loin de faire pâle figure.
    Cà ne vaut pas forcément la peine de s'y attarder mais faut garder un oeil dessous

  4. #4
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    J'ai eu des échos différents la version objet de perl vise a faire migré le langage vers ruby.

    C'est un langage vraiment remarquable, mais les informations sur le net sont insuffisante pour vraiment en avoir une idée. Le langage a beaucoup évolué depuis la parution du document PickAxe : the pragmatic programmeur guide

    Il faut vraiment investir dans un bouquin pour vraiment évalué le langage. Ce n'est peut-être pas le plus rapide des langages ,mais il est extrement souple. il peut faire des liens avec des objets et des fonction en runtime....

    Et faire un interface avec un autre langage n'est pas une corvée!

    C'est un langage parfait pour les projets complexe qui doivent être produit rapidement pour des usage peu courante ou unique. Ou pour faire des protoype.
    Définitivement le couteau suisse du programmeur! 8)

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par Madmac
    Le langage a beaucoup évolué depuis la parution du document PickAxe : the pragmatic programmeur guide
    Il y en a eu une deuxieme edition base sur la 1.8 (version stable actuelle), par contre non dispo sur le net. ;)

    On sait jamais si ca peut convertir des gens. :)

    A+

    Juan

  6. #6
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut Ruby s'Eclipse
    Bonjour,

    J'ai découvert Ruby très récement et je le trouve assez sympa.
    Orienté objet et proche de Python, il en acquiert de nombreuses qualité !

    Rails à l'air aussi pas mal du tout ! (mais là je débute vraiment)

    Pour les Eclipsiens qui veulent toucher les Ruby : http://sourceforge.net/projects/rubyeclipse


    Bonne journée

  7. #7
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Selon moi, Ruby est beaucoup plus intéressant et le fun que Java, C# ou Python. C'est un langage dynamique, facile avec lequel on peut faire bien des choses. Il est plus simple et bien plus puissant que Java si vous voulez mon avis, le typage dynamique, les blocs, le méta-programming, etc. lui donne un avantage.

    J'ai écrit une petite librairie qui permet de racourci des URLs avec des services tels que ShortURL, shiturl, xrl.us, RubyURL, etc. J'ai 16 services en tout, et en moins de 200 lignes de code, en comptant les commentaires.

    http://shorturl.rubyforge.org

  8. #8
    Membre chevronné

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 758
    Points : 2 084
    Points
    2 084
    Par défaut
    Ici vous dites qu'il est orienté objet, mais sur ce même forum, on peut lire qu'il n'y a pas de classes abstraites ni de constructeur. Les interfaces existes?

    J'aime bien savoir ce qui se passe derrière quand je code.

    J'ai l'impression que RoR est sûrement très bien pour faire des petits sites web à la PhP (et encore, dirais-je, pas totalement), mais à part ca, je ne pense pas m'y intéresser spécialement.

    Ce qui m'épate c'est le tapage médiatique qu'on voit sur ce framework.

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Les interfaces (Java) et classes abstraites ( virtual pûre en c++ ) ont été créées simplement parce que le langage possède un typage, et que la seule façon de pouvoir réaliser du polymorphisme est de s'amuser à hériter pour spécialiser certains classes.

    Si par exemple, tu utilises la métaprogrammation en C++ avec les templates, tu as dû certainement utiliser le polymorphisme statique qui par rapport au polymorphisme dynamique n'a pas besoin de classe mère.

    Ruby utilise ce que l'on appelle le DuckTyping, si cela marche comme un canard et que cela fait "coincoin", c'est alors un canard.

    Donc, si deux classes ayant une méthode "coucou", tu peux les utiliser sans devoir spécifier la classe lors du passage de l'instance dans les params de la méthode appelante.

    Pour ce qui est des constructeurs, il existe un seul constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class People
        def initialize( firstname, lastname )
        end
    end
    La méthode initialize est le constructeur de la classe People

    Concernant la puissance de Ruby On Rails, elle n'est pas à négliger et sincèrement je pense que tu n'as pas regardé ce que peut faire cet outil.
    Imagine que par introspection de la base de données, Rails génère TOUT le code nécessaire pour utiliser TES tables.

    Sincèrement PHP n'a pas été conçu objet dès le départ, et par rapport à RubyOnRails, PHP est décadant et vieux.

    Dans l'ouvrage d'Eyrolles concernant Ruby On Rails, il est montré un simple exemple. Voilà l'exemple en gros.
    1) Création des scripts SQL pour la création de la base de données
    2) On modifie le fichier de conf de rails pour la db, afin de lui spécifier le login/pass ainsi que l'url et le type de SGBD.
    3) On lance un petit script de rails qui est fournit en standard et qui peut te générer en 10 sec de quoi modifier le contenu d'une table, en ajout, modification, suppression et lister le contenu de la dite table.

    Honnêtement, tu perds beaucoup à passer à côté de Rails et de RUBY.

    Si tu as une idée de la métaprogrammation, Ruby est vraiment intéressant.

    Un autre exemple :=)

    Au run-time, as-tu déjà réussi à créer une nouvelle classe "Superman" et lui ajouter des méthodes et des attributs ? C'est faisable :-) je te file meme le lien le démontrant. Je ne parle pas d'une nouvelle instance, mais d'une nouvelle classe.

    http://www.bigbold.com/snippets/posts/show/2390
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  10. #10
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par blbird
    Ici vous dites qu'il est orienté objet, mais sur ce même forum, on peut lire qu'il n'y a pas de classes abstraites ni de constructeur. Les interfaces existes?
    1. Ruby est 100% orienté objet, contrairement à Java p.ex. qui a des types primitifs qui ne sont pas des objets. En Ruby tu peux écrirece qui appelle la méthode "hours" sur la constante de type Fixnum appelée "2", qui retourne un Fixnum auquel est appliqué la méthode "ago" qui retourne une instance de la classe "Time" représentant la date + heure d'il y a 2 heures.
    2. Les modules correspondent aux classes abstraites, sauf qu'on peut mixer plusieurs modules dans une classe alors qu'on ne peut dériver que d'une classe abstraite.
    3. Le constructeur existe c'est la méthode "new" qui alloue de la mémoire puis appelle "initialize". En principe on redéfinit seulement "initialize" mais on peut aussi p.ex. rendre "new" private pour obliger de passer par une autre méthode style "get_instance".
    4. Les interfaces n'existent pas: Ruby est typé dynamiquement et utilise le principe du duck typing comme expliqué par swirtel.

    Quand au "hype" sur Ruby on Rails... Peut-être en font-ils trop mais RoR ne peut plus passer inaperçu. Dernier projet en date: possibilité de déployer un projet RoR en tant que WAR tournant sur JRuby.

  11. #11
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    On peut aussi rajouter qu'il est possible de rajouter des méthodes à des classes alors que l'on ne possède pas le code de cette classe.

    Par exemple, obtenir un Array contenant la liste des attributs qui offrent un accès en lecture ?

    Aller, on ajoute une nouvelle méthodes à la classe Object

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Object
        def attributes_in_read_mode
             instance_variables.collect { |x| x.gsub('@', '') } & public_methods
        end
    end
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Et j'ajouterai pour finir que tu juge Ruby a partir d'un framework orienté Developpement Net, mais il sait faire un tas d'autre chose et "On Rail" n'en est qu'une possibilité.

  13. #13
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Il me semble qu'en C# il est aussi possible de rajouter des méthodes à des classes alors que l'on ne possède pas le code de cette classe (partial class).

    Le fait qu'en Ruby les classes soient ouvertes permet d'étendre les fonctionnalités des librairies de base sans devoir créer de nouvelles hiérarchies.
    Voir p.ex. l'excellent projet Ruby Facet.
    Par contre, comment savoir qui a implémenté une méthode, et où? P.ex. comment savoir que Object#attributes_in_read_mode existe non pas dans Object ou Kernel, mais parce que j'ai inclu swirtel.rb ?

    De façon plus générale, et là je vais faire l'avocat du diable, la liberté totale que donne Ruby est à double tranchant. P.ex. rien ne m'empêche dans une librairie de surdéfinir l'opérateur "+" de Fixnum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    irb> class Fixnum
    irb>  def +(o)
    irb>   self - o
    irb>  end
    irb> end
    => nil
    irb> 2 + 2
    => 0
    irb>
    Un excellent moyen de foutre la m...
    (bien sûr on peut faire Fixnum.freeze pour se prémunir)

    En fait je vois mal comment s'en sortir sur de grands projets sans barrières et sans formalisme, même si c'est pénible. P.ex. le Duck Typing: j'apprécie l'idée, mais sur un projet avec des dizaines de développeurs, je préfère le formalisme des interfaces comme en Java ou C++.

  14. #14
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Effectivement, c'est un problème auquel je n'ai pas trouvé de solutions, j'avoue aussi ne pas avoir cherché. Maintenant, il y a une autre solution. Utiliser la documentation générée pour lister les méthodes "attributes_in_read_mode".
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  15. #15
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    J'ai commencé à lire "The Ruby Way, 2nd Ed". Selon l'auteur, le concept de classe abstraite n'existe pas en Ruby, et les modules sont proches des interfaces mais pas tout à fait puisqu'ils contiennent une implémentation...

  16. #16
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Est-il réellement nécessaire d'avoir des interfaces ou classes abstraites dans un langage comme Ruby qui est dynamique ?
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  17. #17
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    En effet, les interfaces peuvent etre vu comme inutile sous ruby.

    Pour le probleme d'extension des classes c'est un autre sujet, je trouve que cela donne des avantages meme si on perd en securité.

    Dans l'ensemble Ruby répond a un certain besoin d'une facon efficace. N'oublions que c'est un langage en constante évolution et que la communauté est grandissante. Les "Astuces" commences a fleurir et les concepteurs du langage seront le faire évoluer pour répondre aux besoins des utilisateurs.

    En tout cas je trouve le concept objet de ruby tres bon !!

  18. #18
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    basé sur eiffel et smalltak, c'est un très bon langage. Je ne dis pas qu'il est parfait ( je vois pas trop les inconvénients ), mais c'est un très bon outil.

    Quand on voit la manière avec laquelle Rails exploite Ruby et lui rajoute des concepts, c'est phénoménale.
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EAI] Annuaire de service : vos avis et expérience
    Par zekey dans le forum Java EE
    Réponses: 3
    Dernier message: 22/09/2014, 09h30
  2. Réponses: 0
    Dernier message: 16/09/2014, 22h25
  3. [Crystaliapc] Vos avis / Vos critiques !
    Par kimsse dans le forum Mon site
    Réponses: 0
    Dernier message: 28/12/2011, 17h27
  4. Projet de creation de site web, vos conseils, vos avis
    Par pims901 dans le forum Débuter
    Réponses: 6
    Dernier message: 31/05/2011, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo