K Dartu: Proč JavaScript už vyhrál?
Nálepky:
Provokativní komentář od Petera-Paula Kocha vyšel na blogu Quirksmode. „Proč Google Dart coby ‚strukturovaný jazyk pro webové programování‘ shoří? Protože JavaScript už tady je, na několika miliardách přístrojů!“ Peter-Paul Koch tuto myšlenku v článku rozvíjí a vysvětluje, kde jsou hlavní úskalí při rozšiřování Dartu. Největší problém vidí ve velké fragmentaci trhu s prohlížeči (k desktopovým si připočtěte také smartfonové). I když mají prohlížeče od Google cca 20% podíl, bude to dostatečné? Koch připomíná osud VBScriptu, kterému ani jednoznačná dominance IE nepomohla…
… díky JS knihovnám typu JQuery se sal kód multiplatformní a přehlednější. JS není ideální, ale buďme rádi za to co je.
Nemá pravdu
Imho ppk je mimo, a If you want to work with the web, learn JavaScript. If you don’t want to learn JavaScript, stay the hell away from the web. je spíš křeč než co jiného :-)
Třeba má jen jinou definici „work with the web“ než ty :-) Stejně to je tak, že skoro každej kdo se motá okolo webu js umí nebo má po ruce někoho, kdo to udělá za něj.
Preco s tym nesuhlasite, ved je to pravda? JS je alebo sa z neho stava jeden z najdolezitejsich prog. jazykov sveta. Ak ma dnes bezny PHPckar alebo koder HTML hodnotu X a nezaujima sa o svoj rozvoj (ucit sa kodit hrube klienty v JS, alebo aspon animacie a DOM manipulation v jQuery), jeho hodnota bude v uz blizkej buducnosti X – Y. Trend je jasne vidiet – coraz viac logiky sa tlaci do kliento (mame tu MVC v JS), backend sa upozaduje iba ako storage. A storage nie je web.
IMHO JavaScript už se vyčerpal, a ačkoliv je skvěle rozšiřitelný (hmm, budu muset večer napsat pár mailů ohledně delegace a rozšiřitelné syntaxe na mailing list), to množství kiksů v něm už nikoho nebaví. Je to jasně vidět na vzrůstající popularitě CoffeeScriptu, jenže to je taky pěkný bastl.
Tak urobia dart to js compiler. JS má peknú filozofiu ale má pár problémov, Dart ale vôbec nerieši problémy ktoré JS má a tým najväčším problémom je jeho ukecaná syntax – vychádzajúca zo zastaralého jazyka C. Ja ako programátor som prirodzene lenivý a nebaví ma robiť zbytočné veci, nebaví písať zátvorky a stredníky – 10 riadkov kódu namiesto jedného, preto ostávam pri Coffee Scripte.
Ten „kompilátor“ urobili. Hello World sa natiahne na 17000 riadkov :-)
Ach jo… Proc si myslite, ze to casem nebude fungovat podobne jako GWT? Na jednu stranu tu mame fanatiky, kteri odmitaji cokoliv spojeneho s JavaScriptem, na druhe strane tu mame fanatiky, kteri odmitaji cokoliv jineho, nez JavaScript. Jdu zvracet…
Lidi, kteří argumentují těmi směšnými 17 tisíci řádky, o Dartu nejspíš vůbec nic neví.
Gilad třeba dneska doslova napsal: As for how well Dart-to-Javascript compilation will work: rest assured it will perform as well as handwritten JS, and will be a lot easier to write. You will be able to deploy it *everywhere*.
Tohle by mohlo být ale eso Dartu… pokud bude jednou ten převod na js dobrý, byl by z Dartu ‚ten jazyk ve kterém se programuje, než se to převede do javascriptu‘.
C má ukecanou syntaxi, protože používá závorky a středníky? No to je teda síla…
Ad „Proč Google Dart coby ‚strukturovaný jazyk pro webové programování‘ shoří? Protože JavaScript už tady je, na několika miliardách přístrojů!“
Viz Dart: Technical Overview:
You will be able to run Dart code in several ways: 1) Translate Dart code to JavaScript that can run in any modern browser: Chrome, Safari 5+, and Firefox 4+ (more browser support coming shortly). 2) … 3) …
Tím pádem mi přijde kritika založená na „miliardách přístrojích s JavaScriptem“ trochu nesmyslná. Vždyť třeba takový CoffeeScript se taky kompiluje do JS. A musím říct, že Dart se mi jako jazyk líbí výrazně víc. A věřím, že se dočkáme nativních implementací různých jazyků v prohlížečích a nebude tu pořád jen ten JS – a do té doby se do něj prostě bude kompilovat.
Základ toho jazyka by měl být navržen tak, aby bylo možné stanovit jednoznačná transformační pravidla, pomocí kterých by bylo možné ten jazyk převést na čistý kód v JS, bez nutnosti použít jakoukoliv specifickou knihovní funkci pro ten nově navržený jazyk. Například specifické typové kontroly by prováděl jen kompilátor a program by se ladil na speciálním prohlížeči, který by disponoval nativním kompilátorem tohoto ideálního jazyka. Tato záměrná dvoukolejnost by vytvořila tlak na zavádění nativního kompilátoru i do dalších prohlížečů. Ovšem přeložený program by běžel i bez toho.
Asi takhle. Podle mne má cenu diskutovat o tom, zda daná technologie/praktika pomáhá vytvářet „vendor lock-in“ u zákazníků a vývojářů, nebo ne. Většina closed source technologíí na webu (od MS, Adobe, …) slouží z velké míry právě k vytvoření závislosti na jejich dodavateli. Tzn. jde o snahu si co nejvíc (a pokuď možno navždy) podmanit co největší množství zákazníků. Jestliže je ale technologie open source, nebo poskytuje dobrou specifikaci a není nad síly konkurence/zákazníků případně danou věc také vyvinout a udržovat, potom nechápu, proč se kolem toho furt vedou nějaké žabomyší války.
Konkrétně Dart momentálně považuji za jednu z nejlepších věci, co jsem za poslední rok viděl. Díval jsem se do zdrojáků, četl specifikaci, atd. Škodí někomu, že existuje open-source implementace VM a překladače do JavaScriptu nového jazyka Dart? Proč nenechat brouka žít?
Jasně, Dart, ale mnou popsaná kritéria splňuje :-) Jen místo nějakého runtimu, či virtuálního stroje cca 1700 řádků na „hello word“ by to chtělo trochu změnit přístup a překladač lépe namapovat na přirozené vlastnosti JS. Tedy aby Main() { print „Hello Word!“ } se překompilovalo do function Main() { document.write(„Hello Word“); } Totéž třeba implementace tříd, aby se využily prototypy javascriptu, a případné typové kontroly by dělal kompilátor. Pak by naopak rozšíření JS bylo výhodou pro šíření Dartu.
Podle toho překladu, jak jsem se díval, je tam přifařeno hooooodně co stím „Hello world“ nemá co dělat. Takže já bych to jako totální selhání neviděl. Spíše ukázkou aplikaci, že to lze. Bych to spíše viděl, že udělají druhé průchod(nazvanou třeba optimalizací) a bude to krátký zdroják + že nikdo nebude mít problém s překlopením starých .js skriptů. Takže šanci má, přeci jenom Android, když byl vydán podle „taky komentátorů“ z odborných časáků atd. něměl v tento rok už vůbec existovat….
Ano, mě je taky sympatický, ale psychologické bariéry z množství JS kódu runtimu mohou být značné. Znám systém, který zabilo „dlouhé“ natahování vývojového prostředí (IDE) a to v situaci, kdy se přecházelo z DOSu na Windows. Dnes Eclipse startuje 3x déle, a nikomu to nevadí.
Mapování tříd na prototypy není přímočaré.
Nedá mi to, abych neuvedl na pravou míru tradiční mýtus o closed source technologii od Adobe – míněno jistě Flash. Zrovna včera jste se mohli na Zdrojáku dočíst o tom, kterak můžete v této _open_source_ technologii vyvíjet aplikace pro mobilní platformy, aniž byste Adobe zaplatili jedinou korunu za jakýkoliv nástroj, který není open source.
A k samotnému Dartu – také se mi moc líbí (výše uvedené argumenty nechápu a už byly v tého diskusi vyvráceny – možnost překladu z Dartu do JS, alternativně k nativní implementaci…). Jazyk mi připomíná ECMAScript 4 (ne přímo syntaxí, ale koncepcí a účelem), na kterém se před lety zainteresované strany bohužel neshodly. Napodruhé to snad vyjde, když to vzala do ruky jedna silná firma, což považuju za dobré.