Nástup JavaScript-u do role nejpoužívanějšího jazyka je věcí blízké budoucnosti. Tvrdil jsem to již v první části článku, kde jsem uvedl pravděpodobný scénář nástupu JavaScriptu, jako jazyka č. 1 nejbližší dekády. Abych toto tvrzení podpořil, řekneme si, jaká vodítka tomu nejvíce nasvědčují.
Moderní svět webových aplikací se masivně vrhnul na používání slovního spojení "cloud computing". Slovní spojení, které znamená něco konkrétního a zároveň pro mnohé neznamená zhola nic. Všechny velké aplikace dnes běží tzv. "v cloudu" a softwarové firmy hrnou nové nástroje, které přímo pobízí menší firmy nebo vývojáře k přechodu na tento trend. Jak tedy z přechodu na cloud může těžit zrovna JavaScript?
Cloud computing totiž ve své podstatě znamená vysouvání fyzického umístnění aplikace mimo společnost, která aplikaci provozuje. Z takto vysunuté aplikace se stává jenom další aplikace běžící na pronajatých HW zdrojích a musí proto soupeřit o tyto zdroje jak s ostatními aplikacemi, tak i sama se sebou. Nastává tedy problém, který je obecně popisován jako C10K problém.
C10K problém řeší otázku: „Jak je možné obsloužit 10000 klientů za pomocí jednoho serveru, a to s co možná nejnižším zatížením serveru?" Standardní jazyky, pracující na principu postupného zpracování „nudle kódu“ totiž obsazují zdroje a blokují tím vykonávání jiného kódu, který by mezi tím mohl tyto zdroje využít. Třeba kód v PHP, který na vygenerování stránky potřebuje provést 5 databázových dotazů, musí 5x čekat než je mu vrácen výsledek dotazu z databáze, a až po dokončení zpracovávání může být obsloužen další požadavek.
Samozřejmě existuje mnoho technik, které se tyto problémy snaží eliminovat a to jak na nižších, tak i na vyšších úrovních systému. Tady má JavaScript velkou výhodu. Jazyk JavaScript je totiž postavený na zpracování událostí. Událostí může být kliknutí na stránce, nebo zmenšení okna. Ze své podstaty je ale JavaScript navržen tak, aby dokázal zpracovávat libovolný typ události, takže úplně stejně může být událostí třeba dokončení databázové nebo diskové operace. Tím pádem skript nemusí nutně čekat na dokončení operace a jiný požadavek mezi tím může být obsloužen.
A právě v případě, kdy se snažíme obsloužit 10000 požadavků, může mít tento odlišný přístup veliký vliv na celkovou rychlost aplikace. Nechápejte mě špatně. Stejný postup (neblokující IO operace) je možné vytvořit téměř v libovolném jazyku. Tady je to ale v základním návrhu jazyka, proto je využití tohoto přístupu mnohem snadnější a přehlednější. Stejně tak je možné argumentovat, že existují i další jazyky, které jsou postaveny na principu zpracovávání událostí, ale zase zde vstupují do hry další faktory, které hrají ve prospěch JavaScriptu.
JavaScript má ale jeden nedostatek. A to fakt, že byl doteď považován jenom za podpůrný jazyk a tudíž mu chyběla vysoce optimalizovaná implementace. A tady vstupuje do hry společnost Google. Ta pochopila důležitost JavaScriptu při budoucím rozvoji webového prostředí a vytvořila vysokovýkonný JavaScriptový engine V8, který za běhu překládá JavaScript do optimalizovaného strojového kódu. Google totiž nutně potřeboval nástroj, který by mu umožnil vytvořit jejich klíčové služby jako Google Docs, Google Maps, Gmail nebo Google Calendar.
Již v předešlém díle jsme řekli, že jedním z faktorů masového rozšíření jazyka je silná organizace nebo celosvětově rozšířená platforma. Google by mohl být právě tou velkou společností, která bude takovým šiřitelem slávy JavaScriptu. Mimo vytvoření vzpomínaného enginu se Google taky stal propagátorem jednoho z top JavaScriptovývch frameworků jQuery, který sami oficiálně poskytují na svých stránkách vždy v nejaktuálnější verzi. A aby mohli vynaloženou práci plně zúročit, vytvořili také specifickou implementaci JavaScriptu určenou pro serverovou stranu nazvanou Node.js. Tím pokryli veškeré potřeby pro vývoj rychlých webových aplikací, obzvláště těch, určených pro cloudové nasazení.
K masovému rozšíření JavaScriptu přispěly ještě další faktory. Každý, kdo se ve své praxi potkal s jazykem JavaScript mi dá za pravdu, že začít psát nějaké jednoduché funkce nebo kusy kódu v tomto jazyku je velice jednoduché. O to spíš, když ovládáte základy syntaxe jiných jazyků z kategorie nejpoužívanějších: C, C++ nebo Javy. Je ale třeba říct, že "C-čkovský" přístup psaní v JavaScriptu mu tak úplně nesedí. Popravdě lze konstatovat, že JavaScript, proti jeho obrovskému nasazení a využívaní, je nejvíce nepochopený jazyk na světě. Douglas Crockford, senior inženýr v Yahoo tvrdí, že JavaScritp má mnohem blíže k LISP-u, nežli k jazyku C. Má chování připomínající umělou inteligenci ve smyslu, že konkrétní podnět vyvolá nějakou reakci, ale samotná posloupnost vyvolání těchto podnětů není pevně daná a vlastně ani důležitá. Nicméně fakt, že JavaScript se umí chovat oběma způsoby a přizpůsobit se tak úrovni programátorových zkušeností je další z vlastností, které mu umožnili se tak rychle rozšířit.
Můžeme se tedy zeptat na dvě jednoduché otázky:
A s jeho stoupající oblibou se snad postupně vyřeší i mnoho ze spomínaných neduhů. Příkladem může být jazyk CoffeeScript, který je jakýmsi mini jazykem následně překládaným do jazyka JavaScript. Zápisy v CoffeeScriptu jsou ještě o něco čitelnější a výrazně přehlednější než v samotném JavaScriptu a zároveň je to pod tím vším pořád ten samý skvělý JavaScript tak, jak jej známe.