grifdail

extrait wikipedia Ruby

Oct 24th, 2011
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.98 KB | None | 0 0
  1. I"�:{{Voir homonymes}}
  2. {{Infobox Langage de programmation
  3. | nom = Ruby
  4. | logo = Image:Ruby-logo-notext.png
  5. | paradigmes = Objet, impératif, concurrent, fonctionnel
  6. | année = 1995
  7. | auteur = Yukihiro Matsumoto
  8. | développeurs = Yukihiro Matsumoto et des contributeurs
  9. | dernière version stable= 1.8.7[http://www.ruby-lang.org/fr/downloads/ Télécharger Ruby sur le site officiel]
  10. | date de dernière version stable = {{Date|31|mai|2008|en informatique}}
  11. | typage = Fort, dynamique
  12. | implémentations = Ruby, YARV, Ruby MRI, JRuby, XRuby, Rubinius, Cardinal, Gardens Point Ruby.NET, IronRuby, MacRuby, [http://code.google.com/p/android-ruby/ android-ruby]
  13. | dialectes =
  14. | influencé par = Lisp, Smalltalk, Perl, Python, Dylan et CLU
  15. | a influencé = Groovy, Perl 6
  16. | système d'exploitation = Multiplate-forme
  17. | licences = Licence Ruby et GNU GPL
  18. | site web = [http://www.ruby-lang.org/ ruby-lang.org]
  19. }}
  20. Ruby est un langage de programmation libre. Il est interprété, orienté objet et multi-paradigme.
  21.  
  22. == Historique ==
  23. 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ëlVoir les dates de publication des versions [ftp://ftp.ruby-lang.org/pub/ruby/1.6/ 1.6] et [ftp://ftp.ruby-lang.org/pub/ruby/1.8/ 1.8].
  24.  
  25. Les changements de version majeurs ont eu lieu[ftp://ftp.ruby-lang.org/pub/ruby/ Site FTP officiel de téléchargement] :
  26.  
  27. * le {{Date|25|décembre|1998|en informatique}} pour la version 1.2.0,
  28. * le {{Date|13|août|1999|en informatique}} pour la version 1.4.0,
  29. * le {{Date|19|septembre|2000|en informatique}} pour la version 1.6.0,
  30. * le {{Date|4|août|2003|en informatique}} pour la version 1.8.0,
  31. * et le {{Date|30|janvier|2009|en informatique}} pour la version 1.9.1 (première version stable de la branche 1.9){{en}} [http://www.ruby-lang.org/en/news/2009/01/30/ruby-1-9-1-released/ Annonce de la version 1.9.1].
  32.  
  33. La dernière version stable est la 1.9.2, publiée le 19 août 2010{{en}} [http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367983 Annonce de la version 1.9.2].
  34.  
  35. Depuis l'arrivée d'une documentation anglophone, et du {{lang|en|framework web Ruby on Rails}}, Ruby connaît un certain engouement, qui ne cesse de croître dans le monde de la programmation[http://www.ruby-lang.org/fr/about/ Explication de la croissance] sur le site officiel.
  36.  
  37. == Philosophie ==
  38. Ruby 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. :
  39. * toute donnée est un objet, y compris les types ;
  40. * toute fonction est une méthode ;
  41. * toute variable est une référence à un objet.
  42.  
  43. Malgré cet aspect exclusivement objet, la programmation procédurale est possible et fréquente.
  44. Ruby utilise une syntaxe simple, inspirée par Eiffel et Ada{{en}}[http://hopl.murdoch.edu.au/showlanguage.prx?exp=2458&language=Ruby Ruby sur HOPL], {{lang|en|the History of Programming Languages}}.
  45.  
  46. Le langage est souvent présenté comme évitant au maximum les mauvaises surprises, selon le principe de moindre surprise[http://wiki.rubygarden.org/Ruby/page/show/PoLS Définition du PoLS sur le wiki de Ruby Garden].
  47. 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{{en}}[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/143691 e-mail {{lang|en|Re: A different perspective on Ruby}} envoyé par matz le 26 mai 2005 sur ruby-talk].
  48. 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.
  49.  
  50. == Fonctionnalités ==
  51. Les fonctionnalités principales sont :
  52. * l'orientation objet omniprésente ;
  53. * le ramasse-miettes chargé de libérer automatiquement la mémoire ;
  54. * le système de gestion d'exceptions pour gérer les erreurs exceptionnelles ;
  55. * la possibilité de modifier les classes pendant l'exécution du programme, qu'elles soient définies par l'utilisateur ou non ;
  56. * l'intégration dans sa syntaxe des expressions rationnelles ;
  57. * les blocs qui servent d'itérateur et permettent de passer des morceaux de programme en paramètre ;
  58. * l'héritage simple ;
  59. * l'inclusion de modules dans les classes, une autre manière de concevoir l'héritage multiple (mixin) ;
  60. * l'écriture d'extensions en C relativement simple ;
  61. * les nombres entiers de taille illimitée avec conversion automatique lorsque c'est nécessaire{{en}}[http://www.devx.com/enterprise/Article/31197 {{lang|en|Ruby—A Diamond of a Programming Language, Part 2}}], article publié sur [http://www.devx.com/ devx.com] ;
  62. * la portée des variables définie par leur forme : {{code|var}} est une variable locale, {{code|@var}} est une variable d'instance, {{code|@@var}} est une variable de classe, {{code|$var}} est une variable globale, {{code|Var}} est une constante, etc. ;
  63. * les threads}} indépendants du système d'exploitation ;
  64. * la réflexion, c'est-à-dire la possibilité pour les programmes et les objets de s'inspecter eux-mêmes et de se modifier.
  65.  
  66. == Implémentations ==
  67. L'interpréteur officiel fonctionne sur de nombreux systèmes d'exploitation : UNIX, Linux, Microsoft Windows, DOS, Mac OS X, OS/2, Amiga, etc.
  68. Il est publié sous la double licence libre GNU GPL et la licence Ruby[http://www.ruby-lang.org/en/LICENSE.txt Texte de la licence sur le site officiel].
  69.  
  70. 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{{en}}[http://tryruby.hobix.com/ {{lang|en|Try Ruby!}}] sur hobix.com.
  71.  
  72. Depuis le {{date|1|janvier|2007|en informatique}}, le développement de Ruby (1.9) est basée sur l'interpréteur YARV écrit par Koichi Sasada{{en}}[http://blog.grayproductions.net/articles/the_ruby_vm_episode_i {{lang|en|The Ruby VM: Episode {{I}}}}], interview de matz et de ko1 sur la machine virtuelle de Ruby.
  73. Ce nouvel interpréteur apporte un gain notable en performances{{en}}[http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout {{lang|en|The Great Ruby Shootout}}], comparaison des performances des principaux interpréteurs Ruby.
  74.  
  75. Il existe plusieurs autres interpréteurs Ruby :
  76. ; JRuby[http://jruby.sourceforge.net/ Site officiel de JRuby] : Il est écrit en Java et interprète directement du code source écrit en Ruby.
  77. ; 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{{en}} [http://xruby.blogspot.com/2007/03/xruby-runs-most-benchmark-faster-than.html {{lang|en|XRuby is faster than Ruby 1.8.5 in most benchmarks}}].
  78. ; Rubinius : Une machine virtuelle simplifiée, inspirée de Smalltalk-80{{en}} [http://on-ruby.blogspot.com/2006/12/rubinius-interview.html Rubinius Interview], implémentée en Ruby même.
  79. ; Cardinal[http://cardinal2.rubyforge.org/ Site du projet Cardinal] : Un interpréteur fonctionnant sous Parrot.
  80. ; Gardens Point Ruby.NET : Un interpréteur fonctionnant sur le {{lang|en|framework .NET}}{{en}} [http://www.sapphiresteel.com/Ruby-NET-Integrating-the-Gardens Ruby.NET - Integrating the Gardens Point Compiler]
  81. par Huw Collingbourne.
  82. ; IronRuby : Un compilateur fonctionnant sur la DLR du {{lang|en|framework .NET}}{{en}} [http://www.ironruby.net/].
  83. ; Ruby for .Net : Un compilateur fonctionnant sur la CLR du {{lang|en|framework .NET}} qui a été abandonnée au profit de IronRuby.
  84. ; MacRuby : implémentation de Ruby 1.9 spécifique à Mac OS X, fonctionnant par dessus le runtime Objective-C[http://www.macruby.org/ {{en}} Site officiel de MacRuby], permettant un usage natif des composants Cocoa, contrairement aux bindings RubyCocoa.
  85.  
  86. == Interprètes embarqués ==
  87. 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 :
  88. * Apache avec mod_ruby ou Phusion Passenger pour générer des pages web en Ruby
  89. * et PostgreSQL avec PL/ruby pour faire exécuter des commandes Ruby au serveur de base de données.
  90.  
  91. Le logiciel de création de jeu vidéo {{lang|en|RPG Maker}} intègre dans ses versions XP et VX une bibliothèque nommée RGSS, {{lang|en|Ruby Game Scripting System}} permettant l'usage de scripts en Ruby.
  92.  
  93. == Bibliothèques ==
  94. Il existe de nombreuses bibliothèques de fonctionnalités adjoignables au langage.
  95. Le dépôt historique de ces bibliothèques est le {{lang|en|Ruby Application Archive}} (RAA)[http://raa.ruby-lang.org/ Ruby Application Archive].
  96. 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.
  97.  
  98. 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[http://www.rubygems.org/ Site officiel de Rubygems].
  99. Il permet de déployer rapidement des bibliothèques et des programmes Ruby.
  100.  
  101. Le site web Rubyforge[http://rubyforge.org/ RubyForge] est également un hébergeur important de programmes et de bibliothèques écrites en Ruby.
  102.  
  103. == Exemples ==
  104. Le classique {{lang|en|Hello world}} :
  105.  
  106.  
  107. puts "Hello World!"
  108.  
  109.  
  110. Utilisation des objets :
  111.  
  112. # Tout est objet, même les nombres:
  113. -199.abs # 199
  114. "ruby is cool".length # 12
  115. "Rick".index "c" # 2
  116. "Nice Day Isn't It?".downcase.split(//).sort.uniq.join # " '?acdeinsty"
  117.  
  118.  
  119. Utilisation de Mixin et de l'Héritage
  120.  
  121. module AnimalSkills
  122. def eat
  123. puts "I'm eating !"
  124. end
  125.  
  126. def move
  127. puts "I'm moving !" end
  128.  
  129. def express; puts "I'm expressing !" end
  130. end
  131.  
  132. class Animal
  133. include AnimalSkills # mixin
  134.  
  135. @@name = 'an animal' # variable de classe
  136.  
  137. def initialize size, weight, color # initialisation des variables d'instance
  138. @size = size.to_i
  139. @weight, @color = weight.to_i, color.to_s
  140. end
  141.  
  142. def describe
  143. puts "I'm #{@@name} !"
  144. puts "I'm #{@size} meter tall, #{@weight} kilogramms weigh and I'm " I'm a zebra ! / I'm 1 meter tall, 50 kilogramms weigh and I'm black and white
  145. z.eat # => I'm eating !
  146.  
  147.  
  148. == Voir aussi ==
  149. {{Autres projets
  150. |wikibooks=Ruby
  151. |wikibooks titre=Ruby
  152. |wikiversity=Ruby
  153. |commons=category:Ruby programming language
  154. |commons titre=Ruby
  155. }}
  156. === Articles connexes ===
  157. * {{lang|en|Ruby on Rails}}
  158. * Ada
  159. * Smalltalk
  160. * Ruby MRI
  161. * GNU EmacsMatz a développé Ruby sous Emacs. [http://lists.gnu.org/archive/html/emacs-devel/2008-10/msg00882.html En 2008, il autorise l'intégration du mode ruby dans GNU Emacs]. {{en}}
  162. * RPG MakerLes récentes versions du logiciel intègrent un système de scripts adapté du langage Ruby (appelé [http://fr.wikipedia.org/wiki/RPG_Maker#RPG_Maker_XP RGSS] puis [http://fr.wikipedia.org/wiki/RPG_Maker#RPG_Maker_VX RGSS2]).
  163.  
  164. === Bibliographie ===
  165. * {{ Ouvrage |
  166. titre = {{lang|en|Programming Ruby}} |
  167. nom1= Dave Thomas |
  168. nom2=Andrew Hunt |
  169. lien auteur2=Andrew Hunt |
  170. langue = en |
  171. lien auteur1=Dave Thomas (programmeur) |
  172. année = 2000 |
  173. isbn = 0-201-71089-7 |
  174. lire en ligne = http://ruby-doc.org/docs/ProgrammingRuby/
  175. }}
  176. * {{ Ouvrage |
  177. titre = {{lang|en|Ruby in a Nutshell}} |
  178. nom1 = Yukihiro Matsumoto |
  179. année = 2002 |
  180. isbn = 2-84177-210-1 |
  181. }}
  182. * {{ Ouvrage |
  183. titre = {{lang|en|Programming Ruby: The Pragmatic Programmer's Guide }}|
  184. auteur = Dave Thomas, Chad Fowler et Andy Hunt |
  185. langue = en |
  186. année = 2004 |
  187. isbn = 0-9745140-5-5 |
  188. }}
  189. * {{ Ouvrage |
  190. titre = Débuter en Programmation avec Ruby |
  191. nom1 = Chris Pine |
  192. année = 2006 |
  193. isbn = 2-7440-2078-8 |
  194. }}
  195. * {{ Ouvrage |
  196. titre = Ruby par l'exemple |
  197. nom1 = Lucas Carlson |
  198. nom2 = Leonard Richardson |
  199. année = 2006 |
  200. isbn = 978-2-84177-347-3 |
  201. }}
  202. * {{ Ouvrage |
  203. titre = {{lang|en|The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition)}} |
  204. auteurs = Hal Fulton |
  205. langue = en |
  206. année = 2006 |
  207. isbn = 0-672-32884-4 |
  208. }}
  209. * {{ Ouvrage |
  210. titre = {{lang|en|Enterprise Integration with Ruby}} |
  211. auteurs = Maik Schmidt |
  212. langue = en |
  213. année = 2006 |
  214. isbn = 0-9766940-6-9 |
  215. }}
  216. * {{ Ouvrage |
  217. titre = {{lang|en|Everyday Scripting with Ruby: For Teams, Testers, and You}} |
  218. auteurs = Brian Marick |
  219. langue = en |
  220. année = 2007 |
  221. isbn = 978-0-9776166-1-9 |
  222. }}
  223. * {{ Ouvrage |
  224. titre = {{lang|en|Beginning Ruby: From Novice to Professional}} |
  225. nom1 = Peter Cooper |
  226. langue = en |
  227. année = 2007 |
  228. isbn = 978-1-59059-766-8 |
  229. }}
  230.  
  231. === Liens externes ===
  232. * [http://www.ruby-lang.org/fr/ Site officiel]
  233. * [http://www.rubyfrance.org Association RubyFrance]
  234. * [http://www.projectomega.org/tutoriels/le-langage-ruby-documentation-de-reference/ruby-documentation-de-reference/ Le guide utilisateur de la version 1.6 par Matz]
  235.  
  236. == Notes et références ==
  237. {{Références | colonnes = 2}}
  238.  
  239. {{Palette Langages de programmation}}
  240. {{Portail|informatique|logiciels libres|programmation informatique}}
  241.  
  242. Catégorie:Langage de programmation
  243. Catégorie:Langage orienté objet
  244. Catégorie:Langage de script
  245. *
  246. Catégorie:Logiciel libre sous licence GPL
  247. Catégorie:Logiciel pour Windows
  248. Catégorie:Logiciel pour Unix
  249. Catégorie:Logiciel pour DOS
  250. Catégorie:Logiciel pour OS/2
  251.  
  252.  
  253. {{Lien BA|ru}}
  254.  
  255. ar:روبي (لغة برمجة)
  256. az:Ruby
  257. bat-smg:Ruby
  258. bg:Ruby
  259. bn:রুবি (প্রোগ্রামিং ভাষা)
  260. ca:Ruby
  261. ckb:روبی
  262. cs:Ruby (programovací jazyk)
  263. da:Ruby (programmeringssprog)
  264. de:Ruby (Programmiersprache)
  265. el:Ruby
  266. en:Ruby (programming language)
  267. eo:Ruby (programlingvo)
  268. es:Ruby
  269. et:Ruby (programmeerimiskeel)
  270. eu:Ruby
  271. fa:روبی (زبان برنامه‌نویسی)
  272. fi:Ruby
  273. gl:Ruby
  274. he:Ruby
  275. hr:Ruby (programski jezik)
  276. hu:Ruby
  277. ia:Ruby (linguage de programmation)
  278. id:Ruby (bahasa pemrograman)
  279. it:Ruby
  280. ja:Ruby
  281. ka:რუბი
  282. ko:루비 (프로그래밍 언어)
  283. lt:Ruby
  284. ml:റൂബി (പ്രോഗ്രാമിങ് ഭാഷ)
  285. ms:Ruby
  286. my:Ruby Programming Language
  287. nl:Ruby (programmeertaal)
  288. nn:Ruby
  289. no:Ruby
  290. pl:Ruby (język programowania)
  291. pt:Ruby (linguagem de programação)
  292. ro:Ruby
  293. ru:Ruby
  294. sk:Ruby (programovací jazyk)
  295. sr:Руби (програмски језик)
  296. sv:Ruby
  297. ta:ரூபி
  298. tg:Руби
  299. th:ภาษารูบี
  300. tr:Ruby
  301. uk:Ruby
  302. vi:Ruby (ngôn ngữ lập trình)
  303. zh:Ruby
  304.  
  305.  
Advertisement
Add Comment
Please, Sign In to add comment