Ruby

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.6 ()[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 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 framework web Ruby on Rails 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

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

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

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

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

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

  • JRuby[12] : 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[13].
  • Rubinius : Une machine virtuelle simplifiée, inspirée de Smalltalk-80[14], implémentée en Ruby même.
  • Cardinal[15] : un interpréteur fonctionnant sous Parrot.
  • Gardens Point Ruby.NET : Un interpréteur fonctionnant sur le framework .NET[16].
  • IronRuby : un compilateur fonctionnant sur le DLR du framework .NET[17].
  • 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[18], 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[19].

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)[20]. 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[21]. 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[22]) 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 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

Annexes

Sur les autres projets Wikimedia :

Bibliographie

Articles connexes

Liens externes

Read other articles:

2008 United States House of Representatives elections in Michigan ← 2006 November 4, 2008 (2008-11-04) 2010 → All 15 Michigan seats to the United States House of Representatives   Majority party Minority party   Party Democratic Republican Last election 6 9 Seats won 8 7 Seat change 2 2 Popular vote 2,516,640 2,114,293 Percentage 52.31% 43.95% Swing 0.44% 0.61% Congressional district results County results Democratic  ...

 

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يوليو 2019) جون دروري كلارك معلومات شخصية الميلاد 15 أغسطس 1907  فيربانكس  الوفاة 6 يوليو 1988 (80 سنة)   نيوجيرسي  مواطنة الولايات المتحدة  الحياة العملية الاسم ال...

 

 

March 1933 German federal election ألمانيا   → November 1932 German federal election   الحزب الشيوعي   الحزب النازي BVP أجريت الانتخابات الفيدرالية في ألمانيا في 5 مارس 1933، بعد الاستيلاء النازي على السلطة في 30 يناير وبعد ستة أيام فقط من حريق الرايخستاغ. أطلقj كتيبة العاصفة حملة واسعة النطاق من العنف

Мацей Леп'ятопол. Maciej Lepiato Загальна інформаціяНаціональність полякГромадянство  Республіка ПольщаНародження 18 серпня 1988(1988-08-18) (35 років)Познань, Польська Народна РеспублікаЗріст 1.85 мВага 75 кгСпортКраїна  ПольщаВид спорту Легка атлетикаДисципліна стрибки у висот

 

 

Flocourt Flocourt (Frankreich) Staat Frankreich Region Grand Est Département (Nr.) Moselle (57) Arrondissement Metz Kanton Faulquemont Gemeindeverband Sud Messin Koordinaten 48° 58′ N, 6° 25′ O48.9730555555566.4111111111111Koordinaten: 48° 58′ N, 6° 25′ O Höhe 226–273 m Fläche 4,53 km² Einwohner 117 (1. Januar 2020) Bevölkerungsdichte 26 Einw./km² Postleitzahl 57580 INSEE-Code 57220 Flocourt Vorlage:Infobox Gemeinde in...

 

 

Baby boom that occurred after World War II United States birth rate (births per 1000 population).[1] The US Census Bureau defines baby boomers as those born between mid-1946 and mid-1964 (shown in red).[2]The middle of the 20th century was marked by a significant and persistent increase in fertility rates in many countries of the world, especially in the Western world. The term baby boom is often used to refer to this particular boom, generally considered to have started immed...

Баффі — переможниця вампірівангл. Buffy the Vampire Slayer Тип телесеріалТелеканал(и) WB (1—5-й сезони), UPN (6—7-й сезони) (США) 1+1ТЕТНовий каналК1Дистриб'ютор(и) 20th Televisiond, Netflix, Hulu і Disney+Жанр екшн / драма / фантастика / жахиФормат зображення NTSC 480i 4:3 PAL 576i 16:9 (4—7 сезони)Тривалість...

 

 

Norwegian TV series or program Mot i brøstetCreated byTore RyenStarringArve OpsahlNils VogtSven NordinSiw Anita Andersen(season 4 onwards)Hilde Lyrån(season 5 onwards)Theme music composerReg ZebastianCountry of originNorwayNo. of seasons8No. of episodes142 (list of episodes)ProductionExecutive producerTore RyenProducersRed Sand and TV 2Camera setupMulti-cameraRunning time24–28 minutesOriginal releaseNetworkTV 2Release22 January 1993 (1993-01-22) –8 December 1997 (199...

 

 

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (December 2021) (Learn how and when to remove this template message...

German footballer Franz Roth Bulle Roth playing for Bayern.Personal informationDate of birth (1946-04-27) 27 April 1946 (age 77)Place of birth Memmingen, GermanyHeight 1.79 m (5 ft 10 in)[1]Position(s) MidfielderYouth career0000–1964 TSV Bertoldshofen1964–1966 SpVgg KaufbeurenSenior career*Years Team Apps (Gls)1966–1978 FC Bayern Munich 322 (72)1978–1979 SV Casino Salzburg 31 (1)1980 SV Sandhausen 8 (0)1980–1985 TSV Mindelheim Total 371 (73)International ...

 

 

Albert SabinLahirAbram Saperstejn(1906-08-26)26 Agustus 1906Białystok, Kekaisaran Rusia(kini Polandia)Meninggal3 Maret 1993(1993-03-03) (umur 86)Washington, D.C., Amerika SerikatWarga negaraPolandia (sampai 1930), Amerika Serikat (sejak 1930)AlmamaterUniversitas New YorkDikenal atasVaksin polio oralSuami/istriSylvia Tregillus ​ ​(m. 1935; wafat 1966)​ Jane Warner ​ ​(m. 1967; bercerai 1971)​ ...

 

 

American television series RavenswoodGenre Teen drama Mystery Thriller Supernatural drama Magic realism Horror Created by Joseph Dougherty Oliver Goldstick I. Marlene King Starring Nicole Gale Anderson Tyler Blackburn Steven Cabral Brett Dier Britne Oldford Luke Benward Merritt Patterson Composers Michael Suby Joel J. Richard Country of originUnited StatesOriginal languageEnglishNo. of seasons1No. of episodes10ProductionExecutive producers Leslie Morgenstein I. Marlene King Oliver Goldstick J...

1968 film SuccubusWest German theatrical release posterDirected byJesús FrancoWritten byJesús FrancoPier A. CaminnecciScreenplay byJesús FrancoProduced byAdrian HovenStarring Janine Reynaud Jack Taylor Adrian Hoven Michel Lemoine Howard Vernon Cinematography Franz X. Lederle Jesus Franco Jorge Herrero Edited byFritzi SchmidtMusic byJerry Van RooyenProductioncompanyAquila Film Enterprises[1]Distributed byConstantin Film[2]Release date April 19, 1968 (1968-04-1...

 

 

American pop singer Gogi GrantGrant in 1955Background informationBirth nameMyrtle Audrey ArinsbergBorn(1924-09-20)September 20, 1924Philadelphia, Pennsylvania, U.S.DiedMarch 10, 2016(2016-03-10) (aged 91)Los Angeles, California, U.S.GenresJazz, vocal jazz, popOccupation(s)SingerYears active1950s–2016LabelsEra, RCA VictorMusical artist Myrtle Audrey Arinsberg (September 20, 1924 – March 10, 2016), known professionally as Gogi Grant, was an American pop singer. She is best known for he...

 

 

Kota KutacaneKelurahanNegara IndonesiaProvinsiAcehKabupatenAceh TenggaraKecamatanBabussalamKodepos24651Kode Kemendagri11.02.04.2001 Kode BPS1104040010 Jumlah penduduk5.354 jiwa (2020)[1]Kepadatan0,92 jiwa/km² Kota Kutacane merupakan salah satu kute yang ada di kecamatan Babussalam, kabupaten Aceh Tenggara, provinsi Aceh, Indonesia. Kota Kutacane juga menjadi ibu kota atau pusat pemerintahan dari kabupaten Aceh Tenggara. Iklim Kota Kutacane memiliki iklim hutan hujan tropis (Af) ...

2018 film by Christian Rivers Mortal EnginesTheatrical release posterDirected byChristian RiversScreenplay by Fran Walsh Philippa Boyens Peter Jackson Based onMortal Enginesby Philip ReeveProduced by Zane Weiner Amanda Walker Deborah Forte Fran Walsh Peter Jackson Starring Hera Hilmar Robert Sheehan Hugo Weaving Jihae Ronan Raftery Leila George Patrick Malahide Stephen Lang CinematographySimon RabyEdited byJonno Woodford-RobinsonMusic byTom Holkenborg[1]Productioncompanies Universal P...

 

 

Non-destructive material testing using ultrasonic waves This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Ultrasonic testing – news · newspapers · books · scholar · JSTOR (April 2017) (Learn how and when to remove this template message) An example of Ultrasonic Testing (UT) on blade roots of a V2500 IAE aircra...

 

 

Questa voce sull'argomento società di pallacanestro russe è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. P.B.K. Lokomotiv-Kuban KrasnodarPallacanestro Segni distintivi Uniformi di gara Casa Trasferta Colori sociali Rosso e verde Dati societari Città Krasnodar Nazione  Russia Confederazione FIBA Europe Federazione RBF Campionato VTB United League Fondazione 1946 Denominazione B.K. Lokomotiv Mineralnye Vody(1946-2003)B.K. Lokomotiv Rostov(2003-20...

2013 Indian filmMusic MagicMovie posterDirected byManthrakshar DSWritten byManthrakshar DSProduced byPaleem Srikanth ReddyStarring Rahul Kimaya Bhattacharya Trinath Henna Chopra Music by Joseph Sunder Padmanadham ProductioncompanyPalred Media & Entertainment Pvt. LTD.Release date 20 September 2013 (2013-09-20) CountryIndiaLanguageTelugu Music Magic is a 2013 Indian Telugu-language musical drama film written and directed by Manthrakshar DS and starring Rahul and Kimaya. It w...

 

 

Lambang Lokasi Data-data dasar Région atau Gewest (Negara bagian): Daerah Ibu Kota Brusel Wilayah: 9,03 km² Penduduk: 29.265 jiwa Kepadatan penduduk: 3.271 jiwa per km² Kode pos: 1160 Kode telepon: 02 Alamat balai kota: ...1160 Auderghem-Oudergem Situs web resmi: nl atau fr Politik Wali kota: Didier Gosuin Auderghem (dalam bahasa Prancis) atau Oudergem (dalam bahasa Belanda) adalah sebuah municipalité atau gemeente di Daerah Ibu Kota Brusel, Belgia. Munisipalitas ini adalah salah satu da...

 

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!