Dart – Čo? Prečo?

V poslednej dobe prudko narástla dôležitosť JavaScriptu na webe a vývojári čoraz bolestivejšie narážajú na jeho nedostatky. Riešením možno bude postupné obohacovanie JavaScriptu o chýbajúcu funkcionalitu a plátanie najväčších problémov. Možno nie. Možno to bude Dart.

Seriál: Úvod do Dartu (9 dílů)

  1. Dart – Čo? Prečo? 2.8.2013
  2. Dart – Úvod do jazyka 23.8.2013
  3. Dart – Ponorme sa hlbšie 6.9.2013
  4. Dart – v DOMe 19.9.2013
  5. Dart – Futures 4.10.2013
  6. Dart ­– Streams 17.10.2013
  7. Dart – Používame JavaScript 1.11.2013
  8. Dart Typesystem 19.11.2013
  9. Dart – Neznesiteľná ľahkosť asynchrónneho bytia 2.12.2013

História

Keď pred osemnástimi rokmi JavaScript v Netscape vznikal, nik si nepredstavoval, že by v ňom niekto mohol vyvinúť textový procesor, tabuľkový kalkulátor alebo emailového klienta. JavaScript na projekty tohto rozsahu nebol stavaný a vývoj v ňom prináša viacero problémov.

Podivuhodná syntax. Dvojité a trojité porovnanie, zvláštne sa správajúce this, automatické vkladanie bodkočiarky a mnoho ďalších.

Nezvyklá dedičnosť. Väčšina používaných jazykov pozná koncept triedy a klasické dedenie. JavaScript má svoju vlastnú prototypovú dedičnosť. Väčšina vývojárov preferuje klasiku a mnoho JavaScriptových frameworkov pridáva svoj vlastný spôsob vytvárania tried a dedičnosti.

Chýbajúce knižnice. Takmer všetky používané jazyky poznajú v nejakej forme knižnice a umožňujú rozdeliť kód do viacerých nezávislých celkov. V JavaScripte si na tento účel treba napísať vlastný preprocesor.

Žiadna štandardná knižnica. Okrem Google Closure Library nepoznám žiadnu javascriptovú knižnicu, ktorá by vývojárovi poskytovala všetky štandardné využívané funkcionality ako napríklad matematiku, kódovanie, prácu s DOM, kryptografiu, dátové štruktúry. Miesto toho existuje tisícka knižníc, z ktorých každá rieši nejaký malý zlomok popísaného. Čaro JavaScriptového programovania je aj manažovanie pätnástich nezávislých knižníc.

Nekompatibilita medzi prehliadačmi. Buď nikdy nepoužívať natívne API prehliadačov a spoľahnúť sa na medzivrstvy ako jQuery, alebo mať sakramentsky dobrý prehľad v tom, čo ktorý prehliadač podporuje.

Nízky výkon. Napriek nedávnym pokrokom, JavaScript stále nie je tak výkonný, ako by si vývojári a užívatelia priali.

Dart homepage

Prichádza Dart

Odpoveďou Google na trápenia bežného vývojára je Dart – opensource platforma určená na vývoj HTML5 webových aplikácií. Dart nie je len nový jazyk, sú to tiež knižnice, editor, virtual machine (VM), prehliadač, ktorý dokáže spúšťať Dart natívne (Dartium) a kompilátor do javascriptu (dart2js).

Ako taký program v Darte vyzerá, ilustruje nasledovná ukážka.

import 'dart:html';

main() {
  var button = new ButtonElement();
  button..text = 'Stlač ma!'
        ..onClick.listen((e) => window.alert('Výborne!'));
  query('body').children.add(button);
}

Klasická céčková syntax príliš nezaujme, no pozrime sa, čo nám Dart prináša.

Už žiadne nekompatibility prehliadačov. Dart sa kompiluje do javascritpu a otázku nekompatibility rôznych verzií prehliadačov rieši za vás dart2js. Podporované sú však len dostatočne moderné prehliadače, pri IE to je verzia 9 a vyššie. V budúcnosti existujú plány na podporu Dart VM v Chrome, čo prinesie niekoľkonásobné zrýchlenie aplikácií.

Dart je konvenčný. Nájdeme v ňom triedy, dedičnosť a syntax, na ktoré sme zvyknutí z ostatných jazykov.

Znovupoužiteľnosť kódu. Knižnice je možné spravovať a šíriť pomocou vlastného package managera (pub). Pre mňa osobne jedna z kľúčových vecí, neznášam spravovanie zložitých závislostí.

Kvalitné štandardné knižnice. Dart – to sú aj knižnice na prácu s dátovými štruktúrami, matematika, kódovanie URL, kryptografia, práca s dátumami, DOM a množstvo ďalších.

Možnosť použiť existujúci JavaScriptový kód. Pomocou knižnice js.dart je možné používať už existujúci JavaScriptový kód. To je veľmi silná vlastnosť, nakoľko pre JavaScript dnes existuje oveľa viac knižníc, ako pre Dart.

Dart prichádza s IDE. Upravený Eclipse so všetkým potrebným, debugging, refactoring, dopĺňanie kódu, upozorňovanie na potenciálne chyby.

Dart je mix statického a dynamického jazyka. Nepodporuje pridávanie atribútov a metód objektom za behu, no je možné obísť to implementáciou metódy noSuchMethod. Podporuje typy, no nie sú povinné. Dôvodom takto navrhnutého jazyka je optimalizácia na rýchlosť. Statický kód sa dá lepšie optimalizovať na výkon, no je dobré mať možnosť využívať aj dynamické vlastnosti.

Dart má dobrú podporu pre asynchronicitu a multivláknovosť. Prichádza s futures, ktoré reprezentujú výsledok spočítaný v budúcnosti. Vďaka futures je možné silne asynchrónny kód zapísať prehľadne. Dartové isolates zas umožňujú písať bezpečný multivláknový kód.

Kritika

Na Dart sa znieslo aj množstvo kritiky. Výčitajú sa mu hlavne jeho polodynamickosť/polostatickosť, prílišná podobnosť s Javou, zavádzanie niektorých kontroverzných coding patterns priamo do jazyka (statické factories) a ďalšie. Záujemci si môžu prečítať (síce už trochu zastaralý, Dart sa odvtedy dosť vyvinul) článok od Rafaël Garcia-Suarez Why Dart is not the language of the future.

Dart pre mnohých nikdy nebude najobľúbenejší jazyk, no oproti JavaScriptu ho vnímam ako obrovský skok vpred.

V ďalšom dieli sa zoznámime s editorom, prostredím, Dartiom a napíšeme svoj prvý Hello world.

S kamošmi som založil VacuumLabs, špecializujeme sa na webové aplikácie. Momentálne frčíme na Pythone a pokukujeme po Darte. Nikdy neodmietam pozvanie na dobré české pivo.

Komentáře: 24

Přehled komentářů

GM
Re:
Vojtěch Semecký Re:
Naith Re:
vaclav.sir Re:
Radek Miček
Hmm
diverman skoda
jirkakosek Re: skoda
Pavel Stehule Re: skoda
diverman Re: skoda
diverman Re: skoda
okbob Re: skoda
tacoberu Konkrétně
blizz Dart
Pavel Dvořák
mczolko Maličké otevření očí
Samuel Hapák Re: Maličké otevření očí
Ivan Nový Re: Maličké otevření očí
Mirek Re: Maličké otevření očí
stanislav.vasko Syntax a psaní v jazyce
vaclav.sir Re: Syntax a psaní v jazyce
stanislav.vasko Re: Syntax a psaní v jazyce
vaclav.sir Re: Syntax a psaní v jazyce
Zdroj: https://www.zdrojak.cz/?p=9297