Rubin | ||
Data primei versiuni | 1995 | |
---|---|---|
Paradigme | Interpretat , obiect , imperativ , concurent , funcțional | |
Autor | Yukihiro matsumoto | |
Dezvoltatori | Yukihiro Matsumoto și colaboratori | |
Ultima versiune | 3.0.1 (5 aprilie 2021) | |
Tastare | Puternic , dinamic | |
Influențată de | Eiffel , Lisp , Smalltalk , Perl , Python , Dylan , Ada și CLU | |
Influențat | Limbaj D , Groovy , Perl 6 | |
Implementări | Ruby, YARV , Ruby RMN , JRuby , XRuby, Rubinius , Cardinal, Gardens Point Ruby.NET, IronRuby , MacRuby, mruby android-ruby | |
Scris in | VS | |
Sistem de operare | Cross-platform | |
Licență | Licență Ruby , licență publică generală GNU versiunea 2 și clauze BSD 2 ( d ) | |
Site-ul web | www.ruby-lang.org | |
Extensie de fișier | rb și rbw | |
Ruby este un limbaj de programare gratuit . Este interpretat , orientat pe obiecte și multi- paradigmă . Limba a fost standardizată în Japonia în 2011 ( JIS X 3017: 2011) și în 2012 de către Organizația Internațională pentru Standardizare (ISO 30170: 2012).
Yukihiro „Matz” Matsumoto este creatorul lui Ruby. Frustrat de experiența sa în dezvoltarea Smalltalk și Lisp , a început să proiecteze un nou limbaj în 1993 sub Emacs , apoi a lansat o primă versiune în 1995 sub licență gratuită . El continuă de la noile versiuni.
Au avut loc modificări majore ale versiunii:
De la sosirea documentației vorbitoare de limbă engleză și a cadrului web Ruby on Rails în 2004, Ruby a cunoscut o anumită nebunie care a continuat să crească până în 2008 în lumea programării, apoi o eroziune lentă dacă ne judecăm după indexul Tiobe .
Ruby este puternic orientat spre obiect și astfel se apropie de paradigma obiectului Smalltalk :
În ciuda acestui aspect exclusiv obiect , programarea procedurală este posibilă și frecventă. Ruby folosește o sintaxă simplă, inspirată de Eiffel și Ada .
Limbajul este adesea prezentat ca evitând pe cât posibil surprize neplăcute, conform principiului celei mai mici surprize . Dar, deoarece nu este posibil să se evite surpriza tuturor utilizatorilor, Yukihiro Matsumoto precizează că el caută mai presus de toate să evite propria sa surpriză. Astfel, cu cât cunoaștem mai mult limbajul, cu atât cunoaștem mai mult logica autorului său și cu atât mai puțin suntem surprinși de funcționalitățile pe care le descoperim.
Principalele funcționalități sunt:
Oficial interpret , Ruby RMN - ul , lucreaza pe mai multe sisteme de operare : UNIX , Linux , Microsoft Windows , MS-DOS , OS X , OS / 2 , ReactOS , AmigaOS , etc. Este lansat sub licența dublă gratuită GNU GPL și licența Ruby.
Ruby se livrează cu irb , un interpret interactiv de comandă pentru a testa cu atenție modul în care funcționează limba. Există o versiune web a irb pentru testarea Ruby într-un browser.
De cand 1 st luna ianuarie 2007 de, dezvoltarea lui Ruby (1.9) se bazează pe interpretul YARV scris de Koichi Sasada . Acest nou interpret oferă un câștig notabil în performanță.
Pe lângă YARV , există și alți interpreți Ruby:
JRuby este scris în Java și interpretează direct codul sursă scris în Ruby. XRuby Convertește codul Ruby în bytecode Java și este mai rapid pe unele repere decât versiunea 1.8.5 a interpretului oficial. Rubinius O mașină virtuală simplificată, inspirată de Smalltalk-80 , implementată chiar în Ruby. Cardinal un interpret care rulează pe Parrot . Gardens Point Ruby.NET Un interpret care rulează pe cadrul .NET . IronRuby un compilator care rulează pe DLR al cadrului .NET . Rubin pentru .Net un compilator care rulează pe CLR al cadrului .NET care a fost abandonat în favoarea IronRuby . MacRuby Implementare Ruby 1.9 specifică pentru OS X , care rulează pe runtime Objective-C , permițând utilizarea nativă a componentelor Cocoa , spre deosebire de legăturile RubyCocoa .: Truffleruby Suportat și dezvoltat de Oracle, este o implementare a limbajului Ruby pe GraalVM, permițând performanțe superioare RMN-ului. Cu toate acestea, defectele de implementare împiedică instalarea unor pietre prețioase populare.
Există, de asemenea, o soluție non-liberă, comercializată de HipByte pe baza proiectului MacRuby , numită RubyMotion creată de Laurent Sansonetti
Versiunea 2.0 vă permite să creați aplicații grafice pentru macOS și iOS .
Ruby are o interfață de programare în limbaj C care îi permite să fie integrată în alte programe . Ruby poate fi utilizat în special în:
Software-ul de creare a jocurilor video RPG Maker include în versiunile sale XP și VX o bibliotecă numită RGSS, Ruby Game Scripting System care permite utilizarea scripturilor în Ruby.
Există multe biblioteci de caracteristici care pot fi adăugate la limbă. Depozitul istoric al acestor biblioteci este Ruby Application Archive (RAA). Conține caracteristici suplimentare pentru Ruby, cum ar fi bibliotecile de clase și module, dar și extensii pentru a utiliza biblioteci de la terți.
RAA conține , de asemenea , software - ul scris în Ruby. Printre aceste software găsim în special Rubygems, care este un instrument de ambalare și instalare pentru extensiile Ruby. Permite implementarea rapidă a bibliotecilor și programelor Ruby.
De-a lungul timpului, baza de date de bijuterii Rubygems a devenit punctul de referință în stocarea bibliotecii pentru Ruby (peste 49 de miliarde de descărcări) - prin instrumentul Bundle r (dezvoltat și în Ruby), dependențele de proiect sunt descărcate în mod implicit din Rubygems .
Site- ul web Rubyforge a fost, de asemenea, o serie importantă de programe și biblioteci scrise în Ruby, însă închisă de dezvoltatorul său în 2014.
Clasica lume Hello :
puts 'Hello World!'Utilizarea obiectelor:
# 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" 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 !