Přejít k navigační liště

Zdroják » Různé » Dart je mrtev… nebo není?

Dart je mrtev… nebo není?

Články Různé

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.

Nálepky:

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!

Komentáře

Subscribe
Upozornit na
guest
27 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Milan Křepelka

Bohužel, prvotní nadšení -> zabiják bastlsktiptu vystřídalo vystřízlivění. To že ho používá autor, tedy google, bych viděl jako základ. Ale tam to asi tak skončilo nebo se nějaké pozitivní zprávy, v tomto smyslu, ztratily v éteru.

Milan Křepelka

Tak nebylo myšleno. Napsal jsem to nedobře. Naopak, jako jazyk se mi Dart líbí velmi. Nicméně jsem čekal že se strhne lavina projektů. Firmy budou Dartaře hledat, požadovat. Velké a zajímavé frameworky se začnou reimplementovat v Dartu apod.
Čekal jsem, že google začne Dart citelněji tlačit a Dart začně bastlkript vytlačovat. Byl jsem lehce naivní, zázrak se nestal.

Naděje umírá poslední.

Martin

Když jsem viděl možnosti typovaného psaní, z mého pohledu čitelnější a pevnější syntaxe, zaradoval jsem se.

Bohužel můj pokus o použití skončil špatně, asi jsem někde něco přehlédl, ale jednoduchý testovací prográmek (funkčně odpovídající použití JQuery – manipulace s DOM) běžel v dartiu skvěle, ale po překladu (všechny nástroje ve výchozí konfiguraci) do JS a spuštění v chrome na mne vychlil chyby a nefungoval. Zkoumat chyby v přeloženém JS se mi opravdu nechtělo a po několika stejně dopadnuvších pokusech jsem se pokorně vrátil k netypovanému JS…

Bohužel…

Milan Křepelka

Bohužel, přes prvopočáteční nadšení – zabiják bastlskriptu – se zázrak nekoná. Veliká škoda. Uvidíme jak dopadne webassembly.

DW

“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.

takze ak niekto zatlka hrebik spravne kladivom tak potrebuje dalsieho typka ktory to vie s kliestami?

inak povedane, na nastroji naozaj zalezi, je vzdy na skodu veci ako clovek vie jeden jediny jazyk a snazi sa ho aplikovat univerzalne na kazdu ulohu…

KarelI

Takovéto články mi vždy připomenou všechny ty projekty napsané v ruby, protože vznikaly na podzim 2005 a to bylo zrovna ruby on rails strašně in. Dneska je ovšem ta výhoda, že když ústřední evangelista se zbylými dvěma členy místní komunity odlétne budovat nový hype, tak se dá projekt transpilovat do javascriptu :-)

Milan Křepelka

Toto je doba která masochistům přeje.

Petr

Dart podle me podkopava Javascriptova revoluce z roku 2015.
Javascript se z bastlu stal skvelym jazykem.
A React je dalsi revoluce – par genialnich napadu a razem je zabava psat frontend.
A diky Flow a modularite ty typy uz taky moc nechybi.
Je fakt, ze v Dartu jsem (krome helloworldu) nic nenapsal.., ale ono uz me prave ani nic nenuti…

Milan Křepelka

Kdy že se stal z bastlu skvělým jazykem? Já jestli mi něco neuniko.

Petr

Asi uniklo – EcmaScript 2015
https://babeljs.io/learn-es2015/

Martin

Tak zrovna reactu jsem vůbec na chuť nepřišel…

saboteurspk

Pochybuju, ze by v pripade Angularu 2 o neco Dart prisel. Google se totiz v tomto pripade nepoucil z konkurence a nezvladl vyrobit neco snadno pouzitelneho. A vlna nabozenstvi jako u Angular.js uz neprijde.

MiKu

Já Dart sleduji už dlouhou, ale ačkoli určitě neumře jak se zdálo okolo roku 2015, proti Javascript světu nemá moc co nabídnout. Argument o Javistech zvyklých na statické typování přecházejících z GWT pro velké projekty neobstojí, od toho je tu Typescript, případně Flow od Facebooku a pak spoustu dalších (Kotlin, Ceylon, Haxe), které cílí také na velké projekty ale navíc ještě umožňují full stack vývoj včetně backendu na serveru. Dart VM bohužel v oblasti server side jednoznačně nestíhá a server side Dartu není pro Google priorita, nedávno to jasně řekli, takže Dart je v podstatě opravdu jen pro frontend.
Na frontendu existuje v podstatě jen AngularDart což je proti tomu co máme k dispozici v JS/TS je dost málo.
Uvidíme jak to dopadne s tím novým mobilním OS, to by mohlo být jediné, co by mohlo Dart trochu nakopnout, Flutter vypadá dobře. Ale bude to určitě ještě trvat, už takhle jim to trvá okolo 2 let a zatím je to pořád ve stadiu alfa.

MiKu

Ad Typescript, ano, ale ta vrstva „přelakování“ je tak dostatečná že to povětšinou postačuje k tomu aby to vyhovělo těm, co jim chybí typová kontrola a další vlastnosti, které compiler Typescriptu zajistí. Ostatně právě ten Angular je v napsaný v Typescriptu, což je tedy opravdu paradox, jak jste sám zmínil.

Ad. jiné frameworky pro Dart – ano pár jich je, zrovna ten react vypadá pěkně, ale je to pořád žalostně málo proti tomu, co je k dispozici v JS potažmo v TS a nepřímo z toho plyne další věc. Dělat wrappery pro nativní JS knihovny pro Dart není nic extra pohodlného ve srovnání třeba s tím Typescriptem, viz. třeba ta zmíněná firebase. Pro Typescript stačí napsat typové definice, aby jste to měl s pohodlím typové kontroly, ale obejdete se i bez nich.

Dart je fajn, ale jak jsem řekl – na full stack nestačí – slabá podpora od Google, na frontend kromě Angularu také žádná sláva. Takže za mě Dart pokud chci Angular, nebo pokud jsem dobrý i v JS a budu si psát různé wrappery. Pak také pokud jsem fanda Google a pokud věřím budoucnosti Flutteru pro mobilní aplikace, potažmo tomu jejich mikrokernel OS.

palox

Mam rad striktne typove funkcionalne jazyky… ale prave na frontende mi to pride ako zbytocna komplikacia navyse. Pouzival som nejaky cas aj TS, ale nakoniec som sa vratil k babelu… Tie typy su tam ajtak dolepene len tak aby sa nepovedalo. Keby to malo normalnu type inference a nemusel som tam tie typy pisat rucne tak budiz, ale takto mi to pride len ako obmedzovanie slobody. Dart som neskusal, mozno sa nan niekedy pozriem, ale ak sa to paci javistom tak to asi nebude moja salka kavy :D

Petr

Zarytej Javista nikdy nemůže psát dobrý JavaScript kód. A nepomůžou tomu ani přelakované jazyky typu Dart nebo TypeScript. A nazývat JS bastlskript je další způsob, jak se zaseknout a neporozumět totuto velmi specifickému jazyku ;)

Pro začátek vám tedy doporučuji shlédnout video „Zen of JavaScript“, které u mě navždy změnilo přístup k tomuto jazyku: https://www.youtube.com/watch?v=QHs55-5FzgA

ivoszz

Nemá smysl spekulovat, jestli je doopravdy už mrtvý, nebo se daří jej stále ještě resuscitovat. Pro mne jako potencionálního uživatele je rozhodující, co mi to přinese. A ať se koukám kamkoliv, moc toho nevidím.

Pro typický frontend jazyk je důležitá podpora knihoven a velikost komunity. Že v tom Google napsal Adwords mne zas tolik nezajímá. Takže asi začnu hledat nějaký awesome list. Pohled na tento je dost žalostný. A to tam ještě nejvíc položek má sekce server. Navíc ve mně okamžitě vzklíčí podezření, že se na něj dostalo všechno, co splnilo alespoň elementární požadavky.

Z obecného hlediska je zajímavé porovnat Dart a Go. Oba vznikly v Google zhruba v podobnou dobu. Oba vznikly primárně pro vnitřní potřebu. Dá se říci, že pro rozšíření Dartu má Google větší páky (podíl Chrome na trhu), přesto se Dart mimo Google moc nerozšířil a v současnosti živoří. Paradoxně Go se v určitém segmentu významně ujalo a dnešním marketingovým nástrojem Go jsou z velké většiny projekty nemající s Googlem nic společného. Dokud Dart nezíská nějakého velkého propagátora mimo Google, tak se podle mne situace nezlepší. A od Androidu bych moc neočekával, pro Android lze dnes vyvíjet v čemkoliv. A pokud by to Google chtěl omezit jen na Dart, tak by se to rovnalo sebevraždě.

ivoszz

Pro upřesnění, proti Dartu nic nemám a nemám rád komentáře typu v jazyku X mi chybí vlastnosti Y a Z z jazyka W. Tak ať používá jazyk W a je spokojený. :)

Takže pokud bych měl zmínit nějaké knihovny, tak by mi určitě chyběly věci pro grafy, explicitně pak D3. V databázi jsem našel několik pokusů (jednotky), zpravidla 1-2 roky staré a typicky ve verzích 0.0.1. Jediné, co asi stojí za řeč je googlovský adaptér pro charted, ale i tam je napsáno, že je spravován jen lehce. Pokud se proti tomu podívám na tu linkovanou kolekci TypeScript definic, pro D3 a její submoduly je tam 43 balíků definic a nic staršího než 2 měsíce.

Jestli si můžu na závěr zaspekulovat :), jak už někdo zmínil přede mnou, ES2015 a následující rozšíření značně změnily svět Javascriptu. Potřeba hledat něco jiného dramaticky klesla (kde je dnes CoffeeScript). Javascript (případně TypeScript) je svébytný jazyk a tak je k němu potřeba přistupovat. Chápu, že to ne každému vyhovuje, zvláště s faktickým monopolem Javascriptu na frontendu. Ale dokud tady nebude rozumně použitelné a podporované Webassembly, není podle mne moc prostoru pro nějakou další revoluci.

Dafe Šimonek

Mě Dart svět přinesl produktivitu a radost z vývoje v porovnání se světem Javascriptu, Javy (hlavně 7-) a dokonce i Scaly. Většina věcí mi v Dartu funguje na první dobrou, nemusím skoro nic konfigurovat, knihovny se mi dobře používají, dependency management pěkný, development cyklus ok…a padesát dalších dobrých věcí co jsem zapomněl, Nedělal jsem v Dartu zatím nic velkého, ale na co jsem šáhl na frontend nebo i backend straně tak prostě fičelo a používalo se hezky – snad s výjimkou Isolates (paralelismus), ty drhly.

KarelI

Možná bude autora zajímat, že podle tohoto průzkumu uživatelů SO Dart skoro nikdo nepoužívá, skoro nikdo nechce a z těch co v tom píší, tak ho většina nemá ráda. Vypadá to, že je s ním něco špatně.

http://stackoverflow.com/insights/survey/2017/#most-loved-dreaded-and-wanted

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.