Ruby est un langage de programmation libre. Il est interprété, orienté objet et multi-paradigme. Le langage a été standardisé au Japon en 2011 (JIS X 3017:2011)JIS X 3017:2011 - Programming languages - Ruby., et en 2012 par l'Organisation internationale de normalisation (ISO 30170:2012)ISO/IEC 30170:2012 Information technology - Programming languages - Ruby..
Historique Yukihiro « Matz » Matsumoto est le créateur de Ruby. Frustré par son expérience en développement Smalltalk et Lisp, il commence 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.
Depuis l'arrivée d'une documentation anglophone, et du en 2004, Ruby a connu un certain engouement qui n'a cessé de croître jusqu'en 2008 dans le monde de la programmation, puis une érosion lente si on en juge par son index TIOBE.
Philosophie est fortement orienté objet et se rapproche ainsi du paradigme objet de SmalltalkLa principale différence étant que les structures de contrôle (if-then-else, while, etc.) ne sont pas des objets. : toute donnée est un objet, y compris les types primitifs ; 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. utilise une syntaxe simple, inspirée par Eiffel et Ada Ruby sur HOPL, ..
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 ; la portée des variables définie par leur forme : est une variable locale, est une variable d'instance, est une variable de classe, est une variable globale, est une constante. les 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.
Implémentations L'interpréteur officiel, Ruby MRI, fonctionne sur de nombreux systèmes d'exploitation : UNIX, Linux, Microsoft Windows, MS-DOS, OS X, OS/2, ReactOS, AmigaOS, etc. Il est publié sous la double licence libre GNU GPL et la licence RubyTexte de la licence sur le site officiel..
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 sur hobix.com..
Depuis le , le développement de Ruby (1.9) est basé sur l'interpréteur YARV écrit par Koichi Sasada , interview de matz et de ko1 sur la machine virtuelle de Ruby.. Ce nouvel interpréteur apporte un gain notable en performances , comparaison des performances des principaux interpréteurs Ruby..
Outre YARV, il existe plusieurs autres interpréteurs Ruby : JRubySite officiel de JRuby : 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 .. Rubinius : Une machine virtuelle simplifiée, inspirée de Smalltalk-80 Rubinius Interview., implémentée en Ruby même. CardinalSite du projet Cardinal. : un interpréteur fonctionnant sous Parrot. Gardens Point Ruby.NET : Un interpréteur fonctionnant sur le Ruby.NET - Integrating the Gardens Point Compiler par Huw Collingbourne.. IronRuby : un compilateur fonctionnant sur le DLR du http://www.ironruby.net/.. Ruby for .Net : un compilateur fonctionnant sur le CLR du qui a été abandonnée au profit de IronRuby. MacRuby : implémentation de Ruby 1.9 spécifique à OS X, fonctionnant par-dessus le runtime Objective-C Site officiel de MacRuby., permettant un usage natif des composants Cocoa, contrairement aux bindings RubyCocoa. Truffleruby : supporté et développé par Oracle, il s'agit d'une implémentation du langage Ruby sur la GraalVM, permettant des performances supérieures à MRI.
La version 2.0 permet de créer des applications graphiques pour macOS et iOS.
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 : Apache avec mod_ruby ou Phusion Passenger 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 intègre dans ses versions XP et VX une bibliothèque nommée RGSS, 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 (RAA)Ruby Application Archive.. 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 RubySite officiel de Rubygems.. Il permet de déployer rapidement des bibliothèques et des programmes Ruby.
La base de données de gems Rubygems est devenue avec le temps la référence en stockage de bibliothèques pour Ruby (plus de 49 milliards de téléchargements) au travers de l'outil Bundler (également développé en Ruby), les dépendances d'un projet sont téléchargées par défaut depuis Rubygems.
Exemples Le classique :
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, I weigh #{@weight} kilograms and I'm " + @color end end
class Zebra < Animal # héritage @@name = 'a zebra' # rédéfinition de la variable de classe: maintenant tous les animaux sont des zèbres !
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, I weigh 50 kilograms and I'm black and white z.eat # => I'm eating !
Notes et références Notes
Références
Annexes
Bibliographie
Articles connexes
Ruby MRI
YARV
Liens externes
Human Coders News - Ruby Ruby-GNOME2
Catégorie:Langage de programmation Catégorie:Langage orienté objet Catégorie:Langage de script * Catégorie:Logiciel libre sous licence GPL Catégorie:Logiciel pour Windows Catégorie:Logiciel pour Unix Catégorie:Logiciel pour DOS Catégorie:Logiciel pour OS/2 Catégorie:Produit lancé en 1995 Catégorie:Logiciel libre sous licence Ruby Catégorie:Logiciel libre sous licence BSD