Hlavní navigace

Názor k článku Kniha Začínáme programovat v Ruby on Rails od Jan Minárik - Dovolím si oponovat hned vašemu výchozímu prohlášení -...

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 9. 2007 14:43

    Jan Minárik
    Dovolím si oponovat hned vašemu výchozímu prohlášení - rozhodně mi nepřipadá, že PHP je vhodnou volbou pro malé projekty, ani že JSP pro velké.

    Vzhledem ke "convention over configuration" koncepci jsou naopak Rails velice výhodné pro malé projekty. Pod tímto termínem se skrývá vlastnost, kdy každý prvek či modul má nějaké výchozí chování. Zjednodušeně řečeno: pokud explicitně nenapíšu ve volání žádné parametry, přesto Rails budou fungovat v jakémsi "default" režimu. Pokud chci, aby se daný prvek choval jinak, zavolám ho s parametry.

    V Rails jde tento přístup až do extrému, kdy jsou přímo některé funkce implicitně i volány, ačkoliv programátor ono volání nenapsal. Tento přístup v důsledku umožňuje celou aplikaci naprogramovat v několika řádcích. Rails za programátora v tomto případě řeší téměř vše důležité a pokud "malým projektem" nemyslíte Hello world aplikaci, rozhodně vám v Rails půjde rychleji od ruky než v PHP.

    Ve větších projektech, kdy je programátorem požadováno zcela specifické chování a obvykle se stejně programují vlastní knihovny a rozhraní, už tato vlastnost tolik nepomůže. Jisté ale je, že vývoj v posledních několika letech ukázal, že pokud web, tak určitě ne Java. Pro efektivní vývoj velkých projektů je totiž nutné, aby jazyk umožňoval dynamické konstrukce, např. generování tříd na základě externích dat - např. struktury databáze, vizuálního návrháře, UML diagramu, apod (zjednodušeně řečeno, odborníci snad prominou :).

    V Javě se této vlastnosti dosahuje čtením velkého množství XML konfiguračních souborů a dynamického vytváření instancí na základě přečtených názvů tříd. Tento přístup ale zcela popírá filosofii Javy jako striktně staticky typového jazyka a vytváří jakýsi hybrid, kdy v části aplikace se můžete spolehnout na compile-time kontrolu kódu a v části se jazyk chová jako Ruby či Python, ovšem s tím velkým rozdílem, že kód je zapsán v XML. Tedy programátor kód nemůže ani rozumně číst, natož ladit, nefunguje správně kontrola typů, volání, refaktoring, code-completion, apod.

    Pro velké projekty bych proto doporučil nějaký ověřený, objektově orientovaný dynamický jazyk s co nejúspornější syntaxí. Tomuto popisu odpovídá jak Ruby, tak Python. Rozdíly mezi těmito jazyky jsou dost přeceňované a jsou spíš o osobních preferencích a vkusu než o nějakém jednoznačném soudu, že jeden je lepší než druhý. Naše firma si vybrala jako vývojový nástroj Ruby on Rails zejména proto, že komunita vývojářů kolem Rails je řádově větší než kolem jakéhokoliv frameworku v Pythonu, což je samozřejmě velká výhoda - ať už v oblasti dostupných modulů, programátorů, podpory anebo školení.