úterý 5. června 2012

Koncept hybridního jazyku

Pojem hybridní jazyk jsem zavedl sám pro sebe jako označení pro jazyky, které umožňují vytvářet klientskou i serverovou část aplikace jedním a tím samým dialektem. Schválně používám slovo dialekt, protože jazyk v tomto kontextu dalece přesahuje to co si pod tímto slovem představujeme. Hybridní jazyk je pro mě dialekt (popis chování programu) kompilátor/interpretr, který umožňuje adaptování dialektu na dané běhové prostředí představované serverem, mobilním telefonem, tabletem či webovým prohlížečem. Budoucnost vývoje může patřit právě jednomu z hybridních jazyků, které vznikají a nebo vzniknou. Proč by budoucnost měla patřit právě hybridním jazykům? Pokud se rozhlédneme kolem, pak v nově vznikajících jazycích, určených pro vývoj vícevrstvých aplikací, hraje zásadní roli právě fakt, jednoho dialektu, který se používá pro serverovou i klientskou část aplikace. Tato snaha je velmi akcelerovaná nástupem mobilních zařízení. Zároveň se nejedná o úlohu, která by byla jednoduchá. Tvůrci hybridních jazyků se musí srovnat s několika zásadními překážkami

Neprogramujeme ve vzduchoprázdnu.

Kód který vytváříme a navrhujeme vychází z konkrétních předpokladů o běhovém prostředí. Pokud budete mít kód napsaný v jazyku Java a budete mít k dispozici hybridní jazyk, kde bude Java jako jazyk jeho dialektem. Pak by měl být tento kód přenositelný na server i klienta. Díky specifikům jednotlivých zařízení a omezením běhových prostředí to už nebude tak jednoduché. Prvním problémem bude konkurenční přístup. Pokud kód vznikal v klientském prostředí, nebude pravděpodobně úplně připravený na běh ve vysoce konkurenčním prostředí serveru. V tomhle případě by musel hybridní jazyk, zřejmě jeho runtime, zařídit bezpečnou exekuci ve smyslu různých race conditions.

Stejně jako musí být respektován kontext z pohledu běhu programu, musí být respektovány prostředky, které cílové zařízení nabízí. Odstrašujícím příkladem byla technologie Swing, která selhala mimo jiné z toho důvodu, že nevypadala nikdy a ani se nechovala jako nativní aplikace. Hybridní jazyk bude muset podporovat chytré rozhraní, přes které půjdou využívat nativní funkce. Alespoň ze začátku by přes to samé rozhraní měla být možná práce s existujícími knihovnami. Klíčová bude integrace s knihovnami poskytujícími grafické rozhraní.

Dynamický mix

Dlouhou dobu jsem si myslel, že tím hybridním jazykem bude JavaScript. Stále více indícií mě vede k tomu, že to JavaScript být nemůže. Hlavním a zásadním nedostatkem je udržovatelnost kódu a zde mám obavy, že se to bude týkat jakéhokoliv dynamického jazyku. Na druhou stranu může být tím vhodným běhovým prostředím, do kterého se bude kompilovat či interpretovat hybridní jazyk. To mě přivádí k myšlence, že onen dialekt hybridního jazyka by měl mít rysy dynamických i staticky typovaných jazyků. Pro práci s daty se totiž hodí daleko více dynamický přístup. Mimochodem je to oblast, kde staticky typované jazyky selhávají viz úskalí jakékoliv mapování mezi reprezentací dat (XML, JSON, RDBMS) a jejich objektovou reprezentací.

Zrod odspodu

Hybridní jazyk se zřejmě zrodí, a nebo se již zrodil a my jsme to jenom nezaregistrovali, za úplně jiným účelem a k jeho adopci dojde mimoděk. Trochu mi to připomíná vznik a rozšíření Javy, která byla původně navržena a určena pro interaktivní ovládání spotřební elektroniky a až mnohem později se svezla s nástupem internetu. Nemyslím si, že může nastat situace kdy někdo přijde a řekne: mám hybridní jazyk a ten se stane průmyslovým standardem. To v současném vysoce fragmentovaném prostředí různých prohlížečů, zařízení a serverových technologií nelze. Spíše se bude jednat o postupnou evoluci. Moc nevěřím tomu, ale zároveň nevylučuji, že by to mohla být technologie, kterou prosadí někdo z velkých softwarových gigantů (Google, Microsoft, Oracle, IBM). Vede mě k tomu fakt, že ty jsou mezi sebou zaklíněni v různých patentových sporech a předsudcích a právních válkách. Jako příklad ilustrující tento klinč, řečeno boxerskou terminologií, by nám mohl posloužit jazyk Dart z dílny Google. Ony se samozřejmě na vlně hybridních jazyků svezou a přispějí k ní.

Alternativy

Mohou zde být alternativy k hybridnímu jazyku? Ano mohou za předpokladu, že stávají fragmentace při vývoji nebude nadále růst. Pak by mohlo dojít pouze k částečné transformaci současných technologií. Tahle evoluce má svoje limity, které mohou být právě s rostoucí fragmentací koncových zařízení a klientů rychle dosaženy.

Závěr

V tomto článku jsem se pokusil shrnout několik myšlenek, které mě vedou k přesvědčení, že vznikne a nebo již vzniknul hybridní jazyk. Zároveň jsem se snažil pojmenovat atributy jeho vzniku a základní charakteristiku. Prosím neberte tento článek jako projekci věcí budoucích, ale spíše jako myšlenkový experiment založený na aktuálních poznatcích.