Ruby

Ruby
Page d'aide sur l'homonymie Pour les articles homonymes, voir Ruby (homonymie).
Ruby
Logo du langage Ruby

Apparu en 1995
Auteur Yukihiro Matsumoto
Développeurs Yukihiro Matsumoto et des contributeurs
Dernière version 1.9.3-p0 (30 octobre 2011) [+/−]
Paradigmes Objet, impératif, concurrent, fonctionnel
Typage Fort, dynamique
Influencé par Lisp, Smalltalk, Perl, Python, Dylan et CLU
A influencé Groovy, Perl 6
Implémentations Ruby, YARV, Ruby MRI, JRuby, XRuby, Rubinius, Cardinal, Gardens Point Ruby.NET, IronRuby, MacRuby, android-ruby
Système d'exploitation Multiplate-forme
Licences Licence Ruby et GNU GPL
Site web ruby-lang.org

Ruby est un langage de programmation libre. Il est interprété, orienté objet et multi-paradigme.

Sommaire

Historique

Yukihiro « Matz » Matsumoto est le créateur de Ruby. Frustré par son expérience en développement Smalltalk et Lisp, il débute la conception d'un nouveau langage en 1993 sous Emacs, puis publie une première version en 1995 sous licence libre. Il enchaîne depuis les nouvelles versions, généralement pour Noël[1].

Les changements de version majeurs ont eu lieu[2] :

La dernière version stable est la 1.9.3, publiée le 30 octobre 2011[4].

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[5].

Philosophie

Ruby est fortement orienté objet et se rapproche ainsi du paradigme objet de Smalltalk[6] :

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[7].

Le langage est souvent présenté comme évitant au maximum les mauvaises surprises, selon le principe de moindre surprise[8]. 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[9]. 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.

Fonctionnalités

Les fonctionnalités principales sont :

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[11].

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[12].

Depuis le 1er janvier 2007, le développement de Ruby (1.9) est basée sur l'interpréteur YARV écrit par Koichi Sasada[13]. Ce nouvel interpréteur apporte un gain notable en performances[14].

Il existe plusieurs autres interpréteurs Ruby[14] :

JRuby[15] 
Il est écrit en Java et interprète directement du code source écrit en Ruby.
XRuby 
Il convertit du code Ruby en bytecode Java et est plus rapide sur certains tests de performance que la version 1.8.5 de l'interpréteur officiel[16].
Rubinius 
Une machine virtuelle simplifiée, inspirée de Smalltalk-80[17], implémentée en Ruby même.
Cardinal[18] 
Un interpréteur fonctionnant sous Parrot.
Gardens Point Ruby.NET 
Un interpréteur fonctionnant sur le framework .NET[19].
IronRuby 
Un compilateur fonctionnant sur la DLR du framework .NET[20].
Ruby for .Net 
Un compilateur fonctionnant sur la CLR du framework .NET qui a été abandonnée au profit de IronRuby.
MacRuby 
implémentation de Ruby 1.9 spécifique à Mac OS X, fonctionnant par dessus le runtime Objective-C[21], permettant un usage natif des composants Cocoa, contrairement aux bindings RubyCocoa.

Interprètes embarqués

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 :

Le logiciel de création de jeu vidéo RPG Maker intègre dans ses versions XP et VX une bibliothèque nommée RGSS, Ruby Game Scripting System permettant l'usage de scripts en Ruby.

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)[22]. 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[23]. Il permet de déployer rapidement des bibliothèques et des programmes Ruby.

Le site web Rubyforge[24] est également un hébergeur important de programmes et de bibliothèques écrites en Ruby.

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, @color = weight.to_i, color.to_s
   end
 
   def describe
      puts "I'm #{@@name} !"
      puts "I'm #{@size} meter tall, #{@weight} kilogramms weigh and I'm " << @color
   end
end
 
class Zebra < Animal # héritage
   @@name = 'a zebra' # rédéfinition de la variable de classe
 
   def initialize(size, weight, color = 'black and white') # surcharge
      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 !

Voir aussi

Sur les autres projets Wikimedia :

Articles connexes

Bibliographie

Liens externes

Notes et références

  1. Voir les dates de publication des versions 1.6 et 1.8
  2. Site FTP officiel de téléchargement
  3. (en) Annonce de la version 1.9.1
  4. [http://www.ruby-lang.org/fr/news/2011/10/31/sortie-de-ruby-1-9-3-p0/ Sortie de Ruby 1.9.3-p0
  5. Explication de la croissance sur le site officiel
  6. La principale différence étant que les structures de contrôle (if-then-else, while, etc.) ne sont pas des objets.
  7. (en)Ruby sur HOPL, the History of Programming Languages
  8. Définition du PoLS sur le wiki de Ruby Garden
  9. (en)e-mail Re: A different perspective on Ruby envoyé par matz le 26 mai 2005 sur ruby-talk
  10. (en)Ruby—A Diamond of a Programming Language, Part 2, article publié sur devx.com
  11. Texte de la licence sur le site officiel
  12. (en)Try Ruby! sur hobix.com
  13. (en)The Ruby VM: Episode I, interview de matz et de ko1 sur la machine virtuelle de Ruby
  14. a et b (en)The Great Ruby Shootout, comparaison des performances des principaux interpréteurs Ruby
  15. Site officiel de JRuby
  16. (en) XRuby is faster than Ruby 1.8.5 in most benchmarks
  17. (en) Rubinius Interview
  18. Site du projet Cardinal
  19. (en) Ruby.NET - Integrating the Gardens Point Compiler par Huw Collingbourne
  20. (en) http://www.ironruby.net/
  21. (en) Site officiel de MacRuby
  22. Ruby Application Archive
  23. Site officiel de Rubygems
  24. RubyForge
  25. Matz a développé Ruby sous Emacs. En 2008, il autorise l'intégration du mode ruby dans GNU Emacs. (en)
  26. Les récentes versions du logiciel intègrent un système de scripts adapté du langage Ruby (appelé RGSS puis RGSS2).



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Ruby de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Ruby — Класс языка: мультипарадигмальный: динамический, объектно ориентиров …   Википедия

  • Ruby — steht für: Ruby (Name), Personen mit diesem Vornamen oder Familiennamen Ruby (Automarke), eine französische Automarke Ruby (Film), einen Film von 1992 Ruby (Programmiersprache) Ruby Annotation, eine W3C Spezifikation (IT) Ruby Cabernet, eine… …   Deutsch Wikipedia

  • Ruby — Ru by, n.; pl. {Rubies}. [F. rubis (cf. Pr. robi), LL. rubinus, robinus, fr. L. rubeus red, reddish, akin to ruber. See {Rouge}, {red}.] 1. (Min.) A precious stone of a carmine red color, sometimes verging to violet, or intermediate between… …   The Collaborative International Dictionary of English

  • RUBY — llama le Ruby LLAMA est une compagnie espagnole basque, qui a été fondée en 1904 sous le nom Gabilondo et Urresti. Son siège se trouve à Guernica. En 1914, la firme crée un modéle de pistolet semi automatique RUBY avec une contenance de 9… …   Wikipédia en Français

  • Ruby — Ruby, AK U.S. city in Alaska Population (2000): 188 Housing Units (2000): 107 Land area (2000): 7.550772 sq. miles (19.556408 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 7.550772 sq. miles (19.556408 sq. km) …   StarDict's U.S. Gazetteer Places

  • Ruby — Ru by, a. Ruby colored; red; as, ruby lips. [1913 Webster] …   The Collaborative International Dictionary of English

  • Ruby, AK — U.S. city in Alaska Population (2000): 188 Housing Units (2000): 107 Land area (2000): 7.550772 sq. miles (19.556408 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 7.550772 sq. miles (19.556408 sq. km) FIPS… …   StarDict's U.S. Gazetteer Places

  • Ruby, SC — U.S. town in South Carolina Population (2000): 348 Housing Units (2000): 182 Land area (2000): 3.107268 sq. miles (8.047788 sq. km) Water area (2000): 0.021608 sq. miles (0.055964 sq. km) Total area (2000): 3.128876 sq. miles (8.103752 sq. km)… …   StarDict's U.S. Gazetteer Places

  • Ruby — Ruby, Jack (1911 67) the man who killed Lee Harvey Oswald two days after Oswald was charged with killing President John F. Kennedy. Some people believed that these actions were part of a ↑conspiracy (=secret plan) to kill the President, and that… …   Dictionary of contemporary English

  • Ruby — [ro͞o′bē] n. [see RUBY] a feminine name …   English World dictionary

  • Ruby — Ru by, v. t. [imp. & p. p. {Rubied}; p. pr. & vb. n. {Rubying}.] To make red; to redden. [R.] Pope. [1913 Webster] …   The Collaborative International Dictionary of English

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”