A Ruby egy alapjaitól kezdve objektum-orientált nyelv, mely ráadásul szkriptnyelv is egyben. A szerző elképzelése az volt, hogy egy olyan egyszerű, gyorsan tanulható OOP-nyelvet alkosson, amely ráadásul hatékony rendszer-adminisztrációs eszköz és CGI programok fejlesztéséhez is jó választás. Sok tekintetben hasonlít a Perl nyelvhez, de annak sokszor rejtélyes szintaktikáját sikerült lényegesen leegyszerűsíteni - ugyanakkor rugalmassága, ami pl. a reguláris kifejezések használatából és a rengeteg hasznos műveletből adódott, szerencsére megmaradt. Hasonlóságokat mutat más szkriptnyelvekkel, mint pl. az awk-val, a Pythonnal vagy a Scheammel, ugyanakkor a szintaktikai szabályokon az Eiffel hatása is érezhető, kivételek kezelésében pedig a Javában megszokott lehetőségekkel élhetünk. Egy egyszerű példa a nyelvek hasonlóságára:
Ruby:
def fib(n)
if n<2
n
else
fib(n - 2) + fib(n - 1)
end
end
print(fib(20), "\n");
Python:
def fib(n):
if n < 2:
return n
else:
return fib(n - 2) + fib(n - 1)
print fib(20)
Perl:
sub fib {
my($n)=@_;
if ($n < 2) {
return $n;
}
else {
return fib($n - 2) + fib($n - 1);
}
}
print fib(20), "\n";
AWK:
function fib(n) {
if ( n<2 ) return n; else return fib(n-2) + fib(n-1)
}
BEGIN { print fib(20); }
Scheme:
(define (fib n)
(if (< n 2)
n
(+ (fib (- n 2)) (fib (- n 1)))))
(display (fib 20))
(newline)
(quit)
UNIX shell:
fib () {
if test "$1" -lt 2; then
echo "$1"
else
expr `fib \`expr "$1" - 2\`` + `fib \`expr "$1" - 1\``
fi
}
fib 20
Tcl vagy Expect:
proc fib {n} {
if {$n < 2} {
return $n
} else {
return [expr [fib [expr $n - 2]] + [fib [expr $n - 1]]]
}
}
puts "[fib 20]\n"
PHP:
function fib($n)
{
if ($n < 2):
return $n;
else:
return fib($n - 2) + fib($n - 1);
endif;
}
print fib(20) . "\n";
Pike:
int fib(int n)
{
if (n < 2)
return n;
else
return fib(n - 2) + fib(n - 1);
}
int main()
{
write(sprintf("%d\n", fib(20)));
}
A Ruby tehát interpretált nyelv. Az interpretert egyszerűen Rubynak hívják és pl. a Perl-hez hasonlóan a programot tartalmazó file-t paraméterként kell átadni az interpreternek Unix környezetben. A programokat .rb kiterjesztésű file-okban szokás elhelyezni. Unixban természetesen a programfájl elején szokásos #!/.../bin/env ruby alakú értelmező megnevezés is használható. Az interpretert Windowsra is elkészítették már.
A nyelv megismerését megnehezíti, hogy a nyelv szerzője szerint a legjobb dokumentáció maga a forráskód, ezért a jelenlegi dokumentáció meglehetősen szűkszavú, sőt sok helyen egyszerűen hiányos.
Linux alatt a ruby és ruby-manual csomagok telepítésével érdemes kezdeni az ismerkedést, de sok más standard csomag is létezik, pl. az rdoc, mely tartalmaz egy dokumentáció-generáló programot a javadoc vagy a perldoc mintájára. Vannak könyvtárak Ruby-adatbázisokhoz kezeléséhez, SSL-támogatáshoz és sok máshoz. A nyelv honlapja: http://www.ruby-lang.org/.
Azon túl, hogy a Ruby a rengeteg programkönyvtárat leszámítva a Perl nyelv funkcionalitásával rendelkezik, van néhány hasznos és kényelmes funkciója, ami használhatóságát nagyban előmozdítja.
A Perl-hez hasonlóan a parancssorban is megadhatunk rövid szkripteket -e szkript formában. A -p és -n kapcsolókkal kiegészítve kényelmesen írhatunk olyan programot, ami a standard input sorain végigiterálva hajtódik végre, azaz a szkriptből ezekkel a kapcsolókkal megspórolhatjuk a ciklus szervezéséhez szükséges kódolást. Ezek a kis programok jól illeszkednek más programokhoz Unix pipe-okon keresztül. A -p annyival több a -n kapcsolónál, hogy a feldolgozott sort a ciklusmag végén meg is jeleníti. Ezzel egy printet is megspórolhatunk a parancssorból. Parancssorban definiált szkriptek írásánál még hasznos lehet, hogy parancssori kapcsolókkal beállítható az újsor-karakter egy reguláris kifejezésre, ill. opcióként megadható, milyen modulokat kell betölteni a programunk futtatásához. Az –X kapcsolót akkor használhatjuk, ha a szkriptünket tartalmazó forrásfájl elején nem a program szerves részét képező elemek is vannak, mint pl. e-mail-header vagy magyarázószöveg. Ez a kapcsoló ugyanis arra utasítja az interpretert, hogy hagyja figyelmen kívül a file elejét, egészen a ^#!.*ruby reguláris kifejezésre illeszkedő sorig. A -T az idegen forrásból származó vagy CGI-ként futó programok biztonsági kapcsolója (hasonlóan a Perl-hez).