Interview de Laurent Julliard

Ruby : le meilleur de Smalltalk, Perl et Python !

Photo de l'auteur

Langage de script totalement orienté objet, Ruby fait de plus en plus d'adeptes. Fervent utilisateur de ce langage et traducteur pour l'adaptation française du livre Agile Web Development With Rails: A Pragmatic Guide, à savoir Ruby on Rails dans sa version française, Laurent Julliard nous présente les principes fondamentaux de la programmation en Ruby.

Quels sont les points forts du langage de script Ruby ?

Laurent Julliard : Je suis moi-même venu à Ruby au début de l'année 2001. Après de nombreuses années de programmation en Perl (entre autre), j'ai commencé à ressentir les limites de ce langage, notamment à cause d'une syntaxe "délicate" qui a véritablement montré ces limites lorsque Perl a dû passer à la programmation objet. Ruby, par contraste, brille par la simplicité de sa syntaxe et surtout par sa cohérence. C'est ce que son créateur (Yukihiro Matsumoto dit "Matz") appelle le "Principe de Moindre Surprise" (ou POLS en anglais pour "Principle of Least Surprise"). Ruby présente cette particularité de vous laisser coder quasiment comme vous pensez. C'est un langage avant tout "orienté humain".
Pour résumer, les points forts du langage Ruby sont sa très grande lisibilité, son approche totalement objet, sa remarquable extensibilité (mise à contribution dans le framework Web Ruby on Rails par exemple) et sa cohérence.

Quelles sont ses faiblesses ?

L.J. : Sur le langage lui-même, il est véritablement difficile d'en trouver. Un développeur connaissant d'autres langages comme Java, C#, C/C++, PHP pourrait trouver inhabituelles certaines caractéristiques du langage Ruby comme les blocs de code et les itérateurs mais ils donnent une telle expressivité qu'on en vient vite à regretter leur absence dans les autres langages. Si on élargit la question à ce qui entoure le langage Ruby on peut y voir deux points perfectibles : la documentation en français et l'archive des librairies.

En ce qui concerne la documentation, il existe peu de chose en français. On trouve bien sûr le livre sur le framework Web Ruby on Rails chez Eyrolles qui est indispensable si vous oeuvrez dans le domaine des applications Web. Sur Ruby spécifiquement et si vous ne rechignez pas à lire dans la langue de Shakespeare, les choses se sont beaucoup améliorées. Je recommende tout particulièrement l'incontournable Programming Ruby: The Pragmatic Programmers' Guide de Dave Thomas, et The Ruby Way de Hal Fulton. Et bien entendu, les librairies livrées avec Ruby sont très bien documentées.

En ce qui concerne la gestion des modules et des librairies Ruby, les choses ne cessent de s'améliorer. Le Ruby Application Archive (voir http://www.ruby-lang.org/en/raa.html) est une première étape vers quelque chose qui, je l'espère, ressemblera à l'archive CPAN de Perl. Par contre Ruby s'est déjà doté d'un système de gestion de paquetages remarquable appelé Rubygems qui permet de gérer différentes versions d'une même librairie ou ses dépendances dans une installation Ruby. De plus en plus de librairies sont publiées sous cette forme. Enfin la communauté Ruby dispose aussi d'un site appelé RubyForge entièrement dédié aux activités de développement autour de Ruby et de ses librairies. Au final, les choses sont en constantes améliorations.

Ruby est présenté comme un langage "totalement" orienté objet, c'est-à-dire ?

L.J. : Cela veut dire deux choses :

  • Tout d'abord tout ce que vous manipulez dans le code Ruby est un objet qui appartient à une classe. Ruby se distingue en cela de nombreux autres langages qui ont vite tendance à faire quelques arrangements avec le concept d'objet : par exemple en faisant une distinction entre les "types natifs" (souvent les valeurs numériques) et les autres, ou bien en traitant de façon ambigüe les notions "vrai, faux ou rien", etc.
  • Le modèle objet de Ruby était là dès sa conception. On peut même dire que Ruby a été bâti autour du concept d'objet. Il ne s'agit donc pas d'une fonctionnalité qui est venue se greffer avec plus ou moins de bonheur sur un langage existant. En cela Ruby est très proche de Smalltalk et se distingue de Python et de Perl.
Peut-on débuter en programmation avec Ruby ?

L.J. : Sans aucun doute. Je l'ai moi-même mis entre les mains d'adolescents qui s'initiaient à la programmation et cela n'a posé aucun problème. Ruby est aussi remarquablement adapté à l'apprentissage des concepts liés à la programmation objet (classe, objet, héritage, variable d'instance ou de classe...). Là encore, la syntaxe très dépouillée de Ruby permet de se concentrer sur les concepts plutôt que sur les moyens.

Le langage Ruby est souvent comparé à Python. Pourquoi ? Pouvez-vous nous dire en quelques lignes ce que les programmeurs Python trouveront de plus avec Ruby ?

L.J. : Difficile de faire une comparaison entre deux langages sans déclencher une guerre de religion... Disons que Python, comme Perl, est au départ un langage de scripting auquel son créateur a ensuite donné des capacités de programmation objet. Même si le résultat est plus réussi sur Python que sur Perl, il n'en reste pas moins que cela se voit. Python souffre de lacunes comme la difficulté a limiter la portée des objets, une gestion assez étrange des variables globales et des constantes, la surcharge des opérateurs assez inélégante, une syntaxe qui impose un mécanisme d'indentation certes intelligent mais qui n'améliore pas pour autant la lisibilité du code. Ruby est exactement l'inverse : c'est un langage purement objet auquel on a ensuite donné des capacités de scripting. A l'arrivée, c'est encore une fois la cohérence de Ruby qui frappe le plus.

Une autre façon de voir les choses c'est de regarder l'évolution du langage lui-même. Le langage Ruby n'a connu que de rares ajustements aux cours de ces dernières années alors que Python a reçu des modifications et des ajouts assez conséquents (parfois pour imiter Ruby, d'ailleurs). Il ne faudrait pas en déduire que Python est un langage plus vivant que Ruby mais plutôt que l'approche tout-objet de Ruby alliée à son incroyable capacité à s'enrichir lui-même de façon purement programmatique, a permis de répondre à quasiment tous les besoins sans changer le coeur du langage.

Avec son framework de création d'applications Web "Ruby On Rails", Ruby constitue-t-il une alternative sérieuse à PHP ?

Ruby on rails

L.J. : Absolument. Encore une fois, PHP est l'exemple typique d'un langage qui s'est imposé non pas pour ses qualités intrinsèques mais parce qu'il s'est positionné dans un domaine d'application très spécifique (le Web) d'où Python était absent à ses débuts et où Perl a vite montré ses faiblesses en terme de maintenabilité. PHP est aujourd'hui bien installé en tant que framework d'applications Web mais les développeurs PHP eux-mêmes sont de plus en plus nombreux à déplorer les lacunes du langage (modèle objet ajouté tardivement et incomplet, absence d'espace de nommage...) qui deviennent de vrais freins lorsqu'il s'agit de développer des applications Web d'une certaine taille.

Lorsque Ruby on Rails est apparu avec son modèle objet tiré au cordeau et une véritable architecture Modèle-Vue-Contrôleur appliqué au Web toutes les autres communautés de développeurs (PHP, Python, Java, C#/.NET...) se sont jetés dessus pour essayer de l'imiter... sans jamais atteindre la cohérence de l'original. Là encore le langage Ruby a donné toute la mesure de sa flexibilité : là où la plupart des autres langages ont par exemple fait le choix de définir un langage particulier pour générer les vues (les pages HTML) des applications Web, Rails s'est simplement contenté d'utiliser Ruby en l'agrémentant de quelques sucreries syntaxiques. Résultat : un seul langage à apprendre pour tout faire.

Il faut aussi noter qu'il existe déjà des applications Web critiques bâties sur Rails. L'arrivée de la version 1.0 en décembre 2005 apporte des bases de développement saines aux développeurs d'application Web.

Quels sont les principaux IDE Open Source avec lesquels on peut utiliser Ruby ?

L.J. : Le nombre d'IDE supportant Ruby s'étend chaque jour davantage. On peut citer RadRails qui permet de gérer des projets Rails ou Ruby pur (dans sa version 0.5.3). RadRails est bâti sur Eclipse et il est livré soit sous forme de plugin, soit comme application indépendante (http://www.radrails.org). On peut aussi mentionner Komodo, ArachnoRuby et FreeRIDE. Il est aussi utile de rappeler que tous les éditeurs un tant soit peu connus du marché possèdent tous un mode Ruby (vi, Emacs, Xemacs, Textmate sur Mac OS X...).

Propos recueillis par Laetitia Maraninchi.

Recevez nos newsletters
Vous serez régulièrement informé(e) de toutes nos nouveautés. Inscription