Ruby (programovací jazyk)

Ruby je interpretovaný skriptovací programovací jazyk. Vďaka svojmu jednoduchému syntaxu je pomerne ľahký na naučenie, predsa však dostatočne výkonný, aby dokázal konkurovať známejším jazykom ako je Python a Perl. Je plne objektovo orientovaný – všetko v Ruby je objekt.

História 
Tvorcom Ruby je jediný človek – Yukihiro Matsumoto, známy taktiež pod prezývkou Matz. Ten ako zástanca objektovo orientovaného programovania hľadal v prvej polovici 90. rokov skriptovací jazyk, ktorý by mu vyhovoval. Ale Perl mu pripadal v tej dobe málo výkonný a Python zase nebol natoľko objektový, ako by chcel. A tak sa rozhodol, že vytvorí vlastný jazyk. Práce na ňom začali v roku 1993, prvá verzia bola uverejnená v roku 1995. Matz svoj jazyk pomenoval podľa rubínu – anglicky Ruby.

Dnes je Ruby asi najširšie používaný v zemi svojho pôvodu – v Japonsku. Rozšíreniu do sveta dlhú dobu bránila absencia kvalitnej dokumentácie v anglickom jazyku. Dnes už je však anglických materiálov celkom dosť. V súčasnej dobe záujem o Ruby prudko rastie vďaka úspechu webového frameworku Ruby on Rails.

Oblasti použitia 
Rovnako ako iné skriptovacie jazyky, je oblasť použitia Ruby pomerne široká. Asi najčastejšie využitie nájde na platforme Linux (a iných systémoch typu Unix) pri písaní skriptov pre uľahčenie každodennej práce. Vďaka svojej prehľadnej syntaxi a striktnej objektovosti sa hodí i k písaniu veľkých projektov, CGI skriptov, ba dokonca GUI aplikácií (GTK2, TK, Qt, fxRuby atd.). Keďže podporuje regulárne výrazy, je Ruby vhodným jazykom pre spracovanie textových súborov.

Výhody a nevýhody 
Výhody:

 interpretovaný jazyk a z toho plynúce výhody (odpadá proces kompilácie, zmeny v zdrojovom kóde sú ihneď viditeľné)
 prenosnosť zdrojového kódu medzi platformami (MS Windows, GNU/Linux, Solaris, …)
 možnosť spustenia v interaktívnom režime (príkazy sú prevádzané okamžite pri svojom zápise, podporuje dopĺňanie mien)
 jednoduchý a ľahko naučiteľný syntax
 plná podpora objektovo orientovaného programovania – všetko je objekt (je možné však písať i klasické štruktúrované programy)
 dynamické dátové typy
 regulárne výrazy
 modularita zdrojových kódov
 možnosť písať GUI alebo webové aplikácie

Nevýhody:

 nižšia rýchlosť oproti kompilovaným jazykom (interpretovaný jazyk je prekladaný až za behu, navyše veľká časť knižníc je napísaná rovnako v Ruby)
 závislosť na interpretri
 nedostatok slovenskej dokumentácie
 menej rozšírený jazyk oproti napríklad Perlu

Ukážka kódu 
Pre predstavu, ako Ruby vyzerá, ukážme si niekoľko príkladov. Pre začiatok tradičný program hello world:
puts "Ahoj Svet!"

Tento program je často používaný na dôkaz toho ako je kód v Ruby čitateľný:
5.times { puts "ahoj!" }
Tento program päťkrát vypíše "ahoj!". Doslovne by sa dal brať 5-krát (times znamená slovensky krát) 
vypíš ahoj (puts je skratka z put string – "daj reťazec" (na štandardný výstup)).

Tento príklad je ale stále tak jednoduchý, že nám o štruktúre nič nepovie. Nasledujúci príklad prezradí viac:
def fib(n)
	a, b = 0, 1
	while b < n
		print b, " "
		a, b = b, a+b
	end
end

fib(100)

Tu je definícia metódy fib, ktorá vypíše začiatok Fibonacciho postupnosti. Na poslednom riadku je táto metóda volaná s parametrom 100, čím hovoríme, že chceme vypísať postupnosť všetkých čísel Fibonacciho postupnosti menších než 100. Výstup programu je nasledujúci:

 1 1 2 3 5 8 13 21 34 55 89

Keďže je Ruby plne objektový jazyk, ukážme i objekty:
class Dievca
	def initialize(meno, vek)
		@meno = meno
		@vek = vek
	end
	def to_s
		"Meno:\t#{@meno}\nVek:\t#{@vek}"
	end
	attr_reader :meno, :vek
end

moje_dievca = Dievca.new('Eva', 18)
puts moje_dievca.to_s
puts moje_dievca.meno
puts moje_dievca.vek

Po spustení bude na výstupe:

 Meno:  Eva
 Vek:    18
 Eva
 18

V Ruby je úplne všetko objekt (i triedy sú objekty typu Class!). Napríklad 
1 + 2

je vlastne zavolanie metódy + objektu 1 s argumentom 2:
1.+(2)

Naše dva objekty 1 i 2 sú objekty triedy Fixnum, ktorá v Ruby slúži k uchovávaniu celých čísel. Veľké celé čísla sú objekty triedy Bignum, ktorých teoretická hranica je veľkosť operačnej pamäte.

Externé odkazy 
 http://ruby-lang.org – oficiálna stránka jazyka
 http://www.ruby-doc.org/ – Ruby dokumentačný projekt
 http://rubyforge.org/ – stránky projektov v Ruby
 http://www.rubycentral.com/book/  – online kniha Programming Ruby
 Full Ruby on Rails Tutorial  (anglicky)
 Euruko 2008 – videozáznamy prednášok z European Ruby Conference 2008 v Prahe na avc-cvut.cz

Programovacie jazyky