Ruby (programski jezik)

**Rubi** () je objektno orijentisani programski jezik. U sebi kombinuje sintaksu inspirisanu jezicima Perl i Ada, sa objektno orijentisanim osobinama nalik jeziku Smoltok (Smalltalk), a deli i neke osobine sa jezicima Pajton, Lisp, Dylan i CLU. Rubi je jednoprolazni interpretirani jezik. NJegova glavna implementacija je slobodni softver pod licencom otvorenog koda.

Jukihiro „Mac“ Macumoto (*Yukihiro Matsumoto*) je sa razvojem ovog jezika počeo u februaru 1993. godine. Prvi put je objavljen 1995. godine, a trenutno je aktuelna stabilna verzija 1.9.3-p0 koja se može preuzeti sa zvanične strane jezika. Po mnogim programerima, Rubi slijedi princip „najmanjeg iznenađenja“, čime misle da je taj jezik oslobođen svih zamki i kontradiktornosti poznatih iz drugih jezika. Ime „rubi“ potiče od engleske riječi za „rubin“ () što je samo aluzija na „perl“ (engleski „biser").

Rubi je dugo vremena bio čisto japanska pojava, gdje je postigao veliku popularnost, otprilike jednaku kao Perl ili Pajton. Dokumentacija je postojala samo na japanskom. „Mac“ je tek krajem milenijuma krenuo sa aktivnostima popularizacije tog programskog jezika i izvan Japana. Veoma brzo je prihvaćen i ubrzo zatim su objavljeni mnogobrojni članci u stručnim časopisima kao i dokumentacija na drugim jezicima.

## Osobine
* Jednostavna i čitljiva sintaksa
* „Čisto“ objektno orijentisani jezik (slično Smoltalku)
** „Sve“ je objekt
** Nasleđivanje od modula, umjesto višestrukog nasleđivanja
** Unikatne metode (*Singleton*)
** Dinamična promjena imena i nadogradnja klasa prilikom izvršenja programa
** Iteratori
** Prepisivanje operatora
** Introspekcija (*Reflection*)
* Netipizovane varijable
* Obrada izuzetaka
* automatsko oslobađanje nepotrebno zauzete memorije (*garbage collection*)
* podrška Perlovih regularnih izraza (još nepotpuna)
* podrška na više operativnih sistema
* jedinstven interfejs za pristup bazama podataka
* automatska dokumentacija (slično javadoc)
* mogućnost i funkcionalnog i proceduralnog programiranja
* liberalna licenca (GNU ili po želji)

Rubi je potpuno objektno orijentisan. Sve promenljive su objekti, što važi, za razliku od DŽave (*java*), i za primitivne tipove.

## Primeri
Klasični „Pozdrav Svetu":

```ruby
puts "Hello World!"
```


## Literatura
* David Thomas, Andrew Hunt: *Programmieren mit Ruby.* Addison-Wesley, 15. Februar 2002, 
* R. R. Höppel: *Der Ruby-Atlas.* Springer Verlag, November 2005, 
* Armin Röhrl, Stefan Schmiedl, Clemens Wyss: *Programmieren mit Ruby.* dpunkt.verlag GmbH, März 2002,  (Onlineversion )
* Dirk Engel, Klaus Spreckelsen: *Ruby. Das Einsteigerseminar.* vmi-Buch AG & Co. KG, September 2002, 
* David Thomas, Chad Fowler, Andrew Hunt: *Programming Ruby.* Pragmatic Bookshelf, 15. Oktober 2004,  (engl., überarbeitete Version des ersten Buches unter Berücksichtigung der Änderungen zur Ruby Version 1.8)
* Hal Fulton: *The Ruby Way.* Sams, Dezember 2001,  (Programmbeispiele online Verfügbar)
* Maik Schmidt: *Enterprise Integration with Ruby* Pragmatic Bookshelf, 30. April 2006, 

## Vanjske veze

* Zvanična strana
* Opširna dokumentacija 
* Ruby Garden
* Jednostavni uvod u Rubi 
* SelfRuby 
* Full Ruby on Rails Tutorial