Ruby on Rails? Ano, Prosím!

Publikováno 22.07.2007 v kategorii Rails. Trvalý odkaz permalink. RSS kanál pro sledování komentářů.

Centi mi doporučil k přečtení článek dxg o frameworku Ruby on Rais a jeho nevýhodách a hrozbách. Tímto bych si dovolil s ním krapet polemizovat.

Základní chybu v přístupu autora vidím v tom, že si vybral jeden rys jazyka Ruby a snaží se jím charakterizovat celý framework Rais. Tento přístup volí většina odpůrců Rails. Nakonec mě docela rozesmálo, že sám autor píše v PHP a přitom přiznává, že PHP nevěří, ale je to dobrý jazyk. Rozporuplné.

Jak už bylo zmíněno v diskusi na rubyonrails.cz, k problému dynamičnosti Ruby existují dva přístupy. Buď se na to díváte jako na slabinu jazyka nebo naopak jako na výhodu. Každý programátor to vidí jinak. Pokusím se nyní obhájit názor, že se jedná o výhodu.

Ruby má oproti statickým jazykům tu výhodu, že neexistuje rozdíl mezi „compile-time“ (přesněji spíše write-time, protože mluvíme o interpretovaném jazyku) a „run-time“. U statickýh jazyků jsme zvyklí na to, že jakmile je třída jednou nadefinovaná, již ji nejde „zvenku“ měnit. Toto v Ruby neplatí. Metody a třídy lze za běhu upravovat, měnit a přidávat. Dáte-li takovýto nástroj od ruky běžnému PHPkáři nebo jakémukoli programátorovi, který nevidí dva řádky kódu dopředu, stane se přesně ta katastrofa, kterou dxg popisuje. To je jako když dáte člověku pistoli, rozumný člověk ví, že když vystřelí do davu pravděpodobně někoho zabije nebo minimálně zraní, malé dítě neznalé širších souvislostí a následků použití střelné zbraně, to pravděpodobně bude chtít vyzkoušet a stane se něco špatného. Stejně je to i u programátorů. Důvod proč Ruby asi nikdy nepřeválcuje Javu, PHP a .NET je ten, že nutí programátora přemýšlet jinak, v širších souvislostech a to hlavně pokud se jedná o využívání dynamických aspektů jazyka. Tím ovšem nechci říct, že žádný Rails programátor nikdy nešlápne vedle, pokud se ale drží konvencí Rails a hlavně důkladně testuje, je na chybu upozorněn a může si ji uvědomit a hlavně opravit. Ještě se mi nestalo, aby si navzájem nějaké komponenty pod rukama měnili metody v základních třídách, Ruby programátoři holt musí vědět co dělají a jaké mají jejich akce následky. Pokud už něco zásadního změní je slušné to udělat bezkonfliktně a upozornit.

Na závěr bych se ještě pozastavil u kódu, který dxg používá jako příklad. Konkrétně u věty:

„i v PHP lze podobný přístup napodobit … Když si nadefinuji odpovídající třídy, mohu v PHP také psát: …“

Ano! Když si nadefinuješ odpovídající třídy. Ale to já nechci dělat. Já chci efektivně programovat aplikaci a ne definovat pomocné třídy abych mohl efektivně programovat.

Důvod proč mám framework Rails tak rád, je že dynamičnosti Ruby plně, ale přitom ohleduplně, využívá a přidává další koncepty jako je DRY, Convention over Configuration, integrovaná podpora pro TDD a Agilní přístupy všeobecně, REST a další. Samozřejmě, většiny techto rysů se dá dosáhnout v každém prostředí, na Rails mám rád to, že vše přichází “out-of-the-box”, pěkně otestované a zintegrované dohromady. Pokud si dxg myslí, že Rails představují pro progmátora vězení, dobře mu tak, pro mě jsou Rails luxusní hotel, kde se můžu soustředit na svoji práci (vývoj aplikace) a prostředí mi vychází maximálně vstříc.

(Poznámka: Ruby on Rails zbožňuju a psát v Rails je pro mě radost. Normálně pracuji v Javě a dá se to snést. Taky už jsem vyzkoušel pár jazyků, ale do Ruby jsem se skutečně zamiloval)

 

Komentáře

 
Zatím zde není žádný komentář.
 

Přidej komentář

 
Povinná pole jsou vyznačena tučně.