Aller au contenu

« Ruby » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Kilianours (discuter | contributions)
mAucun résumé des modifications
[0.9] 📗 Amélioration bibliographique 9x : +sous-titre, +lieu, éditeur, ©BnF...
Ligne 189 : Ligne 189 :


=== Bibliographie ===
=== Bibliographie ===
* {{ Ouvrage |
* {{Ouvrage |
titre = {{lang|en|Programming Ruby}} |
langue = en |
nom1= Dave Thomas |
nom1 = Dave Thomas |
lien auteur1 = Dave Thomas (programmeur) |
nom2=Andrew Hunt |
lien auteur2=Andrew Hunt |
nom2 = Andrew Hunt |
lien auteur2 = Andrew Hunt |
langue = en |
titre = Programming Ruby |
lien auteur1=Dave Thomas (programmeur) |
sous-titre = The Pragmatic Programmer's Guide |
année = 2000 |
isbn = 0-201-71089-7 |
éditeur = |
année = 2000 |
lire en ligne = http://ruby-doc.org/docs/ProgrammingRuby/
pages totales = 564 |
}}
isbn = 0-201-71089-7 |
* {{ Ouvrage |
lire en ligne = http://ruby-doc.org/docs/ProgrammingRuby/
titre = {{lang|en|Ruby in a Nutshell}} |
}}
nom1 = Yukihiro Matsumoto |
* {{Ouvrage |
année = 2002 |
isbn = 2-84177-210-1 |
langue = fr |
langue originale = en |
}}
nom1 = Yukihiro Matsumoto |
* {{ Ouvrage |
titre = {{lang|en|Programming Ruby: The Pragmatic Programmer's Guide }}|
titre = {{lang|en|Ruby in a Nutshell}} |
lieu = Cambridge/Cologne/Paris etc. |
auteur = [[Dave Thomas (programmeur)|Dave Thomas]], [[Chad Fowler]] et [[Andy Hunt]] |
langue = en |
éditeur = O'Reilly |
année = 2004 |
année = 2002 |
isbn = 0-9745140-5-5 |
pages totales = 242 |
isbn = 2-84177-210-1
}}
}}
* {{ Ouvrage |
* {{Ouvrage |
titre = Débuter en Programmation avec Ruby |
nom1 = Chris Pine |
langue = en |
auteur1 = [[Dave Thomas (programmeur)|Dave Thomas]], [[Chad Fowler]] et [[Andy Hunt]] |
année = 2006 |
isbn = 2-7440-2078-8 |
titre = Programming Ruby |
sous-titre = The Pragmatic Programmer's Guide |
}}
éditeur = |
* {{ Ouvrage |
titre = Ruby par l'exemple |
année = 2004 |
nom1 = Lucas Carlson |
isbn = 0-9745140-5-5
}}
nom2 = Leonard Richardson |
* {{Ouvrage |
année = 2006 |
isbn = 978-2-84177-347-3 |
langue = fr |
langue originale = en |
}}
nom1 = Chris Pine |
* {{ Ouvrage |
titre = Débuter en Programmation avec Ruby |
titre = {{lang|en|The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition)}} |
auteurs = [[Hal Fulton]] |
lieu = Paris |
langue = en |
éditeur = CampusPress |
année = 2006 |
année = 2006 |
isbn = 0-672-32884-4 |
pages totales = 165 |
isbn = 2-7440-2078-8
}}
}}
* {{ Ouvrage |
* {{Ouvrage |
titre = {{lang|en|Enterprise Integration with Ruby}} |
auteurs = [[Maik Schmidt]] |
nom1 = Lucas Carlson |
langue = en |
nom2 = Leonard Richardson |
année = 2006 |
titre = Ruby par l'exemple |
isbn = 0-9766940-6-9 |
éditeur = |
année = 2006 |
}}
pages totales = 867 |
* {{ Ouvrage |
isbn = 978-2-84177-347-3
titre = {{lang|en|Everyday Scripting with Ruby: For Teams, Testers, and You}} |
}}
auteurs = [[Brian Marick]] |
* {{Ouvrage |
langue = en |
année = 2007 |
langue = en |
auteurs = [[Hal Fulton]] |
isbn = 978-0-9776166-1-9 |
titre = The Ruby Way, Second Edition : Solutions and Techniques in Ruby Programming (2nd Edition) |
}}
éditeur = |
* {{ Ouvrage |
année = 2006 |
titre = {{lang|en|Beginning Ruby: From Novice to Professional}} |
isbn = 0-672-32884-4
nom1 = [[Peter Cooper (programmeur)|Peter Cooper]] |
}}
langue = en |
* {{Ouvrage |
année = 2007 |
isbn = 978-1-59059-766-8 |
langue = en |
auteurs = [[Maik Schmidt]] |
}}
titre = Enterprise Integration with Ruby |
sous-titre = A Pragmatic Guide |
éditeur = |
année = 2006 |
pages totales = 346 |
isbn = 0-9766940-6-9
}}
* {{Ouvrage |
langue = en |
auteurs = [[Brian Marick]] |
titre = Everyday Scripting with Ruby |
sous-titre = For Teams, Testers, and You |
éditeur = |
année = 2007 |
pages totales = 301 |
isbn = 978-0-9776166-1-9
}}
* {{Ouvrage |
langue = en |
nom1 = [[Peter Cooper (programmeur)|Peter Cooper]] |
titre = Beginning Ruby |
sous-titre = From Novice to Professional |
éditeur = |
année = 2007 |
isbn = 978-1-59059-766-8
}}


=== Articles connexes ===
=== Articles connexes ===

Version du 4 décembre 2020 à 04:16

Ruby
Logo.

Date de première version Voir et modifier les données sur Wikidata
Paradigmes Interprété, objet, impératif, concurrent, fonctionnel
Auteur Yukihiro Matsumoto
Développeurs Yukihiro Matsumoto et des contributeurs
Dernière version 3.3.3 ()[1]Voir et modifier les données sur Wikidata
Typage Fort, dynamique
Influencé par Eiffel, Lisp, Smalltalk, Perl, Python, Dylan, Ada et CLU
A influencé langage D[2], Groovy, Perl 6
Implémentations Ruby, YARV, Ruby MRI, JRuby, XRuby, Rubinius, Cardinal, Gardens Point Ruby.NET, IronRuby, MacRuby, mruby android-ruby
Écrit en CVoir et modifier les données sur Wikidata
Système d'exploitation Multiplate-forme
Licence Licence Ruby, licence publique générale GNU version 2[3] et BSD 2-clauses (en)[4]Voir et modifier les données sur Wikidata
Site web www.ruby-lang.orgVoir et modifier les données sur Wikidata
Extension de fichier rb et rbwVoir et modifier les données sur Wikidata

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)[5], et en 2012 par l'Organisation internationale de normalisation (ISO 30170:2012)[6].

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.

Des changements de version majeurs ont eu lieu[7] :

  • le pour la version 1.2.0 ;
  • le pour la version 1.4.0 ;
  • le pour la version 1.6.0 ;
  • le pour la version 1.8.0 ;
  • le pour la version 1.9.1 (première version stable de la branche 1.9)[8] ;
  • le pour la version 1.9.3[9] ;
  • le pour la version 2.0.0[10]
  • le pour la version 2.1.0[11].
  • le pour la version 2.2.3.
  • le pour la version 2.3.0.
  • le pour la version 2.4.0.
  • le pour la version 2.5.0.
  • le pour la version 2.6.0
  • le pour la version 2.7.0

Depuis l'arrivée d'une documentation anglophone, et du framework web Ruby on Rails en 2004, Ruby a connu un certain engouement qui n'a cessé de croître jusqu'en 2007 dans le monde de la programmation[12].

Philosophie

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

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

Le langage est souvent présenté comme évitant au maximum les mauvaises surprises, selon le principe de moindre surprise[14]. 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[15]. Ainsi, plus on connaît le langage, plus on connaît la logique de son auteur, et moins on s'étonne des fonctionnalités que l'on découvre.

Fonctionnalités

Les fonctionnalités principales sont :

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

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

Depuis le , le développement de Ruby (1.9) est basé sur l'interpréteur YARV écrit par Koichi Sasada[19]. Ce nouvel interpréteur apporte un gain notable en performances[20].

Outre YARV, il existe plusieurs autres interpréteurs Ruby[20] :

JRuby[21]
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[22].
Rubinius
Une machine virtuelle simplifiée, inspirée de Smalltalk-80[23], implémentée en Ruby même.
Cardinal[24]
un interpréteur fonctionnant sous Parrot.
Gardens Point Ruby.NET
Un interpréteur fonctionnant sur le framework .NET[25].
IronRuby
un compilateur fonctionnant sur le DLR du framework .NET[26].
Ruby for .Net
un compilateur fonctionnant sur le CLR du framework .NET 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[27], 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[28]. Des défauts d'implémentations empêche néanmoins l'installation de certaines gems populaires.


Il existe aussi une solution non-libre, commercialisée par HipByte basée sur le travail du projet MacRuby, appelé RubyMotion créée par Laurent Sansonetti

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 :

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)[29]. 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[30]. 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 miliards de téléchargements[31])- 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.

Le site web Rubyforge[32] était également un hébergeur important de programmes et de bibliothèques écrits en Ruby, cependant fermé par son développeur en 2014[33].

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, 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

  1. La principale différence étant que les structures de contrôle (if-then-else, while, etc.) ne sont pas des objets.

Références

  1. a et b « Ruby 3.3.3 Released », (consulté le )
  2. Intro – D Programming Language 1.0 – Digital Mars.
  3. « https://www.ruby-lang.org/ja/news/2013/06/30/we-retire-1-8-7/ »
  4. « https://www.ruby-lang.org/ja/news/2011/10/31/ruby-1-9-3-p0-is-released/ »
  5. JIS X 3017:2011 - Programming languages - Ruby.
  6. ISO/IEC 30170:2012 Information technology - Programming languages - Ruby.
  7. Site FTP officiel de téléchargement.
  8. (en) Annonce de la version 1.9.1.
  9. Sortie de Ruby 1.9.3-p0.
  10. (en) Ruby 2.0.0-p0 is released.
  11. (en) Ruby 2.1.0 is released.
  12. Explication de la croissance sur le site officiel.
  13. (en) Ruby sur HOPL, the History of Programming Languages.
  14. Définition du PoLS sur le wiki de Ruby Garden.
  15. (en) e-mail Re: A different perspective on Ruby envoyé par matz le 26 mai 2005 sur ruby-talk.
  16. (en) Ruby—A Diamond of a Programming Language, Part 2, article publié sur devx.com.
  17. Texte de la licence sur le site officiel.
  18. (en) Try Ruby! sur hobix.com.
  19. (en) The Ruby VM: Episode I, interview de matz et de ko1 sur la machine virtuelle de Ruby.
  20. a et b (en) The Great Ruby Shootout, comparaison des performances des principaux interpréteurs Ruby.
  21. Site officiel de JRuby
  22. (en) XRuby is faster than Ruby 1.8.5 in most benchmarks.
  23. (en) Rubinius Interview.
  24. Site du projet Cardinal.
  25. (en) Ruby.NET - Integrating the Gardens Point Compiler par Huw Collingbourne.
  26. (en) http://www.ironruby.net/.
  27. (en) Site officiel de MacRuby.
  28. (en) PragTob, « Benchmarking a Go AI in Ruby: CRuby vs. Rubinius vs. JRuby vs. Truffle – a year later », sur Journeys of a not so young anymore Software Engineer, (consulté le )
  29. Ruby Application Archive.
  30. Site officiel de Rubygems.
  31. « RubyGems.org | votre communauté d'hébergement des gems », sur rubygems.org (consulté le )
  32. RubyForge.
  33. (en) Mx Evan Phoenix, « Announced today that we're sunsetting RubyForge. Last day will be May 15th. Begin your data migration now! », sur @evanphx, (consulté le )

Annexes

Sur les autres projets Wikimedia :

Bibliographie

Articles connexes

Liens externes