Rubiini | ||
Ensimmäisen version päivämäärä | 1995 | |
---|---|---|
Paradigmat | Tulkittu , esine , välttämätön , samanaikainen , toimiva | |
Kirjoittaja | Yukihiro matsumoto | |
Kehittäjät | Yukihiro Matsumoto ja avustajat | |
Viimeinen versio | 3.0.1 (5. huhtikuuta 2021) | |
Kirjoittaminen | Vahva , dynaaminen | |
Vaikuttanut | Eiffel , Lisp , Smalltalk , Perl , Python , Dylan , Ada ja CLU | |
Vaikuttanut | D-kieli , Groovy , Perl 6 | |
Toteutukset | Ruby, YARV , Ruby MRI , JRuby , XRuby, Rubinius , Cardinal, Gardens Point Ruby.NET, IronRuby , MacRuby, mruby android-ruby | |
Kirjoitettu | VS | |
Käyttöjärjestelmä | Monitasoinen | |
Lisenssi | Ruby-lisenssi , GNU General Public License -versio 2 ja BSD 2 -lausekkeet ( d ) | |
Verkkosivusto | www.ruby-lang.org | |
Tiedostopääte | rb ja rbw | |
Ruby on ilmainen ohjelmointikieli . Se on tulkittu , olio- ja moniparadigma . Kieli standardoitiin Japanissa vuonna 2011 ( JIS X 3017: 2011) ja vuonna 2012 Kansainvälinen standardointijärjestö (ISO 30170: 2012).
Yukihiro "Matz" Matsumoto on Rubyn luoja. Turhautunut hänen kokemuksensa Smalltalk ja Lisp kehitystä , hän alkoi suunnitella uutta kieltä vuonna 1993 alle Emacs sitten julkaisi ensimmäisen version vuonna 1995 alle vapaalla lisenssillä . Hän jatkaa uusien versioiden jälkeen.
Suurimpia versiomuutoksia on tapahtunut:
Saapumisen jälkeen Englanti-speaking asiakirjat, ja Ruby on Rails web puitteet vuonna 2004, Ruby on kokenut tietty villitys, joka on jatkanut kasvuaan vuoteen 2008 maailmassa ohjelmointi, sitten hitaaseen laskuun, jos Päätellen hänen Tiobe indeksin .
Ruby on voimakkaasti objektorientoitu ja tulee siten lähelle Smalltalkin objektiparadigmaa :
Tästä yksinomaan objektiivisesta näkökulmasta huolimatta menettelyjen ohjelmointi on mahdollista ja usein. Ruby käyttää yksinkertaista syntaksia , innoittamana Eiffel ja Ada .
Kieli esitetään usein välttävän epämiellyttäviä yllätyksiä mahdollisimman vähän yllätyksen periaatteen mukaisesti . Mutta koska se ei ole mahdollista välttää yllätykseksi kaikkien käyttäjien, Yukihiro Matsumoto täsmennetään, että hän pyrkii ennen kaikkea välttämään hänen oma yllätys. Joten mitä enemmän tiedämme kieltä, sitä enemmän tiedämme sen kirjoittajan logiikan, ja sitä vähemmän olemme yllättyneitä löydetyistä toiminnoista.
Tärkeimmät toiminnot ovat:
Viralliset tulkki , Ruby MRI , toimii monissa käyttöjärjestelmissä : UNIX , Linux , Microsoft Windows , MS-DOS , OS X , OS / 2 , ReactOS , AmigaOS jne Se on julkaistu alla GPL vapaata dual lisenssin ja Ruby lisenssin.
Ruby toimittaa interaktiivisen komentotulkin irb : n kanssa testatakseen perusteellisesti kielen toiminnan. On web -versio on IRB testaamiseen Ruby selaimessa.
Siitä asti kun 1. st Tammikuu 2007Kehittäminen Ruby (1,9) perustuu YARV tulkki kirjoittanut Koichi Sasada . Tämä uusi tulkki tuo huomattavaa suorituskykyä.
Sitä paitsi YARV , on useita muita Ruby tulkkeja:
JRuby se on kirjoitettu Java-muodossa ja tulkitsee suoraan Ruby-kirjoitetun lähdekoodin. XRuby Se muuntaa Ruby-koodin Java- tavukoodiksi ja on joissakin vertailuarvoissa nopeampi kuin virallisen tulkin versio 1.8.5. Rubinius Yksinkertaistettu virtuaalikone, innoittamana Smalltalk-80 , toteutettu itse Ruby. Kardinaali papukaijalla kulkeva tulkki . Gardens Point Ruby.NET .NET-kehyksessä toimiva tulkki . IronRuby kääntäjä, joka toimii .NET-kehyksen DLR : llä . Ruby verkkotunnukselle kääntäjä käynnissä CLR ja .NET joka on luovuttu IronRuby . MacRuby OS X -spesifinen Ruby 1.9 -toteutus , joka toimii Objective-C-ajonaikana , joka sallii kaakaokomponenttien natiivin käytön , toisin kuin RubyCocoa-sidokset.: Truffleruby Oraclen tukema ja kehittämä se on Rubal-kielen toteutus GraalVM: ssä, mikä antaa paremman suorituskyvyn kuin MRI. Toteutusvirheet estävät kuitenkin joidenkin suosittujen helmien asennuksen .
HipByte markkinoi myös vapaan ratkaisun, joka perustuu Laurent Sansonettin luomaan MacRuby- projektiin nimeltä RubyMotion .
Versiolla 2.0 voit luoda grafiikkasovelluksia macOS : lle ja iOS: lle .
Ruby- ohjelmointirajapinta on C-kielellä, jonka avulla se voidaan integroida muihin ohjelmistoihin . Rubiinia voidaan käyttää erityisesti:
RPG Maker -videopelien luontiohjelmisto sisältää XP- ja VX-versioissaan kirjaston nimeltä RGSS, Ruby Game Scripting System, joka sallii komentosarjojen käytön Ruby-ohjelmassa.
Kielelle voidaan lisätä monia kirjastoja ominaisuuksia. Näiden kirjastojen historiallinen arkisto on Ruby Application Archive (RAA). Se sisältää lisäominaisuuksia Rubylle, kuten luokka- ja moduulikirjastot, mutta myös laajennuksia kolmannen osapuolen kirjastojen käyttämiseen.
RAA sisältää myös ohjelmiston kirjoitettu Ruby. Näistä ohjelmistoista löytyy erityisesti Rubygems, joka on Ruby-laajennusten pakkaus- ja asennustyökalu. Se mahdollistaa Ruby-kirjastojen ja -ohjelmien nopean käyttöönoton.
Ajan myötä Rubygems-helmi- tietokannasta on tullut vertailukohtana Rubyn kirjastotallennustila (yli 49 miljardia latausta) - Bundle- työkalun r (kehitetty myös Ruby- sovelluksessa ) projektiriippuvuudet ladataan oletusarvoisesti Rubygemsista .
Rubyforge verkkosivuilla oli myös merkittävä joukko ohjelmia ja kirjastoja kirjoitettu Ruby kuitenkin suljettu sen kehittäjä vuonna 2014.
Klassinen Hello world :
puts 'Hello World!'Esineiden käyttö:
# 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"Mixinin ja perinnön käyttäminen :
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 !