Ruby

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
Ruby
Ruby logo.svg
Extensii fișiere obișnuite .rb, .rbw
Paradigmă multi-paradigmă: orientat pe obiecte, imperativ, funcțional
Apărut în 1995
Dezvoltat de Yukihiro Matsumoto
Dezvoltator actual Yukihiro Matsumoto, și alții.
Ultima versiune 2.1.1 (24 februarie 2014 (2014-02-24))
Sistem de tipizare duck, dinamic
Influențat de Ada, C++, CLU, Dylan, Eiffel
Influențe D, Elixir, Falcon, Fancy
OS independent de platformă
Licență licență Ruby say licență BSD
Website www.ruby-lang.org

Ruby este un limbaj de programare generic, reflexiv, dinamic și orientat pe obiecte. A fost creat la mijlocul anilor '90 din secolul trecut de Yukihiro "Matz" Matsumoto în Japonia.

Combină elemente inspirate din Perl (sintaxa) cu caracteristici din Smalltalk, dar a fost influențat și de alte limbaje precum Eiffel și Lisp. Oferă suport pentru multiple paradigme de programare (funcțională, orientată pe obiecte, imperativă), gestiune automată a memoriei, sistem dinamic pentru tipurile de date; Ruby e similar - în grade diferite - cu Smalltalk, Python, Perl, Lisp, Dylan și CLU.

Este un limbaj orientat pe obiecte: fiecare tip de date este un obiect, inclusive clasele si tipurile pe care multe alte limbaje le considera primitive (cum ar fi tipul intreg, boolean si “nil”). Fiecare functie reprezinta o metoda. Variabilele desemneaza referinte la obiecte, nu obiectele in sine. Ruby suporta mostenirea, dar nu mostenirea multipla, totusi clasele pot importa module. Sintaza procedurala este acceptata, dar toate metodele definite in afara scopului unui obiect particular sunt de fapt metode ale clasei obiect. Din moment ce clasa este parinte pentru toate celelalte clase, schimbarile devin vizibile pentru toate clasele si obiectele.

Despre Ruby[modificare | modificare sursă]

Vă întrebați de ce Ruby este atât de popular? Fanii săi îl numesc frumos, un limbaj plin de artă. Și totuși, ei susțin că este practic si accesibil. Ce să înțelegem?

Istorie[modificare | modificare sursă]

Ruby este un limbaj de o aleasă balanță. Creatorul său, Yukihiro “matz” Matsumoto, a contopit părți din limbajele sale favorite (Perl, Smalltalk, Eiffel, Ada, și Lisp) pentru a forma un nou limbaj care să creeze o balanță armonioasă între programarea funcțională și cea imperativă.

El a spus adeseori că “încearcă sa facă limbajul Ruby natural, nu simplu,” într-un mod care să oglindească viața.

Pornind de la asta, el adaugă:
Ruby este simplu în aparență, dar foarte complex în interior, la fel ca și corpul uman.


Despre ascensiunea Ruby[modificare | modificare sursă]

Încă de la lansarea sa publică în 1995, Ruby a atras programatori devotați din lumea întragă. În 2006, Ruby a realizat acceptarea în masă prin grupuri active de utilizatori formate în orașele majore ale lumii și prin conferințe legate de Ruby umplute pană la refuz. Ruby-Talk, principala listă de discuții pe tema limbajului Ruby a urcat până la o medie de 200 de mesaje pe zi.
Indexul TIOBE, care măsoară creșterea limbajelor de programare, situează Ruby pe locul #11 între limbajele din lumea întreagă. Observând creșterea sa, ei prezic, “Sunt mari șanse ca Ruby să intre între primele 10 limbaje în jumătate de an.” Mare parte din această creștere este atribuită programelor scrise în Ruby, în special framework-ului web Ruby on Rails.

Ruby este de asemenea complet liber. Nu doar gratuit, ci de asemenea liber de a fi utilizat, copiat, modificat și distribuit.

Toate sunt obiecte[modificare | modificare sursă]

Inițial, Matz s-a uitat la alte limbaje pentru a găsi sintaxa ideală. Reamintindu-și căutarile sale, el spuse, “Am vrut un limbaj de tip scripting care să fie mai puternic decăt Perl, și mai orientat pe obiecte decât Python.”
În Ruby, totul este un obiect. Fiecărui bit de informație și de cod i se pot da propriile proprietăți și acțiuni. În programarea orientată pe obiecte proprietățile sunt denumite variabile de instanță iar acțiunile sunt cunoscute drept metode. Natura pur orientată pe obiecte a Ruby este cel mai adesea demonstrată de o bucată de cod ce aplică o acțiune unui număr.

5.times { print "Noi *iubim* Ruby -- este fantastic!" }

În multe limbaje, numerele și alte tipuri de date primitive nu sunt obiecte. Ruby urmează influențele limbajului Smalltalk dând metode și variabile de instanță tuturor tipurilor sale. Aceasta ușurează utilizarea Ruby deoarece regulile aplicabile obiectelor sunt aplicabile întregului Ruby.

Flexibilitatea[modificare | modificare sursă]

Ruby este privit ca un limbaj flexibil, deoarece permite utilizatorilor săi să-i modifice în mod liber părțile componente. Părți esențiale din Ruby pot fi eliminate sau redefinite după voință. Părți existente pot fi extinse. Ruby nu încearcă să-l îngrădească pe programator.
De exemplu, adăugarea este efectuată cu operatorul plus (+). Dar, dacă a-ți prefera să utilizați mai degrabă cuvântul plus pentru claritate, a-ți putea adăuga o astfel de metodă clasei Ruby native Numeric.

class Numeric
  def plus(x)
    self.+(x)
  end
end
 
y = 5.plus 6
# y este acum egal cu 11

Operatorii în Ruby sunt aliasuri convenabile pentru metode. Îi puteți de asemenea redefini și pe aceștia.

Blocuri[modificare | modificare sursă]

Blocurile în Ruby sunt de asemenea privite ca o sursă de mare flexibilitate. Un programator poate atașa o încapsulare (closure) unei metode, descriind astfel cum ar trebui să se comporte aceasta. Încapsularea este denumită block și a devenit una din însușirile cele mai populare pentru noii veniți în Ruby dinspre alte limbaje imperative precum PHP sau Visual Basic. Blocurile sunt inspirate de către limbajele funcționale. Matz a spus, “în încapsulările Ruby, am vrut să respect cultul Lisp.”

search_engines = 
  %w[Google Yahoo MSN].map do |engine|
    "http://www." + engine.downcase + ".com"
  end

În codul de mai sus, blocul este descris în interiorul construcției do, end. Metoda map aplică blocul listei de cuvinte furnizate. Multe alte metode în Ruby lasă o portiță deschisă programatorului ca acesta să-și poată scrie propriul bloc de cod care sa clarifice ce anume trebuie să facă acea metodă.

Ruby și Mixajele[modificare | modificare sursă]

Spre deosebine de multe alte limbaje de programare orientate pe obiecte, Ruby facilitează doar moștenirea simplă, dinadins. Dar Ruby înțelege conceptul de module (denumite Categorii în Objective-C). Modulele sunt colecții de metode.

Clasele pot mixa (include) un modul și dobândi astfel, fara nici un efort, toate metodele acestuia. De examplu, orice clasă care implementează metoda each poate mixa modulul Enumerable, care adaugă o grămadă de metode care folosesc each pentru iterație.

class MyArray
  include Enumerable
end

În general, Rubyiști văd aceasta drept o cale mult mai limpede decât moștenirea multiplă, care este complexă și poate fi prea restrictivă.


Aspectul vizual[modificare | modificare sursă]

Deși Ruby adesea folosește foarte puțină punctuație și preferă îndeosebi cuvinte cheie in limba engleză, este folosită ceva punctuație pentru a decora Ruby. În Ruby nu este necesară declararea variabilelor. Folosește o serie de simple convenții pentru a marca scopul variabilelor.

  • var ar putea fi o variabilă locală.
  • @var este o variabilă de instanță.
  • $var este o variabilă globală.

Aceste sigilii măresc claritatea permițândui programatorului să identifice cu ușurință rolurile variabilelor. De asemenea nu mai este necesar să fie adăugat obositorul self. în fața fiecărui membru al instanței.

Dincolo de partea fundamentală[modificare | modificare sursă]

Ruby posedă o bogăție de alte însușiri, printre care următoarele:
  • Ruby are însușirea de a capta excepțiile, precum Java sau Python, pentru a facilita tratarea erorilor.
  • Ruby are un colector de memorie reziduală cu adevărat mark-and-sweep pentru toate obiectele Ruby. Nu este nici o nevoie să fie menținute contoare de referințe în biblioteci externe. După cum spune Matz, “Aceasta e mai bine pentru sănătatea ta.”
  • Scrierea de extensii C în Ruby este mai facilă decât în Perl sau Python, având un API foarte elegant pentru a apela Ruby din C. Aceasta invită la încapsularea Ruby în software, pentru a fi utilizat ca un limbaj de scripting. O interfață SWIG este de asemenea disponibilă.
  • Ruby poate încărca dinamic biblioteci de extensii dacă sistemul de operare o permite.
  • Ruby posedă threaduri independente de OS. Astfel, pentru toate platformele pe care rulează Ruby, aveți de asemenea multithreading, indiferent dacă sistemul de operare oferă sau nu așa ceva, chiar și pe MS-DOS!
  • Ruby este foarte portabil: este dezvoltat în principal pe GNU/Linux, dar rulează pe multe variante de UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.

Vezi și[modificare | modificare sursă]