Previous Entry Share Next Entry
2016-01

Dart FAIL

Hello World –> 17259 строк кода, по сравнению с которым Java кажется верхом компактности и скорости.

Подробнее можно читать тут.

Лично меня удивил не размер stdlib сам по себе, а то, что они пытаются:

  • компилировать все это в рантайме (мобильные устройства, привет)
  • без каких-либо оптимизаций (черт, весь мой JS обфускатор весит меньше, могли бы уже и воткнуть какой-нибудь простой инлайнер, тем более, что у них есть Closure Compiler)
  • вообще без какой-либо оглядки на Javascript: The Good Parts и прочие гайдлайны
  • без совместимости с существующими JS библиотеками

короче, это ужас и кошмар, *любой* из компиляторов с List of languages that compile to JS работает лучше.

Окей, вначале Dalvik, теперь Dart, что будет следующим? :)



This entry was originally posted at http://wizzard.dreamwidth.org/216948.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
justy_tylor October 23rd, 2011
Есть впечатление, что вся эта затея сделана на отъебись. Захотели эффективные менеджеры гугля свою недожабу - получили недожабу. А для исследований в language design у Гилада Newspeak есть.

BTW, ссылка на List of... с битым href.

wizzard0 October 23rd, 2011
Опа, я перепутал href и текст ссылки :)

wizzard0 October 23rd, 2011
похоже на недожабу, да...

thedeemon October 23rd, 2011
Есть у них традиция по осени фейлить. С ALGOL-ом тоже фигня же.

sleepy_drago October 23rd, 2011
ну там хоть язык не является унылым подмножеством. Он будет себе тихо гнить в своей нише, а на вопросы почему системный язык сосет у джавы всегда можно будет исполнять польку-бабочку мол если написать компилятор и стандартную библиотеку правильно то все будет хорошо.у них наверное хватит сил на твердую троечку его поддерживать.

mr_aleph October 23rd, 2011
> компилировать все это в рантайме

в каком таком рантайме?

> без каких-либо оптимизаций

сенсация! компилятор с отключенной оптимизацией генерирует неоптимизированный код! (там есть флажки включающие оптимизатор, которые падкие до сенсаций товарищи конечно же не включают)

> вообще без какой-либо оглядки на Javascript: The Good Parts и прочие гайдлайны
> без совместимости с существующими JS библиотеками

поясни?

> работает лучше

это "early technological preview", для получения "feedback" по языку. кто сказал, что компилятор уже полностью готов и выдает оптимальнейший код?

wizzard0 October 23rd, 2011
> в каком таком рантайме

type=application/dart как работать собирается, м?
с одной стороны, комменты на https://code.google.com/p/dart/wiki/HTMLConverter доставляют
с другой стороны, он бесполезен, ибо document.appendChild он не лечит (lazy loading, anyone?)

> сенсация! компилятор с отключенной оптимизацией генерирует неоптимизированный код!

--optimize + dean edwards packer: 470 -> 28 кбайт. окей, что делать с этими 28к дальше?

> без совместимости

зачем так неистово загаживать Array, Object итд?

> early technological preview

Too early, если уж на то пошло.


mr_aleph October 23rd, 2011
> type=application/dart как работать собирается, м?

в данный момент прекомпиляцией, или если твой браузер поддерживает DartVM, то через DartVM.

> --optimize + dean edwards packer: 470 -> 28 кбайт. окей, что делать с этими 28к дальше?

если тебя 28 кбайт не устраивают, то ждать улучшенный кодогенератор (ну и проект же опенсурсный, так что можно не ждать, а написать своей, как кто-то написал jdart)

> зачем так неистово загаживать Array, Object итд?

Я думаю для производительности.

wizzard0 October 23rd, 2011
> в данный момент прекомпиляцией

и все же, что делать с document.appendElement?

> если твой браузер поддерживает DartVM

в общем, нас ждет новое поколение сайтов, не работающих на мобильниках :(

я уж было обрадовался, когда увидел, что труба за 80$ нормально тянет мою javascript-wiki и gmail, но видимо зря

> ждать улучшенный кодогенератор

зачем? есть haxe, coffeescript и jsil, они исчерпывающе покрывают нишу

> Я думаю для производительности.

если это и так, то манипуляции с arguments делают оптимизаторы плакать, даже в оптимизированном коде

mr_aleph October 23rd, 2011
> и все же, что делать с document.appendElement?

я думаю, что lazy loading должен поддерживаться на уровне библиотеки/языка/компилятора.

точнее я не знаю, если тебя это вопрос действительно интересует: задай вопрос (https://groups.google.com/a/dartlang.org/group/misc/topics?pli=1) или открой ишуй (https://code.google.com/p/dart/issues/list).

> зачем? есть haxe, coffeescript и jsil, они исчерпывающе покрывают нишу

зачем тогда ты пинаешь (early preview) Dart, если у тебя есть чудесные исчерпывающие нишу языки?

[хотя ни один из них на Dart не похож совершенно]

> если это и так, то манипуляции с arguments делают оптимизаторы плакать, даже в оптимизированном коде

Нормальные оптимизаторы способны справится с нормальными использованиями arguments. (e.g. arguments[i], arguments.length и
даже f.apply(self, arguments); на V8 заинлайнится во весьма внятный код без создания arguments object).

Хотя да там есть несколько мест, где arguments object все-таки создается. Но опять же я более чем уверен, что в будущем код будет более оптимизированным.



juan_gandhi October 23rd, 2011
Не проще ли уж сразу джаву эмулировать.

По мне так дебильный язык этот дарт, нет? Древняя форма ООП.

zeux October 23rd, 2011
Форма ООП как я понял примерно mainstream. Что, возможно, упрощает популяризацию. Где бы почитать про современные формы?

juan_gandhi October 23rd, 2011
Spring? Ооп с эксэмэлем и шлюхами.

zeux October 23rd, 2011
Мое мнение примерно такое.

1. Достаточно очевидно, что Google пытается протолкнуть не еще один конвертер в JS, а новый язык, для которого есть fallback в виде конвертера в JS. Если fallback используется в 100% случаев, то гугл заранее проиграл.

2. В текущем мире, понятное дело, from day 1 получить native поддержку в браузерах нереально, поэтому transition period будет использовать application/dart. Время компиляции, если я правильно понимаю жизнь, проблемой особой не является из-за возможности вставить memcached or something (ну или еще как-нибудь закешировать, я не очень в теме - тут версия кеша тупо равна таймстампу сорц файла)

3. В реальном применении по идее стандартная библиотека будет в отдельном js файле, т.е. это fixed cost на всю страничку, который еще и кешируется браузером.

4. Сам код stdlib, надеюсь, драфтовый - в смысле, пацаны задизайнили язык, написали на коленке транслятор в JS. Таким образом есть язык, который уже можно выполнять на JS - нам остается поверить в то, что для него можно написать очень эффективный компилятор. Плюс уверен что делать стандартную библиотеку не только рабочей, но еще и быстрой, в fallback режиме пацаны еще будут.

Другой вопрос, что как язык Dart из себя особо ничего не представляет. Я спеку пролистал примерно за две минуты, из принципиальной разницы с JS с т.з. производительности увидел только отсутствие прототипов (optional types стремная штука - во-первых, написано что программа без них от программы с ними не отличается, во-вторых type annotations можно было добавить инкрементально в JS, как я понимаю). С другой стороны, кажется нормальный ООП, properties, free functions, closures, agents, все в общем неплохо.

_winnie October 24th, 2011
А все языки с этой ссылки видел?
http://blog.fogus.me/2011/10/18/programming-language-development-the-past-5-years/

can3p January 9th, 2012
http://www.dartlang.org/support/faq.html#hello-world-js-size

Since the initial launch, we've also created an even more experimental compiler, frog, written in Dart. Its output can be an order of magnitude smaller than dartc --optimize, so try frog if you have output size issues. Its output for "Hello world" as of November 2011 was 35 lines, of which 12 are comments. We'll continue to work on output size.

Работа идет.

wizzard0 January 9th, 2012
Это хорошо :)

  • 1
?

Log in

No account? Create an account