Google Dart přichází
Google představil Dart, jazyk, který by měl přiblížit programování pro webový frontend znalostem programátorů, odchovaných C++/Javou. Přináší třídy, rozhraní, knihovny, typové anotace a další věci obvyklé v OOP jazycích, a svým zápisem připomíná C-like jazyky. Hello world s použitím třídy lze zapsat takto:
class HelloDartTest { static testMain() { print("Hello, Darter!"); } } main() { HelloDartTest.testMain(); }
Překladač Dart může z tohoto kódu vytvořit JavaScriptovou reprezentaci, nebo jej může spouštět na serverovém VM.
Pokud tento kód přeložíte do JS bez dalších optimalizací, zjistíte, že výsledkem je 17259 řádků JS kódu. (Při snaze tento kód minifikovat pomocí online JS nástrojů se prohlížeč Firefox 7.0.1 po několika sekundách poroučel s hlášením o pádu – pozn.red.)
Zajímavá diskuse probíhá pod odkázaným příkladem – jednak se dozvíte, jak správně provést následné optimalizace a eliminace mrtvého kódu (výše uvedený překlad obsahuje velké množství knihovního kódu, který nebude použit), a pokud po ránu hledáte spíš rozptýlení, naleznete řadu obrázků a komentářů, které více či méně vtipně glosují číslovku 17259 („Achievment unlocked – 17259 lines Hello World“ či „Představte si, co by Dart dokázal ve 34528 řádcích? – Napsal by Hello World dvakrát!“)
Je celkom zaujimave si prejst tie riadky okom. Samozrejme ze ten hello world je na riadku 17192, vsetko ostatne je dart framework nad js, presne v style „JavaScript is Assembly Language for the Web“ http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebSematicMarkupIsDeadCleanVsMachinecodedHTML.aspx
Asi si na to budeme musiet zvyknut, aj ked samozrejme mohol base kod google oddelit do separatnej js kniznice a zminimalizovat ho, ale who cares?
Přesně tak, zbytek je framework a nástroje, které umí vyhodit mrtvý kód, ho osekají asi na 3k řádků. Na druhou stranu, jak kdosi v diskusi velmi trefně poznamenal: „Dart je jazyk na psaní aplikací, ne na psaní Hello world!“ Ostatně analogie s přeloženým „hello world“ v C se přímo nabízí: „Cože? Sto KB na něco, co v assembleru zabere 24 bajtů?“
To je trochu nadstřelené, řekl bych. Schválně jsem si to teď zkusil. HelloWorld v C: zdroják 93 B, výsledná binárka 7131 B (bez optimalizací).
Bohužel to výkonu moc nepomůže http://jsperf.com/dart-hello-world-test-with-optimize/9
Napadlo by ma prirovnanie, ze film v rozliseni 240×160 pixlov ma neporovnatelne mensiu velkost ako film vo full HD a aj tak si vacsina ludi vyberie tu druhu variantu, len neviem nakolko sa to k teme dart vs js vs real pc jazyky hodi.
Ja len dufam, ze webarchive tu moc nezafunguje, lebo nase deti v buducnosti pozerajuc 4k video sa budu sa budu z debaty o raw zdrojaku s velkostou 550k (tolko ma ten sample v skutocnosti velkost) asi riadne uchechtavat.:)
Dart je dynamicky typovaný. Typové anotace se používají pro kontrolu (checker, devel mode) a při kompilaci do JavaScriptu (a pochopitelně jsou skvělé pro vytváření dalších nástrojů), ale jedním ze základním principů je, že jejich odstranění nemá žádný vliv na sémantiku.
Upraveno, díky za upozornění. Snad je to takto správně
Konečně jazyk (po ObjC), který s typy zachází rozumně.
http://blogs.perl.org/users/rafael_garcia-suarez/2011/10/why-dart-is-not-the-language-of-the-future.html