Rubin

Rubin
Siglă.
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).

Istoric

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 .

Filozofie

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.

Caracteristici

Principalele funcționalități sunt:

Implementări

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 .

Interpreți încorporați

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.

Biblioteci

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.

Exemple

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"

Folosind mixin și moștenire  :

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 !

Note și referințe

Note

  1. Principala diferență este că structurile de control (if-then-else, while, etc.) nu sunt obiecte.

Referințe

  1. "  https://www.ruby-lang.org/en/news/2021/04/05/ruby-3-0-1-released/  "
  2. Limbaj de programare Intro - D 1.0 - Marte digitală .
  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 - Limbaje de programare - Ruby .
  6. ISO / IEC 30170: 2012 Tehnologia informației - Limbaje de programare - Ruby .
  7. Site oficial de descărcare FTP .
  8. (în) Anunțul versiunii 1.9.1 .
  9. Ruby 1.9.3-p0 lansat .
  10. (ro) Ruby 2.0.0-p0 este lansat .
  11. (ro) Ruby 2.1.0 este lansat .
  12. Explicația creșterii pe site-ul oficial.
  13. (în) Ruby pe HOPL , Istoria limbajelor de programare .
  14. Definiția PoLS pe ​​wiki Ruby Garden .
  15. (în) e-mail Re: O perspectivă diferită este Ruby trimis de matz 26 mai 2005 pe ruby-talk .
  16. (în) Ruby-A Diamond of a Programming Language, Partea 2 , articol publicat pe devx.com .
  17. Textul licenței pe site-ul oficial .
  18. (în) Încercați Ruby! pe hobix.com.
  19. (în) The Ruby VM: Episodul I , intervievează matz și ko1 mașina virtuală Ruby.
  20. (în) The Great Ruby Shootout , comparație de performanță a interpretilor de frunte Ruby.
  21. Site-ul oficial JRuby
  22. (ro) XRuby este mai rapid decât în ​​Ruby 1.8.5 MOST benchmarks .
  23. (în) Interviu Rubinius .
  24. Site-ul web al proiectului Cardinal .
  25. (in) Ruby.NET - Integrarea Gardens Point Compiler de Huw Collingbourne.
  26. (ro) http://www.ironruby.net/ .
  27. (en) Site-ul oficial al MacRuby .
  28. (în) PragTob , „  Benchmarking a Go AI in Ruby: CRuby vs. Rubinius vs. JRuby vs. Truffle - un an mai târziu  ” , în Călătoriile unui inginer software care nu mai este atât de tânăr ,24 ianuarie 2017(accesat la 4 aprilie 2020 )
  29. Ruby Application Archive .
  30. Site-ul oficial Rubygems .
  31. „  RubyGems.org | comunitatea ta de găzduire de bijuterii  ” , pe rubygems.org (accesat 3 aprilie 2020 )
  32. RubyForge .
  33. (în) Mx Evan Phoenix , a anunțat astăzi că l-am apus pe RubyForge. Ultima zi va fi 15 mai. Începeți migrarea datelor acum!  » , Pe @evanphx ,10 noiembrie 2013(accesat la 4 aprilie 2020 )

Anexe

Bibliografie

  • (ro) Dave Thomas și Andrew Hunt , Programming Ruby: The Pragmatic Programmer's Guide ,2000, 564  p. ( ISBN  0-201-71089-7 , citit online )
  • Yukihiro Matsumoto ( trad.  Din engleză), Ruby in a Nutshell , Cambridge / Köln / Paris etc. O'Reilly2002, 242  p. ( ISBN  2-84177-210-1 )
  • (ro) Dave Thomas , Chad Fowler și Andy Hunt , Programming Ruby: The Pragmatic Programmer's Guide ,2004( ISBN  0-9745140-5-5 )
  • Chris Pine ( trad.  Din limba engleza), începe programarea cu Ruby , Paris, CampusPress,2006, 165  p. ( ISBN  2-7440-2078-8 )
  • Lucas Carlson și Leonard Richardson , Ruby , de exemplu ,2006, 867  p. ( ISBN  978-2-84177-347-3 )
  • (ro) Hal Fulton , The Ruby Way, Ediția a doua: Soluții și tehnici în programarea Ruby (ediția a II-a) ,2006( ISBN  0-672-32884-4 )
  • (ro) Maik Schmidt , Enterprise Integration with Ruby: A Pragmatic Guide ,2006, 346  p. ( ISBN  0-9766940-6-9 )
  • (ro) Brian Marick , Everyday Scripting with Ruby: For Teams, Testers, and You ,2007, 301  p. ( ISBN  978-0-9776166-1-9 )
  • (ro) Peter Cooper , Beginning Ruby: From Novice to Professional ,2007( ISBN  978-1-59059-766-8 )

Articole similare

linkuri externe