Rubin

Rubin
Logo.
Dato for første version 1995
Paradigmer Fortolket , objekt , bydende nødvendigt , samtidig , funktionel
Forfatter Yukihiro matsumoto
Udviklere Yukihiro Matsumoto og bidragydere
Sidste version 3.0.1 (5. april 2021)
Indtastning Stærk , dynamisk
Påvirket af Eiffel , Lisp , Smalltalk , Perl , Python , Dylan , Ada og CLU
Påvirket D sprog , Groovy , Perl 6
Implementeringer Ruby, YARV , Ruby MRI , JRuby , XRuby, Rubinius , Cardinal, Gardens Point Ruby.NET, IronRuby , MacRuby, mruby android-ruby
Skrevet i VS
Operativ system Tværplatform
Licens Ruby License , GNU General Public License version 2 og BSD 2-klausuler ( d )
Internet side www.rubylang.org
Filudvidelse rb og rbw

Ruby er et gratis programmeringssprog . Det fortolkes , objektorienteret og multi- paradigme . Sproget blev standardiseret i Japan i 2011 ( JIS X 3017: 2011) og i 2012 af Den Internationale Standardiseringsorganisation (ISO 30170: 2012).

Historisk

Yukihiro "Matz" Matsumoto er skaberen af ​​Ruby. Frustreret over hans erfaring inden for Smalltalk og Lisp-udvikling begyndte han at designe et nyt sprog i 1993 under Emacs , hvorefter han udgav en første version i 1995 under en gratis licens . Han fortsætter siden de nye versioner.

Større versionændringer har fundet sted:

Siden ankomsten af ​​en engelsktalende dokumentation og Ruby on Rails -webrammen i 2004, har Ruby oplevet en vis dille, som er fortsat med at vokse indtil 2008 i programmeringsverdenen, så en langsom erosion, hvis vi dømmer efter hans Tiobe-indeks .

Filosofi

Ruby er stærkt objektorienteret og kommer derfor tæt på Smalltalks objektparadigme  :

På trods af dette udelukkende objekt- aspekt er proceduremæssig programmering mulig og hyppig. Ruby bruger en simpel syntaks , inspireret af Eiffel og Ada .

Sprog præsenteres ofte for at undgå ubehagelige overraskelser så meget som muligt ifølge princippet om mindst overraskelse . Men da det ikke er muligt at undgå alle brugeres overraskelse , specificerer Yukihiro Matsumoto , at han frem for alt søger at undgå sin egen overraskelse. Jo mere vi kender sproget, jo mere kender vi forfatterens logik, og jo mindre er vi overraskede over de funktionaliteter, vi opdager.

Funktioner

De vigtigste funktioner er:

Implementeringer

Den officielle tolk , Ruby MRI , fungerer på mange operativsystemer  : UNIX , Linux , Microsoft Windows , MS-DOS , OS X , OS / 2 , ReactOS , AmigaOS osv. Det frigives under GNU GPL gratis dobbelt licens og Ruby licens.

Ruby leveres med irb , en interaktiv kommandotolker til grundigt at teste, hvordan sproget fungerer. Der er en web- udgave af IRB til test Ruby i en browser.

Siden 1 st januar 2007, udviklingen af ​​Ruby (1.9) er baseret på YARV- tolk skrevet af Koichi Sasada . Denne nye tolk bringer en bemærkelsesværdig gevinst i ydeevne.

Udover YARV er der flere andre Ruby-tolke:

JRuby det er skrevet i Java og fortolker kildekoden skrevet i Ruby direkte. XRuby Det konverterer Ruby-kode til Java bytecode og er hurtigere på nogle benchmarks end version 1.8.5 af den officielle tolk. Rubinius En forenklet virtuel maskine, inspireret af Smalltalk-80 , implementeret i Ruby selv. Kardinal en tolk, der kører på papegøje . Gardens Point Ruby.NET En tolk, der kører på .NET framework . IronRuby en compiler, der kører på DLR i .NET framework . Ruby til .Net en kompilator, der kører på CLR i .NET framework, som er blevet opgivet til fordel for IronRuby . MacRuby OS X specifik Ruby 1.9 implementering , der kører på toppen af Objective-C runtime , så indfødte brug af Cocoa komponenter , i modsætning RubyCocoa bindinger:. Truffleruby Understøttet og udviklet af Oracle, er det en implementering af Ruby-sproget på GraalVM, hvilket giver ydeevne bedre end MR. Imidlertid forhindrer implementeringsfejl installationen af ​​nogle populære perler .


Der er også en ikke-fri løsning, der markedsføres af HipByte baseret på arbejdet i MacRuby- projektet , kaldet RubyMotion oprettet af Laurent Sansonetti

Version 2.0 giver dig mulighed for at oprette grafikapplikationer til macOS og iOS .

Indlejrede tolke

Ruby har en programmeringsgrænsefladeC-sprog, der gør det muligt at integrere den i anden software . Rubin kan især anvendes i:

RPG Maker -software til oprettelse af videospil indeholder i sine XP- og VX-versioner et bibliotek kaldet RGSS, Ruby Game Scripting System, der tillader brug af scripts i Ruby.

Biblioteker

Der er mange biblioteker med funktioner, der kan føjes til sproget. Disse bibliotekers historiske lager er Ruby Application Archive (RAA). Den indeholder yderligere funktioner til Ruby, såsom klasse- og modulbiblioteker, men også udvidelser til brug af tredjepartsbiblioteker.

Den RAA indeholder også software skrevet i Ruby. Blandt denne software finder vi især Rubygems, som er et emballage- og installationsværktøj til Ruby-udvidelser. Det muliggør hurtig implementering af Ruby-biblioteker og -programmer.

Over tid er Rubygems perle- database blevet benchmark i bibliotekslagring for Ruby (over 49 milliarder downloads) - gennem Bundle- værktøjet r (også udviklet i Ruby) downloades projektafhængigheder som standard fra Rubygems .

Den Rubyforge hjemmeside var også en stor række programmer og biblioteker skrevet i Ruby, dog lukket af dets udvikler i 2014.

Eksempler

Den klassiske Hello-verden  :

puts 'Hello World!'

Brug af genstande:

# 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"

Brug af mixin og arv  :

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 !

Noter og referencer

Bemærkninger

  1. Hovedforskellen er, at kontrolstrukturer (hvis-så-ellers, mens osv.) Ikke er objekter.

Referencer

  1. "  https://www.ruby-lang.org/da/news/2021/04/05/ruby-3-0-1-released/  "
  2. Intro - D programmeringssprog 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 - Programmeringssprog - Ruby .
  6. ISO / IEC 30170: 2012 Informationsteknologi - Programmeringssprog - Ruby .
  7. Officielt FTP-downloadwebsted .
  8. (in) Meddelelse om version 1.9.1 .
  9. Ruby 1.9.3-p0 frigivet .
  10. (da) Ruby 2.0.0-p0 frigives .
  11. (da) Ruby 2.1.0 frigives .
  12. Forklaring af væksten på det officielle websted.
  13. (in) Ruby på HOPL , historien om programmeringssprog .
  14. Definition af PoLS på Ruby Garden wiki .
  15. (in) e-mail Re: Et andet perspektiv er Ruby sendt af matz 26. maj 2005 på ruby-talk .
  16. (i) Ruby-A Diamond of et programmeringssprog, 2 Del , artikel offentliggjort på devx.com .
  17. Tekst til licensen på det officielle websted .
  18. (i) Prøv Ruby! på hobix.com.
  19. (in) The Ruby VM: Episode I , interview matz og ko1 den virtuelle maskine Ruby.
  20. (in) The Great Ruby Shootout , præstationssammenligning af de førende tolke Ruby.
  21. JRubys officielle hjemmeside
  22. (da) XRuby er hurtigere end i Ruby 1.8.5 FLESTE benchmarks .
  23. (i) Rubinius interview .
  24. Hjemmeside for kardinalprojektet .
  25. (in) Ruby.NET - Integrering af Gardens Point Compiler af Huw Collingbourne.
  26. (da) http://www.ironruby.net/ .
  27. (da) Officiel hjemmeside for MacRuby .
  28. (in) PragTob , "  Benchmarking a Go AI i Ruby: CRuby vs. Rubinius vs. JRuby vs. Trøffel - et år senere  ”Journeys of a not not so young longer Software Engineer ,24. januar 2017(adgang til 4. april 2020 )
  29. Ruby Application Archive .
  30. Rubygems officielle site .
  31. “  RubyGems.org | dit perlehosting- samfund  ” , på rubygems.org (adgang til 3. april 2020 )
  32. RubyForge .
  33. (i) Mx Evan Phoenix , "  meddelte i dag, at vi er sunsetting RubyForge. Sidste dag er den 15. maj. Begynd din datamigrering nu!  » , På @evanphx ,10. november 2013(adgang til 4. april 2020 )

Tillæg

Bibliografi

  • (en) Dave Thomas og Andrew Hunt , Programming Ruby: The Pragmatic Programmer's Guide ,2000, 564  s. ( ISBN  0-201-71089-7 , læs online )
  • Yukihiro Matsumoto ( overs.  Fra engelsk), Ruby in a Nutshell , Cambridge / Köln / Paris osv. O'Reilly2002, 242  s. ( ISBN  2-84177-210-1 )
  • (en) Dave Thomas , Chad Fowler og Andy Hunt , programmering af Ruby: The Pragmatic Programmer's Guide ,2004( ISBN  0-9745140-5-5 )
  • Chris Pine ( overs .  Fra engelsk), start programmering med Ruby , Paris, CampusPress,2006, 165  s. ( ISBN  2-7440-2078-8 )
  • Lucas Carlson og Leonard Richardson , Ruby som eksempel ,2006, 867  s. ( ISBN  978-2-84177-347-3 )
  • (en) Hal Fulton , The Ruby Way, anden udgave: Solutions and Techniques in Ruby Programming (2. udgave) ,2006( ISBN  0-672-32884-4 )
  • (en) Maik Schmidt , Enterprise Integration with Ruby: A Pragmatic Guide ,2006, 346  s. ( ISBN  0-9766940-6-9 )
  • (da) Brian Marick , Everyday Scripting with Ruby: For hold, testere og dig ,2007, 301  s. ( ISBN  978-0-9776166-1-9 )
  • (en) Peter Cooper , Beginning Ruby: From Novice to Professional ,2007( ISBN  978-1-59059-766-8 )

Relaterede artikler

eksterne links