Ruby
Un article de Wikipédia, l'encyclopédie libre.
Ruby | |
Apparu en | 1995 |
Auteur | Yukihiro Matsumoto |
Développeurs | Yukihiro Matsumoto et des contributeurs |
Dernière version | 1.8.6[1] (12 mars 2007) |
Paradigmes | Objet, impératif, concurrent, fonctionnel |
Typage | dynamique |
Influencé par | Perl, Smalltalk, Python, Lisp, Dylan et CLU |
A influencé | Groovy, Perl 6 |
Implémentations | Ruby, YARV, JRuby, XRuby, Rubinius, Cardinal, Gardens Point Ruby.NET |
Système d'exploitation | Multiplate-forme |
Licences | Licence Ruby et GPL |
Site Web | ruby-lang.org |
Ruby est un langage de programmation sous licence libre. Il est interprété, orienté objet, et multi-paradigme.
Sommaire |
[modifier] Présentation
Ruby est un langage de programmation orienté objet. Le nom Ruby n'est pas un acronyme mais un jeu de mots sur Perl[2].
[modifier] Historique
Yukihiro "Matz" Matsumoto est le créateur de Ruby. Ne trouvant pas dans les langages de programmation déjà existants (dont Perl et Python) de quoi le satisfaire, il commenca l'écriture en 1993 et publia une première version en 1995. Depuis, les versions se sont enchaînées, généralement pour Noël[3].
Les changements de version majeurs ont eu lieu[4] :
- le 25 décembre 1998 pour la version 1.2.0,
- le 13 août 1999 pour la version 1.4.0,
- le 19 septembre 2000 pour la version 1.6.0,
- le 4 août 2003 pour la version 1.8.0,
- et le 25 décembre 2007 pour la version 1.9.0 (version de développement)[5].
La dernière version stable est la 1.8.6, publiée le 12 mars 2007[6].
Depuis l'arrivée d'une documentation anglophone, et du framework web Ruby on Rails, Ruby connaît un certain engouement, qui ne cesse de croître dans le monde de la programmation[7].
[modifier] Philosophie
Ruby est fortement orienté objet et se rapproche ainsi du paradigme objet de Smalltalk[8] :
- toute donnée est un objet, y compris les types ;
- toute fonction est une méthode ;
- toute variable est une référence à un objet.
Malgré cet aspect exclusivement objet, la programmation procédurale est possible et fréquente. Ruby utilise une syntaxe simple, inspirée par Eiffel et Ada[9].
Le langage est souvent présenté comme évitant au maximum les mauvaises surprises, selon le principe de moindre surprise[10]. Mais puisqu'il n'est pas possible d'éviter la surprise de tous les utilisateurs, Yukihiro Matsumoto précise qu'il cherche surtout à éviter sa propre surprise[11]. Ainsi plus on connaît le langage, plus on connaît la logique de son auteur et moins on s'étonne des fonctionnalités qu'on découvre.
[modifier] Fonctionnalités
Les fonctionnalités principales sont :
- l'orientation objet omniprésente ;
- le ramasse-miettes chargé de libérer automatiquement la mémoire ;
- le système de gestion d'exceptions pour gérer les erreurs exceptionnelles ;
- la possibilité de modifier les classes pendant l'exécution du programme, qu'elles soient définies par l'utilisateur ou non ;
- l'intégration dans sa syntaxe des expressions rationnelles ;
- les blocs qui servent d'itérateur et permettent de passer des morceaux de programme en paramètre ;
- l'héritage simple ;
- l'inclusion de modules dans les classes, une autre manière de concevoir l'héritage multiple (mixin) ;
- l'écriture d'extensions en C relativement simple ;
- les nombres entiers de taille illimitée avec conversion automatique lorsque c'est nécessaire[12] ;
- la portée des variables définie par leur forme :
var
est une variable locale,@var
est une variable d'instance,@@var
est une variable de classe,$var
est une variable globale,Var
est une constante, etc. ; - les threads indépendants du système d'exploitation ;
- la réflexion, c'est-à-dire la possibilité pour les programmes et les objets de s'inspecter eux-mêmes et de se modifier.
[modifier] Implémentations
L'interpréteur officiel fonctionne sur de nombreux systèmes d'exploitation : Unix, Linux, Microsoft Windows, DOS, Mac OS X, OS/2, Amiga, etc. Il est publié sous la double licence libre GNU GPL et la licence Ruby[13].
Ruby est fourni avec irb, un interpréteur de commandes interactif pour tester en profondeur le fonctionnement du langage. Il existe une version web d'irb pour tester Ruby dans un navigateur[14].
Depuis le 1er janvier 2007, la version de développement de Ruby (1.9) est basée sur l'interpréteur YARV écrit par Koichi Sasada[15]. Ce nouvel interpréteur apporte un gain notable en performances[16].
Il existe plusieurs autres interpréteurs Ruby[16] :
- JRuby[17]
- Il est écrit en Java et interprète directement du code source écrit en Ruby.
- XRuby
- Il convertit du code Ruby en code Java et est plus rapide sur certains tests de performance que la version 1.8.5 de l'interpreteur officiel[18].
- Rubinius
- Une machine virtuelle simplifiée, inspirée de Smalltalk-80[19].
- Cardinal[20]
- Un interpréteur fonctionnant sous Parrot.
- Gardens Point Ruby.NET
- Un interpréteur fonctionnant sur le framework .NET[21].
- IronRuby
- Un compilateur fonctionnant sur la CLR du framework .NET[22].
[modifier] Interprètes embarqué
Ruby possède une interface de programmation en langage C qui lui permet d'être intégré au sein d'autres logiciels. Ruby est notamment utilisable dans :
- Apache avec mod_ruby pour générer des pages web en Ruby
- et PostgreSQL avec PL/ruby pour faire exécuter des commandes Ruby au serveur de base de données.
Le logiciel de création de jeu vidéo RPG Maker intègre dans ses versions XP et VX un langage de programmation issu de Ruby et nommé RGSS, Ruby Game Scripting System.
[modifier] Bibliothèques
Il existe de nombreuses bibliothèques de fonctionnalités adjoignables au langage. Le dépôt historique de ces bibliothèques est le Ruby Application Archive (RAA)[23]. Il contient des fonctionnalités supplémentaires pour Ruby comme des bibliothèques de classes et de modules, mais aussi des extensions permettant d'utiliser des bibliothèques tierces.
Le RAA contient également des logiciels écrits en Ruby. Parmi ces logiciels on trouve notamment Rubygems qui est un outil d'empaquetage et d'installation pour les extensions Ruby[24]. Il permet de déployer rapidement des bibliothèques et des programmes Ruby.
Le site web Rubyforge[25] est également un hébergeur important de programmes et de bibliothèques écrites en Ruby.
[modifier] Exemples
Le classique Hello world:
puts "Hello World!"
Utilisation des objets:
# Tout est objet, même les nombres: -199.abs # 199 "ruby is cool".length # 12 "Rick".index("c") # 2 "Nice Day Isn't It?".downcase.split(//).sort.uniq.join # " '?acdeinsty"
Utilisation de Mixin et de l'Héritage
module AnimalSkills def eat! puts "I'm eating !" end def move! puts "I'm moving !" end def express! puts "I'm expressing !" end end class Animal include AnimalSkills # mixin @@name = 'an animal' # variable de classe def initialize(size, weight, color) # initialisation des variables d'instance @size = size.to_i @weight = weight.to_i @color = color.to_s end def describe! puts "I'm #{@@name} !" puts "I'm #{@size.to_s} meter tall, #{@weight.to_s} kilogramms weigh and I'm " + @color end end class Zebra < Animal @@name = 'a zebra' # rédéfinition de la variable de classe def initialize(size, weight, color = 'black and white') # surchage super # appel de la méthode de la classe mère (Animal) end end z = Zebra.new 1, 50 z.describe! # => I'm a zebra ! / I'm 1 meter tall, 50 kilogramms weigh and I'm black and white z.eat! # => I'm eating !
[modifier] Voir aussi
[modifier] Articles connexes
[modifier] Bibliographie
- (en) Dave Thomas, Andrew Hunt, Programming Ruby, 2000 (ISBN 0-201-71089-7)
- (fr) Yukihiro Matsumoto, Ruby in a Nutshell, 2002 (ISBN 2-84177-210-1)
- (en) Dave Thomas, Chad Fowler, Andy Hunt, Programming Ruby: The Pragmatic Programmer's Guide, 2004 (ISBN 0-97451-405-5)
- (fr) Chris Pine, Débuter en Programmation avec Ruby, 2006 (ISBN 2-74402-078-8)
- (fr) Lucas Carlson, Leonard Richardson, Ruby par l'exemple, 2006 (ISBN 978-2-84177-347-3)
- (en) Hal Fulton, The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition), 2006 (ISBN 0-67232-884-4)
- (en) Maik Schmidt, Enterprise Integration with Ruby, 2006 (ISBN 0-97669-406-9)
- (en) Brian Marick, Everyday Scripting with Ruby: For Teams, Testers, and You, 2007 (ISBN 978-0-97761-661-9)
- (en) Peter Cooper, Beginning Ruby: From Novice to Professional, 2007 (ISBN 978-1-59059-766-8)
[modifier] Liens externes
- (fr) Site officiel
- (en) Le Wiki de RubyGarden contenant beaucoup d'informations complémentaires sur Ruby
- (fr) Association RubyFrance
- Une liste de diffusion en français existe. Pour la rejoindre il faut envoyer un courrier électronique à ruby-fr-ctl@ruby-lang.org. Elle est archivée sur Mailing list ARChives et Nabble
[modifier] Notes et références
- ↑ Télécharger Ruby sur le site officiel
- ↑ The Ruby Programming Language, article de Yukihiro Matsumoto publié sur informit.com le 12 juin 2000
- ↑ Voir les dates de publication des versions 1.6 et 1.8
- ↑ Site FTP officiel de téléchargement
- ↑ (en) Annonce de la version 1.9 par matz
- ↑ Site FTP officiel pour télécharger les dernières versions stables
- ↑ Explication de la croissance sur le site officiel
- ↑ La principale différence étant que les structures de contrôle (if-then-else, while, etc.) ne sont pas des objets.
- ↑ Ruby sur HOPL, the History of Programming Languages
- ↑ Définition du PoLS sur le wiki de Ruby Garden
- ↑ e-mail Re: A different perspective on Ruby envoyé par matz le 26 mai 2005 sur ruby-talk
- ↑ Ruby—A Diamond of a Programming Language, Part 2, article publié sur devx.com
- ↑ Texte de la licence sur le site officiel
- ↑ Try Ruby! sur hobix.com
- ↑ (en)The Ruby VM: Episode I, interview de matz et de ko1 sur la machine virtuelle de Ruby
- ↑ a b Ruby Implementations Shootout, comparaison des performances des principaux interpréteurs Ruby
- ↑ Site officiel de JRuby
- ↑ (en) XRuby is faster than Ruby 1.8.5 in most benchmarks
- ↑ (en) Rubinius Interview
- ↑ Site du projet Cardinal
- ↑ (en) Ruby.NET - Integrating the Gardens Point Compiler par Huw Collingbourne
- ↑ (en) [1]
- ↑ Ruby Application Archive
- ↑ Site officiel de Rubygems
- ↑ RubyForge