Ruby: Open source exot z Japonska

Objektově orientovaný skriptovací jazyk Ruby kombinuje zajímavé možnosti svých konkurentů a těší se rostoucí oblib...


Objektově orientovaný skriptovací jazyk Ruby kombinuje zajímavé možnosti svých
konkurentů a těší se rostoucí oblibě.
Použití skriptovacích jazyků už není omezeno pouze na řešení menších úloh, své
uplatnění dnes nacházejí i ve větších projektech. Kolem Perlu a Pythonu se už
vytvořily velké komunity uživatelů a programátorů a své příznivce si pozvolna
získává i zatím poněkud exotický jazyk označovaný Ruby.
Vývoj Ruby začal přibližně před 11 lety v Japonsku, když se Yukihiro "Matz"
Matsumoto pokoušel najít ideální programovací jazyk, který by vyhovoval jeho
potřebám. Protože žádný tehdejší jazyk jeho představy nesplňoval, vybral si ty
nejlepší vlastnosti z různých jazyků (mezi jinými Perl, Smalltalk, Eiffel,
Java, Python) a sloučil je do jediného, obecně objektově orientovaného a
dynamicky typizovaného (typy jsou přiřazeny nikoliv proměnným, ale jejich
hodnotám) skriptovacího jazyka. V Japonsku si Ruby rychle získal popularitu a
dnes je zde oblíbenější než například Python.
Pro programátora využívajícího objektově orientovaný přístup je případný
přestup na jazyk Ruby relativně jednoduchý téměř jistě se setká s elementy,
které jsou mu známé už odjinud. Pro úplného nováčka se náročnost spojená s jeho
učením drží v rozumných mezích, neboť Ruby sleduje v maximální míře tzv.
princip nejmenšího překvapení (Principle of Least Surprise). Matsumoto dával
pozor i na to, aby jazyk zůstal konzistentní.
Ruby je se svým systémem licencování podobným BSD volně dostupný také pro
komerční nasazení a může být přeložen pomocí ANSI C překladače pro většinu
platforem. Dnes je nasazován i v mnoha velkých firmách a institucích mezi
jinými i společnosti jako Intel, Lucent, Motorola, Amazon, Google, Credit
Suisse či NASA realizují s pomocí Ruby jak prvotní vzorové programy, tak i
přímo řešení pro produkční nasazení. Spektrum aplikací sahá od jednoduchých
objednávkových systémů pro dodávání obědů nasazených ve firemním intranetu přes
komponenty ERP až po vysoce komplexní statistické modelování pro aplikace k
řízení rizik v oblasti financí.

Půjčování odjinud
V jazyce Ruby neexistují žádné primitivní datové typy jako třeba v Javě,
veškerá data jsou skutečnými objekty. Analogií ke Smalltalku je robustní, ale
dynamická typizace: Proměnné nemají žádný typ, odkazují na objekty, které jsou
vždy instancemi nějaké třídy.
Ve srovnání se Smalltalkem je ale syntaxe bohatší, takže definice tříd a metod,
jakož i většina řídicích struktur má "normální" podobu. Syntaxe je řádkově
orientovaná, jako oddělovač uvnitř řádky je ale dovolen také středník. Z Perlu
pak pocházejí přímo do Ruby integrované regulární výrazy. V kompaktní formě
zápisu se dobře hodí pro jednotlivé a krátké skripty. V komplexnějších výrazech
ale mohou být používány ve své objektově orientované formě a vkládají se potom
bezešvým způsobem do jazykového schématu.
Aby bylo možné uniknout obtížím s vícenásobnou dědičností, používá Ruby jenom
jednoduchou hierarchii dědičnosti. Nicméně vedle tříd existují také moduly
označované mixins, v nichž jsou definovány metody, které lze připojit
(přimixovat) k dané třídě. Vestavěný modul Enumerable například obsahuje
specifikace předdefinovaných metod pro vyhledávání (s možností třídění)
používané metodou each (ta představuje tzv. obecný iterátor). Když je tedy
třeba tyto metody využít v dané třídě, stačí do ní implementovat metodu each a
připojit modul Enumerable.
Dále lze pracovat i s bloky kódu. Každé metodě v Ruby je možné předat jako
parametr blok kódu, jehož vyhodnocení je samo předáno vyvolané metodě. V Ruby
je implementováno také množství návrhových vzorů, které představují abstrakci
ustálených postupů řešení různých problémů.
Méně často využívaná, ale přesto užitečná je možnost vytvářet třídy typu
Singleton (s jedinou instancí), jejíž metody jsou k dispozici pouze pro jediný
objekt. Kromě toho mohou být podobně jako ve Smalltalku vždy prováděny změny v
existujících třídách, takže jsou vždy možná dodatečná rozšíření. Dalšími
třešničkami na dortu jsou kvalitní mechanismy pro introspekci, propracované
zpracování výjimek, možnosti metaprogramování a možnost tvorby tzv.
continuation objektů, reprezentujících určité místo v programu, k němuž se lze
kdykoliv vrátit.

Vnější systémy
Ruby je implementován v jazyce C a disponuje velmi dobrými možnostmi pro
připojení jeho knihoven. Také umístění Ruby skriptu v C nebo C++ programu lze
realizovat bez větší námahy.
Pro nasazení v kooperaci s Javou existují dvě varianty: Zaprvé je k dispozici
javová implementace Ruby s názvem JRuby (analogicky, jako je tomu v případě
jazyka Jython), zadruhé pak programátor Mauricio Fernandez vyvinul rozhraní
rjni pro rozhraní JNI (Java Native Interface), a tak může Ruby využívat i
javové třídy a objekty.
Také k platformě .Net je k dispozici potřebný most, a to v podobě Ruby/.Net
Bridge. Díky němu může být Ruby použit i v rámci .Net projektů, ale na druhé
straně mohou také Ruby skripty pracovat s .Net komponentami. Na adrese
www.saltypickle.com/RubyDotNet/32 je k dispozici tzv. Evaluator, což je podle
vysvětlení autorů pracovní prostředí (podobné tomu, které je využíváno u
Smalltalku) pro interaktivní vývoj na platformě .Net, a WebEvaluator, který je
volán prostřednictvím webového serveru.
Pokud ovšem neexistují žádné pádné důvody, není nutné "sahat" do vnějších
systémů. Ačkoliv umí Ruby pomocí knihovny Amrita generovat dynamické HTML
stránky na bázi šablon, není oblast aplikací limitovaná jen na toto pole
působnosti typické pro PHP. Aplikační server nebo obchodní logiku je možné v
Ruby naprogramovat právě tak dobře jako v Javě, i když rychlost provádění
interpretovaného Ruby skriptu se nevyrovná kompilovanému javovému nebo C++
programu. Ruby však dovoluje rychle lokalizovat úzké hrdlo ovlivňující rychlost
provádění skriptu a provést optimalizaci často pomocí jen krátkého úseku kódu
například v C.
Ruby je skriptovací jazyk, s nímž se dají realizovat jak malé, tak i rozsáhlé
programy. Například Dave Thomas, známý zastánce tohoto jazyka, uvádí, že se mu
za šest týdnů povedlo v termínu a při splnění nákladového rámce vytvořit
program v rozsahu 26 tisíc řádků, který byl v následujících 18 měsících
rozšířen na více než 38 tisíc řádků, aniž by došlo k problémům. Podle jeho
mínění by stejný rozsah funkcí takového programu vyžadoval v Javě zhruba
čtyřikrát tolik kódu.

Webové zdroje pro Ruby
Od konce loňského roku je k dispozici nová verze Ruby 1.8 (www.ruby-lang.org) a
v současnosti se na dalším vývoji jazyka podílí přibližně 40 programátorů.
Jako zdroj pro rozšíření a přídavné knihovny jsou k dispozici dvě výchozí
centrály. V Ruby Application Archivu (raa.ruby-lang.org) jsou už několik let
soustředěny různé projekty, jež jsou uspořádané podle různých kategorií a jsou
k dispozici ke stažení. Před několika měsíci vznikl na webu SourceForge ještě
jeho protějšek s názvem RubyForge (www.rubyforge.org), který byl vytvořen
speciálně pro open souce Ruby projekty. Pro většinu současných standardních
úloh (SOAP, XML, YAML, CORBA, databázová rozhraní, webové aplikační servery)
existují knihovny s různými možnostmi nasazení a stupni vyspělosti.
RubyGarden (www.rubygarden.org) poslouží jako výchozí bod pro novinky a
všeobecnou výměnu informací týkajících se Ruby. Na webu www.ruby-doc.org je
shromažďována stále se rozrůstající on-line dokumentace. V poslední době se
jako standard pro popis zdrojového kódu v Ruby prosazuje RDoc
(rdoc.sourceforge.net), který je dnes využíván také pro zdokumentování
standardních knihoven.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.