Dart je mrtev… nebo není?

Zajímalo by mě, jestli programovací jazyky můžou mít něco jako “near death experience”. Před kompilátorem vám proběhnou všechny vaše commity, už vidíte světlo na konci repozitáře, když tu náhle vás někdo chytne za středník a stáhne zpátky.

V posledním půl roce jsem se do Dartu hodně opřel. AngularDart jsem si vybral jako optimální nástroj pro tvorbu UI administrací k našim cloudovým backendům (představujte si CMS). Většině vývojářů, kteří se mnou o Dartu mluví, se ten jazyk líbí. Ale vždy padá v podstatě stejný dotaz (cituji doslovně):

Dart je tu už nějaký pátek, proč není více známý/rozšířený… je tu nějaký háček, nebo přímo hák? Nějak jsem nic moc nenašel, kromě toho, že nemá velkou komunitu, což je ale následek a nějak mi uniká ta příčina.

Tak si skočte pro popcorn, já vám to všechno povím. Je to taková sada PR přehmatů a nešťastných okolností. Berte to jako těžce subjektivní pohled, nejsou to data, která by bylo v mé moci obstarat a žádné insider informace nemám :-)

Dart VM do každého prohlížeče

Nevím jestli si vzpomínáte, ale úplně v počátcích Google hlásal, že Dart VM bude v každém prohlížeči. Já tedy nevím, jestli tomu opravdu věřili, ale kdo by donutil Microsoft nebo Apple, aby to udělali? Tomu se přece ani věřit nedalo. Ale když se v tom směru nic nedělo a samotný Chrome nad tím mávl rukou, pro spoustu vývojářů to znamenalo: “Aha, tak to je po Dartu”. Že má fenomenální compiler do JS, to už v tom šumu zaniklo.

Angular 2 – TypeScript

Další rána přišla také přímo z Google. Angular tým se rozhodl Angular 2 vyvíjet primárně v TypeScriptu. Nás Dartisty chlácholili, že je to proto, že z TypeScriptu se jim bude lépe generovat Dart verze než opačným směrem. Ale když ani sám Google na Dart nesází, pak logicky: “Aha, tak to je po Dartu”.

Rostoucí popularita JavaScriptu

Když v roce 2009 vyšel Node.js a rozvířil zatuchlé server side programování, nakopnul i popularitu JavaScriptu. Nakonec, proč byste se měli učit víc jazyků, když vám stačí jeden a ještě dostanete izomorfní aplikaci v ceně? Připočtěte k tomu nulovou vstupní bariéru (nemusíte si instalovat vůbec nic) a už to jede.

Nakonec se i ti nejzarytější staticky typovaní Javisti zlomí a začnou v JavaScriptu psát, protože nemají alternativu. Dart je mrtvý, to ví každý. (A pak skřípou zuby, že this není this, ale spíš whatever).

Funkcionální programování

Nejde ani o funkcionální programování, ale spíš o to, že se rozšířil takový… názor, že JavaScript je dobrý funkcionální jazyk, takže pokud jsem in, píšu v JavaScriptu. Dart je objektový – takže mrtvý. Ale to už jsou opravdu jablka a hrušky… Dart je funkcionální stejně jako JavaScript. Můžete napsat komplexní aplikaci bez toho, že byste napsali jediný objekt, ale Clojure to není. Ale to není ani JavaScript.

Na jazyku nezáleží

“Hele mladej, pokud seš dobrej, můžeš psát v čemkoliv. Na jazyku nezáleží. Óóóómmmmm …” Nevím, který guru to řekl první, ale není to pravda. Tady máte hřebík, tady kleště a teď ho sem zatlučte. Óóóómmmmm… Na nástroji záleží, ne že ne.

Takže… je Dart mrtvý?

Neo: Am I dead?
Morpheus: Far from it.
(Matrix)

Přiznám se bez mučení, že na přelomu 2015 a 2016 jsem už měl docela nahnáno. Angular 2 v TypeScriptu, o Polymer Dart se staral jeden člověk a že bych si chtěl všechno psát sám od píky jen pro Dartovy modrý letky, to asi ne. Naštěstí byl rok 2016 natřískaný pozitivními zprávami.

Angular 2 pro Dart se oddělil a jako AngularDart se vydal po vlastní ose. Teď mám k dispozici mainstreamový frontend framework – nativně, v Dartu. O JavaScript nemusím zavadit (ano, jsem zarytý, staticky typovaný Javista).

Vedle toho začal Google intenzivně vyvíjet platformově nezávislý framework pro tvorbu mobilních aplikací. A není to nějaký okrajový projekt, dělá na tom dost lidí. To nevypadá jako “předsmrtná křeč”. Mimochodem – co je tohle za potvůrku? A proč má UI v Dartu?

Hodně se zlepšila interoperabilita s JavaScriptem. Pokud má vaše vytoužená JS knihovna TypeScript definici, můžete si snadno vygenerovat adaptér pro Dart. A pokud nemá, nebo není definice dostatečně přesná, můžete si adaptér napsat v ruce (jako to udělala Jana Moudrá pro Firebase).

Ale především – Google přepsal AdWords a AdSense. Zahodil (většinu) GWT a nahradil to AngularDartem. Teď tečou Dartem miliardy dolarů a Dart aplikace v podstatě dotují (skoro) všechno ostatní co Google dělá. A taková aplikace není něco, s čím se dá bezhlavě experimentovat.

Takže nakonec – jestli Dart “žije” nebo ne, na tom už vlastně nezáleží. Jasně, že bych byl rád, kdyby byla v ČR větší komunita a měl jsem to s kým probrat u piva. Ale o budoucnost Dartu se už neobávám. Vypadá to, že ještě chvíli žít bude.

A vy – zarytí, staticky typovaní Javisti, ano vy, se svými Wickety, Vaadiny a GWTčky – pořád ještě můžete naskočit, použitelná alternativa JavaScriptu existuje, nenechte si namluvit, že ne. Zdart!

Technologický šéf digitální agentury Multimedia atelier, zakladatel backendového studia fnx.io a Google Developer Expert na Dart a Google Cloud platform. Rád hledí vpřed, s modrou zdí na pozadí.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 27

Přehled komentářů

Milan Křepelka Bohužel, zdá se, že je
Tomáš Zvěřina Re: Bohužel, zdá se, že je
Milan Křepelka Re: Bohužel, zdá se, že je
Tomáš Zvěřina Re: Bohužel, zdá se, že je
Martin Re: Bohužel, zdá se, že je
Tomáš Zvěřina Re: Bohužel, zdá se, že je
Milan Křepelka Ale je mrtvý
DW Na nastroji zalezi
Tomáš Zvěřina Re: Na nastroji zalezi
KarelI
Milan Křepelka Re:
Petr
Milan Křepelka Re:
Petr Re:
Martin Re:
saboteurspk Angular 2
MiKu Bude pořád na okraji
Tomáš Zvěřina Re: Bude pořád na okraji
MiKu Re: Bude pořád na okraji
Tomáš Zvěřina Re: Bude pořád na okraji
palox
Petr Zarytí neJavaScriptisti
ivoszz
Tomáš Zvěřina Re:
ivoszz Re:
Dafe Šimonek Re:
KarelI
Zdroj: https://www.zdrojak.cz/?p=19716