neděle 1. března 2009

Univerzální jazyk, děkuji nechci

Stále více sa utvrzuji v tom, že nelze navrhnout a uspět s jedním univerzálním jazykem použitelným pro všechny programové domény a cílová prostředí. Java jako jazyk si prošel dlouhým obdobím vývoje a nebojím se jej označit za jazyk zralý. Dlouhou dobu mluvím o tom, že snahy o jeho rozšíření v konečném důsledku spíše uškodí jednak ztrátou zpětné kompatibility a jednak zvýšením komplexnosti. Za snahou rozšíření jazyku stojí dva důvody, tím prvním je nepochybně snaha držet prst na tepu doby a tím druhým urputná snaha udělat z Javy univerzální multiúčelový jazyk.

Zkusme na chvilku přijmout fakt, že se z Javy stane multiúčelový jazyk. Budeme pomocí něho psát aplikace pro mobilní zařízení, serverové či desktopové aplikace a nebo v něm popisovat front end nějaké bohaté internetové aplikace (Rich Internet Appplication). Stop. My už to vlastně děláme. Ne všude se ovšem Java ukazuje jako nejvhodnější jazyk. Má svoje omezení a limitace. Ty jsou dané koncepcí a návrhem jazyku z jeho raných dob. Když se rozhlédneme kolem sebe, uvidíme zde jazyky, které jsou v dané oblasti minimálně agilnější a lépe plní potřeby vývojářů. Co s naším jazykem? Můžeme jej dál ohýbat podle módních trendů potřeb s rizikem, že výsledkem bude zvláštní kompilát nebo myšlenku univerzálního multiúčelového jazyku opustit.

Jakkoliv je myšlenka multiúčelovho jazyku více než lákavá, jeho realizace je hodně na vážkách. Nevěřím, že to může prakticky fungovat. Jako daleko bližší vnímám koncept více jazyku integrovaných na úrovni virtuálního stroje/platformy jako je Java či .NET. Ve chvíli kdy píšu kód, jehož zpracování musí být efektivně paralelizovatelné, pak šáhnu pravděpodobně po jazyku, který bude pro tyto účely navržen od počátku např. Erlang. To samé platí i pro další aplikační domény, kde bych měl volit jazyk podle účelu, ke kterému byl navržen. Výhodou je vyšší produktivita a efektivnější vývoj. Myšlenka správného jazyku na správnou věc je zastoupena i v prosazujícím se trendu doménově specifických jazyků (DSL).

Vice jazykový koncept ovšem přináší úskalí, na který doplatil již prastarý Babylón. Pověstné zmatení jazyků je jednou z věcí, kterou je nutné mít stále na zřeteli. Nestačí umět jeden jediný univerzálnímu mulitfunkčnímu jazyk, ale najednou jazyků více. Na tento argument pravděpodobně narazíte u svých manažerů a nelze jej jen tak shodit ze stolu. Proto je důležité vnímatm na jaké úrovni jsou jazyky integrované. Virtuální stroj je skvělé místo, protože umožňuje vzájemnou kombinaci na prověřeném podvozku. Ten sám o sobě zaručuje, že principy fungování základy zůstaly kvalitní. Třešinkou na dortu je, pokud zde existuje podobnost nebo příbuznost jazyků jako například Java a Groovy.