Компания Google анонсировала (http://googlecode.blogspot.com/2011/10/dart-language-for-str...) новый язык структурированного программирования для Web - Dart (http://www.dartlang.org), который в долгосрочной перспективе позиционируется (http://www.opennet.me/opennews/art.shtml?num=31766) как более прогрессивная замена для языка JavaScript, решающая все имеющиеся в настоящее время проблемы с расширяемостью, производительностью и поддержкой разработки сложных приложений. Код нового языка доступен (https://code.google.com/p/dart/wiki/GettingTheSource) для свободной загрузки и распространяется под лицензией BSD. Кроме достаточно обширной стандартной библиотеки (http://www.dartlang.org/docs/api/index.html), для Dart поставляется набор инструментов для компиляции, запуска кода в виртуальной машине, проверки кода и отладки.
Язык имеет достаточно привычный синтаксис (очень похож на язык Си) и обладает нестрогой типизацией (не обязательно явно определять типы). Dart может испол...URL: http://googlecode.blogspot.com/2011/10/dart-language-for-str...
Новость: http://www.opennet.me/opennews/art.shtml?num=31991
Шикарно, ждём поддержки во всех актуальных браузерах.
AAA!!! Революция!!!
>Шикарно, ждём поддержки во всех актуальных браузерах.Нет, не ждем. JS сам по себе довольно унылый, а в Dart включает еще и унылось Java. Вообщем, прошелся по сорцам - ничуть не впечатлило.
унылый пост не содержащий никакой информации, от человека плохой репутацией (Аноним)
>унылый пост не содержащий никакой информации, от человека плохой репутацией (Аноним)Пост приуныл потому что тред приунлыл из-за того что здесь Dart. У анонима плохая репутация? Ну и с чего вы это взяли? Думалось что анонима самая нейтральная репутация.
И насчет языка: если уж позиционировать "как более прогрессивная замена для языка JavaScript" - то надо закладываться на простоту и ясность. Смотрю на это http://www.dartlang.org/docs/api/index.html и на это http://www.dartlang.org/articles/optional-types/ и делаю вывод что дарт если и получится как замена JScript'у коэффициент неюзабельности сравним с унылой Java'ой. Dart скорее подойдет в качестве server-side языка, но и это неправильная дорога. Надо скрещивать List, Prolog и С. Все остальное - хождение вокруг да около, ИМХО.
> У анонима плохая репутация? Ну и с чего вы это взяли? Думалось что анонима самая нейтральная репутация.Некоторые люди, при отсутствии аргументов, начинают критиковать имя собеседника, или его орфографические ошибки, или еще что-то, не относящее к теме обсуждения.
> Некоторые люди, при отсутствии аргументов, начинают критиковать имя собеседника, или его орфографические ошибки, или еще что-то, не относящее к теме обсуждения.Ты критикуемый пост хоть прочитал ? Он пустой, там критиковать нечего. Слова "унылый" не содержат инфо. За это и критикуется.
>Ты критикуемый пост хоть прочитал ? Он пустой, там критиковать нечего. Слова "унылый" не
>содержат инфо. За это и критикуется.Там еще пара слов была о том что Аноним прошелся по сорцам, то есть вывод об унылости был взят не с потолка, а исходит из субъективного опыта Анонима и примеров (исходников). Вы спросите что из этого? - Так вот, наличие этого факта дает понять что кто-то считает язык унылым (собственно информация, пусть и субъективная) и чтобы понять/опровергнуть/проанализировать можно просто погрузиться в сорцы. Информация есть, хоть и вцелом она "обзорная" по языку.
>>Ты критикуемый пост хоть прочитал ? Он пустой, там критиковать нечего. Слова "унылый" не
>>содержат инфо. За это и критикуется.
> Там еще пара слов была о том что Аноним прошелся по сорцам,
> то есть вывод об унылости был взят не с потолка, а
> исходит из субъективного опыта Анонима и примеров (исходников). Вы спросите что
> из этого? - Так вот, наличие этого факта дает понять что
> кто-то считает язык унылым (собственно информация, пусть и субъективная) и чтобы
> понять/опровергнуть/проанализировать можно просто погрузиться в сорцы. Информация есть,
> хоть и вцелом она "обзорная" по языку.Для того чтобы настолько пустой-обзорный пост мог быть воспринят как информация, а не троллинг, человеку который ее выдал надо иметь репутацию адекватности и ума выше среднего. С именем Аноним это не получится.
>Для того чтобы настолько пустой-обзорный пост мог быть воспринят как информация, а не
>троллинг, человеку который ее выдал надо иметь репутацию адекватности и ума выше
>среднего. С именем Аноним это не получится.Так это Ваша проблема восприятия. Наверное вам следует сбросить мозговой кэш структур данных, которые ассоциируются с Анонимом (ну, хотя бы расширить их на пару пустых/неизвестных (потенциально новых) записей).
P.S.: Ох, и чувствую что модератор-таки удалять все посты..
это не проблема восприятия, это фильтрация спама.
> это фильтрация спама.так ты бы писал поменьше — и «спама» было бы меньше.
> так ты бы писал поменьше — и «спама» было бы меньше.Зачинщиком флуда выступил анонимус, который выдвинул единственный "забойный аргумент": оказывается его величество соизволило посмотреть сорцы, и решило что не, не айс.
При том величество забыло какие либо аргументы привести в подкрепление своей частной точки зрения, выдвинув ее вместо этого как глобальную истину в последней инстанции.
Итого: обнаружен стандартный Д`Артаньян, одна штука. Его мнение является единственно верным на этой планете, а кто не согласен - получает шпагой в зад!
бугурт такой бугурт.
> бугурт такой бугурт.Butthurt такой butthurt... //fixed.
> P.S.: Ох, и чувствую что модератор-таки удалять все посты..И правильно сделает. Потому что то что вы прошлись по сорцам - никому не интересно. Некто прошелся по сорцу - не больно значимый факт сам по себе. Поэтому такой пост является спамом или того хуже провокацией пикировок. Вот если вы бы опубликовали аргументы и вообще логику рассуждений - другое дело. А сказать "%s - го#но!" любой дурак может.
> Ты критикуемый пост хоть прочитал ? Он пустой, там критиковать нечего. Слова
> "унылый" не содержат инфо. За это и критикуется.Похоже что у этого анонимного дятла настолько жесткие проблемы с ЧСВ что он еще и минусы искусственно накручивает всем кто с ним не согласен. Во всяком случае я затрудняюсь представить себе толпу настоящих посетителей минусующих вашем вполне резонное возражение.
> И насчет языка: если уж позиционировать "как более прогрессивная замена для языка
> JavaScript" - то надо закладываться на простоту и ясность. Смотрю на
> это http://www.dartlang.org/docs/api/index.html
> и на это http://www.dartlang.org/articles/optional-types/
> и делаю вывод что дарт если и получится как замена JScript'у
> коэффициент неюзабельности сравним с унылой Java'ой. Dart скорее подойдет в качестве
> server-side языка, но и это неправильная дорога. Надо скрещивать List, Prolog
> и С. Все остальное - хождение вокруг да около, ИМХО.В плане непростоты согласен, но optional types - то о чем можно было мечтать. Вопрос в том даст ли это все прирост скорости по сравнению с js.
Я бы предпочел просто добавку в js ряда вещей из dart: optional types, автозапуск main() при domcontentloaded, отсутствие глобальных переменных, разный namespace у разных скриптов если явно не указано иное.
> У анонима плохая репутация? Ну и с чего вы это взяли? Думалось
> что анонима самая нейтральная репутация.Под анонимом проще троллить и не получить клеймо тролля. Проще быть дураком и не умнеть, и не получить клеймо дурака. Поэтому средняя репутация анонима ниже, чем среднего неанонима.
>В плане непростоты согласен, но optional types - то о чем можно было мечтать. Вопрос в
>том даст ли это все прирост скорости по сравнению с js.
>Я бы предпочел просто добавку в js ряда вещей из dart: optional types, автозапуск main()
>при domcontentloaded, отсутствие глобальных переменных, разный namespace у разных
>скриптов если явно не указано иное.Первая мысль после обзора анонса и сорцов была: "какие глупости гугл творит, могли бы просто взять и улучшить существующии JS с последующей стандартизацией спецификации улучшенного JS." Думаю, многие согласяться чтоб это было бы и логичнее и менее велосипедабельно. Кстати, мысль вполне здравая: собраться вместе антиГУГЛИСТам и определить улучшенный JS, и пусть google потом нервно курит в сторонке.
>Под анонимом проще троллить и не получить клеймо тролля. Проще быть дураком и не умнеть,
>и не получить клеймо дурака. Поэтому средняя репутация анонима ниже, чем среднего
>неанонима.Логика есть, особено на фоне того что среднячков всегда большинство. Но, раз уж мы замахиваемся на уровень "не среднячка", то перестаем всех грести под одну гребенку, ок?. Я вот давно перестал, и для меня каждый посетитель уникален, как уникален сам по себе каждый человек. Поэтому "Аноним" и "Аноним" - это всегда разные люди для меня, только если нет обратного утверждения. Вроде тоже логика есть, не?
Какая разница, если JS совместимо не лечится? Если попытаться убрать все его родовые травмы (от конкатенации строк и необязательности точки с запятой до безумной солянки из коллбеков, которую невозможно логично расположить) это будет уже не JS, а что-то другое. Так проще с нуля это самое "другое" и сделать, заодно пойдя по несколько отличному пути - я там, к примеру, у них встроенный механизм событий видел, что может подразумевать удобную многопоточность a-la Erlang, когда потоки взаимодействуют только через события. Если хорошо сделают - лапшу из коллбеков можно будет этим отлично заменить.
Забавно, но самая популярная претензия к Dart — обязательная точка с запятой.Да, многопоточность там именно такая. http://www.dartlang.org/docs/api/Isolate.html
> там, к примеру, у них встроенный механизм событий видел, что может
> подразумевать удобную многопоточность a-la ErlangIsolations'ы — это не совсем процессы, как в эрланге. Это actor'ы, a-la Scala, с характерным делением на «heavy» и «light».
Вот тут от автора Reia взвешенно (хотя и, возможно, erlang-biased) о плюсах и минусах: http://www.unlimitednovelty.com/2009/04/why-i-dont-like-scal...
Хотя, в общем-то, пока дело в браузере - плевать. Только, чую, фанаты Node это дело так не оставят.
> Node это дело так не оставят.... и напишут node.dart?
Ну там не rpc, именно отсылка сообщений, так что с этим всё в порядке. Вот разделение изолятов на лёгкие и тяжелые.... Надо было добавлять тип auto (решает рантайм) и использовать по умолчанию, а остальное - позиционировать как для "advanced use cases". Даже если это auto на самом деле будет тупо порождать один какой-то тип изолятов.
Нетипизированный язык на большом проекте - это призыв лишних граблей. Надо понимать, что сфера применения ЯП в вебе сдвинулась от примитивных анимашек до сложных проектов, и язык нужен соответствующий - документирующий эту сложность. А уж типизация - это классическое средство борьбы с ошибками, улучшения документированности кода и повышения быстродействия - трив одном, черт возьми! А не хотите (для прототипа, скажем) - ну пишите var, тоже работать будет. Медленнее, с большим шансом на ошибку - но будет.
Не медленнее.
Может и повезёт, конечно, но принципиально статическая типизация даёт возможность применить больше оптимизаций.
var или явное указание типа никак не влияют на семантику, это неоднократно подчёркивалось. Всегда нужно быть готовым к тому, что в переменной, объявленной int, будет строка, список или null. А значит, не удастся применить какие-то дополнительные оптимизации.
Да? Хм, идиотизм какой
> int, будет строка, список или null. А значит, не удастся применить
> какие-то дополнительные оптимизации.Зато сколько красивых багов можно поиметь если вместо ожидаемого числа приедет строка например, "just because I can"...
Феерические глупости. Работать будет как раз быстрее так как компилятор знает тип переменной и соответственно будет использовать инструкции заточенные по этот тип.
>> ну пишите var, тоже работать будет. Медленнее, с большим шансом на ошибку - но будет.
> Феерические глупости. Работать будет как раз быстрее так как компилятор знает тип
> переменной и соответственно будет использовать инструкции заточенные по этот тип.Простите, что? Когда "var" то типа переменной компилятор _не знает_, как раз. Разве что type interference поможет (но что-то я упоминаний оного не вижу, хотя и препятствий наличию оного тоже).
Он все правильно сказал.
> А уж типизация - это классическое средство борьбы с ошибкамиСомнительное утверждение. Классическое средство борьбы с ошибками - это внимательность и квалификация программиста. А типизация всегда влечёт за собой проблему преобразования типов. И чем строже типизация, тем больше геморроя возникает при преобразовании типов, и тем больше, соответственно, вероятность сделать ошибку.
"Проблема преобразования типов" - это привлечение внимания к возможным ошибкам. Эти места сделали явно заметными, только и всего. Внимательности и квалификации это не мешает никак. А вот от ситуаций "забыли добавить в объект поле, которое там должно быть" избавляет начисто - если ждём объект типа Line, то объект типа Point не примем. Хот я бы предпочёл несоклько более расширенную модель - к примеру, возможность указать вместо типа функцию или выражение, проверяющее пригодность переданного аргумента (например, нам годится всё, в чём есть num x, y - не важно, точка это, прямая или видгет) - очень удобная штука, проверено в D.
Тайпклассы из Хацкиля в помощь.
Мы вообще-то про кандидат в мейнстрим говорим, там лишний метауровень ни к чему совершенно
> если ждём объект типа
> Line, то объект типа Point не примемDart — примет. И даже засунет в List<Line>, если скажут.
I want MOAR языков программирования!
Все равно ни одного толком не знаешь, так какая разница, одним больше, одним меньше...
Разнообразность браузеров и привязанность многих пользователей к IE не позволяет окончательно перейти даже на CSS3, так что до client-side DART(a) нам вообще можно не дожить.
На сколько я помню предполагается поддержка прозрачного конвертирования Dart в JS в случае отсутствия поддержки Dart. Т.е. IЁ получит свой JS и будет жевать его если зубы не обломает.
На мелких веб-приложениях этого заметно не будет, а сложные могут и попросить запустить себя в чём-то более прогрессивном или терпеть.
Будет отличный стимул мигрировать на более вменяемые браузеры заодно
Напомню, что у Windows до сих пор 90% занятого рынка десктопов. Так что здесь диктовать условия будет MS.
Cool story bro.
Нет, ну ты сам подумай, какие условия они могут диктовать? Очередная новая клёвая Ферма во вконтактике/гуглосторе/на мэилрушечке или в фейсбуке попросит юзверя поставить Хром, Фокс или Оперу вместо того куска … которым он пользуется и ты думаешь юзверь не поставит? Он бегом побежит!
Так что там МС может сделать в такой ситуации? Запретить ставить сторонние браузеры?
Какие, к чёрту, они могут условия диктовать? Не смеши, бро.
>у Microsoft 42% рынка браузеровfxd
По статистике рынка форумов, 90% пользователей, приводя статистические данные, используют слово "рынок", не задумываясь, имеет ли оно вообще смысл в данном контексте.
> По статистике рынка форумов, 90% пользователей, приводя статистические данные, используют
> слово "рынок", не задумываясь, имеет ли оно вообще смысл в данном контексте.Ну такой вот рынок. Когда-то за браузеры даже хотели бабки. И сейчас за некоторые нишевые поделки типа оперы для эмбедовки и киосков - хотят. Поэтому все-таки рынок.
> Будет отличный стимул мигрировать на более вменяемые браузеры заодноага. на те, которые не таскают с собой этот недосамокат от гугеля.
> ага. на те, которые не таскают с собой этот недосамокат от гугеля.Как странно. Недосамокат от гугеля вас не устраивает, а недосамокат от нетскейпа почему-то устраивает, не смотря на очевидные недостатки последнего по сравнению с первым.
> а недосамокат от нетскейпа почему-то устраиваетэтого я не говорил.
впрочем, шкафнутый самокат хотя бы интересен и self таки напоминает. а у гугеля — обычное жабоподобное УГ.
Блин. Мейнстрим и должен быть "обычным" и "подобным". На нём сотням тысяч писать, если не миллионам. Если б там была экзотика, как в Go - можно было бы сразу говорить, что не взлетит. А эта штука - как раз может. Основные проблемы JS она решает, не воодя каких-то извращений и не требуя семь лет сидеть в ските изучая хаскель. Очень практичный подход.
> Будет отличный стимул мигрировать на более вменяемые браузеры заодноCool story bro. Будет ДВА костыля вместо одного. Напомнить историю или сам назовешь? От ActiveX с .NET избавиться не можем...
Это ваши оффтопичные проблемы и одной маленькой программной компании которой всё никак не даётся кроссплатформенная разработка. Хотя она вроде бы уже повернулись к миру лицом и планирует активнее использовать HTML5, отключая по умолчанию ещё один костыль (Adobe Flash Player).
ASP.NET, VBasic чего там ещё было в параллель с JSом? :)
> ASP.NET, VBasic чего там ещё было в параллель с JSом? :)Да, но первое — серверное и я что-то не припомню попыток пропихнуть ASP в браузеры (MS разродилось силверлайтом, но они явно опоздали и это плагин корявый, а не стандарт), а второе — ужасное и ни кому не нужное чудовище не только в вебе, но и вообще где угодно.
Dart же позиционируется как наследник JS, в котором исправили глупые недоработки его «родителя». Язык открытый и наверняка будет с радостью принят во все нормальные браузеры, а если MS внезапно станут в позу, то всем будет начхать.
<занудство>
VBScript, но это несерьезно, поскольку MS-only, а Дарт вроде кросс-браузерный.
</занудство>
> <занудство>
> VBScript, но это несерьезно, поскольку MS-only, а Дарт вроде кросс-браузерный.
> </занудство>В каком месте он "кросс..."?
Он только появился и только, только продвигается гуглем....
Два движка уже поддерживаются.
Учитывая наличие компилятора в JS, думаю поддержка Оперы и ИЕ будет обеспечена.
проверил под IE9 - "To run this code please use Chrome, Safari or Firefox (or, try anyway). IE9 support is coming soon"
неудивительно - трансляция в JS
Лицензия BSD!
> Лицензия BSD!А что, гуглу можно. Проблемы с привлечением разработчиков из сообщества (как для FreeBSD) для него нет, т.к. весь код написан штатными сотрудниками. Проблемы с зоопарком закрытых форков (как с иксами) тоже нет - гугловского авторитета хватит, чтобы задавить кого угодно.
Тем более, что использование копилефта в эталонных реализациях - плохой тон, потому что ограничивает применимость продукта.
Для ЯП BSD-лицензия - мастхэв, в общем-то, иначе может быть слишком много проблем с лицензированием и совместимостью полученного кода, подключаемых библиотек под хоопарком лицензий и т.п.
Статическая типизация вместе с динамической! Я джва года ждал такой язык! Ну, на первый взгляд выглядит интересно.
Хочу, чтоб в Руби так же было. :-/
Есть в груви, но там смешивание статики и динамики тормозит даже больше, чем просто динамика :-/
> Есть в груви, но там смешивание статики и динамики тормозит даже больше,
> чем просто динамика :-/Grovy++ (?)
А Grovy++ умеет динамический код? /me не в курсе
> Статическая типизация вместе с динамической! Я джва года ждал такой языкможно было джва года назад попробовать perl6, там это уже было
А не подскажет ли кто-нибудь из экспертов, можно ли надеяться, что сделают компиляцию в байткод для далвика? Ну, чтобы жопа не дымилась от анального преследования Ораклом. Или Dart для этого совсем не подходит?
Можно, но возьмётся ли кто-нибудь за это - вот в чём вопрос.
>Можно, но возьмётся ли кто-нибудь за это - вот в чём вопрос.Я возьмусь если профинансирует кто-нибудь. Найдется ли спонсор - вот в чем вопрос.
>>Можно, но возьмётся ли кто-нибудь за это - вот в чём вопрос.
> Я возьмусь если профинансирует кто-нибудь. Найдется ли спонсор - вот в
> чем вопрос.СПО ж работает жаст фор фан. Ну и нафига тебе спонсор? Энджойся!
а ему не фан, такие дела.
Я бы сказал - с вероятностью. Всё же джава - далеко не самый приятный в использовании язык. Но сначала сам Дарт надо допилить.
Совсем не подходит. Это принципиально динамический язык. Там даже int — интерфейс. И объявления типов ни к чему не обязывают, если параметр int, это не означает, что там не может оказаться строка.
> посмотрев примеры, возникает впечатлениеПодъезжая к станции с меня слетела шляпа.
Чето многопоточности не видно ;(
>Чето многопоточности не видно ;(Я вот тоже думал что они вкусности Go перетащат. Неясно, почему не сделали. Уж гугл-то мог бы себе позволить.
Причем ведь HTML5 WebWorkers вроде есть, ну а на серверной стороне я вообще молчу, какие там могут быть проблемы если язык (виртуальная машина) свои. Блин, в плюсах уже практически по стандарту есть, а тут...
намёки есть (например, события). Так что может и пояивтся. В конце концов, это далеко не финальная версия языка
> Dart Programming Language Specication
> Version 0.01
> October 10th, 2011
> 10.10.2011 17:35
> Чето многопоточности не видно ;(
> 10.10.2011 18:41
> намёки есть например, события, Isolate...;)
Ну тем более. Я-то по диагонали его описание глядел. Хотя с heavy and light isolates - это они погорячились, такие вещи должны быть implementation detail, и явно их задавать надо в вебе разве что в каких-то экзотических случаях.
В Go с многопоточностью серьёзная проблема — благодаря неатомарности с помощью race conditions можно отэксплоить map. При выполнении недоверенного кода (для чего и предназначается Dart) это недопустимо.
Не надо мне многоточных скриптов в вебе.
>Не надо мне многоточных скриптов в вебе.Вы хотели сказать не надо многопоточных на client-side'е ?
А оно не только для встраивания в браузер? О_о
прочитать новость ниасилил ?
> Не надо мне многоточных скриптов в вебе.А мне надо ;) Спрос знаете ли рождает предложение, так что уползайте в свой уголок ;)
Видно. Isolate. Просто нити не затопчут друг-другу память, коммуникация только через сообщения. И это правильно.
Ну.. если так то супер ;) !
Явной может и не быть. А раскидать управляемый код по процам а-ля Apple Grand Central никто не запрещает.
Они хотят получить ещё парочку исков от оракла?
> очень похож на язык СиЯ бы сказал — очень похож на язык Java. Вплоть до ключевых слов и имён классов в базовой библиотеке. Ясно, на кого ориентируются.
Это понятно - им,в идеале, вообще нужна одна среда для веба и андроида. Причём на андроиде неплохо бы от джавы уйти - не только из-за (возможны) патентных проблем, но и просто потому что тяжеловат язык для этого применения.
Так Dart ещё тяжелее.
сказал человек не написавший ничего на этом языке.
Чем он тяжелее? boilerplate-кода явно меньше. А если вы о скорости - дык а вы её как смотрели? в джаваскрипт-транслированном варианте? Типы есть, классы/интерфейсы есть - на далвик оно должно лечь отлично.
Писать-то легче, выполнять тяжелее. Если скорости хватит, то вот процессорного времени и, следовательно, заряда аккумулятора динамический язык выжрет на порядок больше.Простой пример. Задача — вычислить сумму большого количества целых чисел. В Java мы используем массив int[], целые аккумулятор и счётчик цикла. Размер массива не изменяется после создания, что тоже хорошо. Всё это в итоге скомпилируется в почти оптимальный машинный код, всего несколько команд на итерацию — сложить целое из памяти с аккумулятором, подвинуть счётчик цикла, проверить условие выхода. В Си (или другом статически-типизированном языке, компилируемом сразу в машинный код) это будет, возможно, немного быстрее, за счёт отсутствия «разогрева» JIT и больших ресурсов на оптимизацию.
Иное дело Dart (или другой динамически-типизированный язык). В лучшем случае у нас будет List<int>, но мы не можем быть уверены, что в нём только целые. Нет гарантии и что аккумулятор останется целым, а не превратится в тыкву. Поэтому на каждой итерации мы достаём из списка очередной элемент (вызывая виртуальный operator[]), проверяем, что аккумулятор не null, вызываем виртуальный operator+ у аккумулятора (который внутри создаёт новый объект), присваиваем результат локальной переменной (оддавая старое значение сборщику мусора), инкрементируем счётчик цикла (ну, это нативно, надеюсь) и вызываем виртуальный метод для проверки, что цикл не кончился. По крайней мере три вызова виртуальных функций и создание/удаление объекта в виртуальной памяти. И эти вызовы дороже, чем в C++ или Java.
Но по сравнению с некоторыми другими языками (вроде JavaScript или Python) Dart выигрывает, в нём, по крайней мере, нельзя переопределить метод существующего класса.
Да понятно. Мне как-то не приходило в голову, что можно так извратиться - сделать типы и никак их не использовать.
Ну почему же, можно и использовать. Но намного менее эффективно, чем можно было бы, если бы гарантированный тип гарантировался.И Dart всё ещё потенциально быстрее и экономнее JavaScript и проч. (благодаря особенностям реализации ООП). Но Java на Андроиде он не конкурент.
> особенностям реализации ООПда нет там никакого «ООП», есть очередной убогий костыль, слизаный с цпп. ума не приложу, отчего цпп-стайл до сих пор считают «ООП».
фи. всё это отлично заинлайнится. реально постоянно выполняется не такой уж большой кусок кода в программе, и JIT его в конце концов вылижет, проинлайнит и устаканит. да, ресурсов заберёт чуть больше, чем сразу нативный код, но далеко не «ужас-ужас-ужас».
похоже но java тоже откуда то брала из то го же с++ ), так что java монополии на List нету
> Ясно, на кого ориентируются.Неужели на программистов?! Внезапно, ничего не скажешь...
да у них план такой,
создать язык похожий на джава, создать среду,
дальше сказать Оракл видите у нас уже свой язык, да есть неодостатки, но работает!
потом Оракл скажет ну ладно су..и придётся сделать java бесплатной чтоб влиться в среду.очевидно что Java спокойно заменит JS и будет счастье.
джава в вебе? Не смешите. Оно тяжеловесное и неприятное в написании. Девелоперы просто на JS тогда останутся в массе своей, и уж точно такого роста разнообразных библиотек не будет. Да и компилировать никого не заставишь (хотя байткод был бы куда более осмысленно по сети тягать).
> джава в вебе? Не смешите. Оно тяжеловесное и неприятное в написании. Девелоперы
> просто на JS тогда останутся в массе своей, и уж точно
> такого роста разнообразных библиотек не будет. Да и компилировать никого не
> заставишь (хотя байткод был бы куда более осмысленно по сети тягать).И JS уже не заменят. Да, он убог, да, он будет обрастать костылями. НО ОН ПОВСЮДУ.
Приведу пример из реального мира.
Есть роторно-поршневой двигатель внутреннего сгорания. Он имеет выдающиеся характеристики. Ему сто лет в обед. Но производятся серийно ПОРШНЕВЫЕ двигатели. И будут производиться еще очень долго. Дорабатываясь, обрастая костылями. Если не произойдет энергетического чуда, и не появятся работоспособные топливные элементы. Но даже тогда поршневики проживут минимум лет 30 до полной замены.
Вы реально надеетесь, что умрет JS? Умрет флэш? Наивные обитатели виртуального мира, считающие, что на них законы мира реального не распространяются...
Я, кстати, против флеша ничегоне имею, кроме тормозной реакции адоба на баги.Но вот "повсюду" - не аргумент. Ну будут тянуть JS-виртуальную машину все браузеры. А новьё будет писаться под Dart - потому что там граблей на порядок меньше, и на джаву/C#/плюсы/Ruby более похоже. Больше того - невелика хитрость сделать простое взаимодействие между JS- и Dart-скриптами через сообщения - и кучу существующего кода на JS можно будет использовать.
Да, ну и срок жизни железок (особенно больших и дорогих, под которые есть куча ещё более дорогой инфраструктуры) со сроками жизни веб-софта не сравнивайте.
> очевидно что Java спокойно заменит JS и будет счастье.Какой там по счету год она все заменяет и заменяет? Я уже со счета сбился :)
Если кто видел библиотеку для работы с системой (из браузера) - ткните пожалуйста носом.
Или там еще нет такого?
с какой системой ?
> похож на Java и СиИсправили, называется. Ну где вы там Си увидели? Или других языков не знаете? Где в Dart указатели, сишные массивы, псевдостроки, 10 видов целых чисел, объединения, битовые поля, макропроцессор? Где в Си final, классы, new, сборка мусора, генерики, foreach, исключения? Возьмите то, чем синтаксис Си отличается от Java, и в Dart этого не будет. Возьмите то, чем синтаксис Java отличается от Си, и в Dart большая часть этого будет.
> знаете? Где в Dart указатели,Вероятно там они не слишком то и нужны. Браузер в котором ремотный код указатели лопатит сам как угодно - сцыкотно, да?
> сишные массивы,
А что, там нельзя типизированный массив объявить?
Да, указателей нет, это не Си.int a[10] — так объявить массив тоже нельзя.
NaCl - и у вас всё будет сухо и комфортно. Просто указатели - это почему-то слишком сложно для большинства (см. статью Джоэла).
> NaCl — и у вас всё будет сухо и комфортно. Просто указатели…это прямой путь поиметь дырень. да и писать на нединамических языках — удовольствие ниже среднего.
>> Ну где вы там Си увиделиВ семплах:
#import('dart:html');
Еще Виталик, светлая ему память, громко и нецензурно говорил о путающих синтаксис и семантику.Этот #import это, если я правильно понял из 10 минут листания спецификации, он — как import в петуне, а не #include в C.
Это, по-вашему, Си?
С шарпом сравнивайте скорее
всё это конешно круто!...но что за такой старпёрский подход? (сам язык *по_виду* похож на старпёрские Java и C/C++...)
но что меня вообще поразило -- это код хостится в SVN !!! отсутствие Git явно признак старпёрщины :-)
# p.s.: хотя в целом конешно язык не плох :-) ... идея изоляций мне по нраву :-)
> но что меня вообще поразило -- это код хостится в SVN !!!
> отсутствие Git явно признак старпёрщины :-)Корпорация бобра имеет особеность сначала все делать (за кулисами), а потом выкладывать публике.
Ну, что, на безрыбье и Dart ничего так. Хотя и воняет жабкой.
Я бы предпочел LLVM в браузере, хотя и осознаю, что у этого более чем достаточно минусов. Хотя один пес, JS сейчас это такой ассемблер нынче, читать его без отдельного "чистого" варианта давно нельзя, так что многие минусы под вопросом.
> ...но что за такой старпёрский подход? (сам язык *по_виду* похож на старпёрские
> Java и C/C++...)Да, давайте лучше сделаем инновационный брейнфак ;-]
Система типов без автовывода типов - фейл. Такой известной конструкции как pattern matching не сделали - фейл. Использовать <> для синтаксиса шаблонов, зная печальный опыт С++ и наоборот удачный опыт D - фейл. Ориентация на web, а не создание языка общего назначения - фейл.
> Система типов без автовывода типов - фейл. Такой известной конструкции как pattern
> matching не сделали - фейл. Использовать <> для синтаксиса шаблонов, зная
> печальный опыт С++ и наоборот удачный опыт D - фейл. Ориентация
> на web, а не создание языка общего назначения - фейл.Удваиваю вот этого господина.
Вот это вообще пушка:
> Engineering teams typically desire a clean build free of warnings
> and so the checker is designed to be extremely charitable.
> Other tools can interpret the type information more aggressively and
> warn about violations of conventional (and sound) static type discipline.Ворининги пугают и мешают, поэтому мы их уберем. Ок.
там есть предупреждения.
Я знаю, что есть. Если бы их вообще не было - языку было бы вообще место на помойке.Перечитайте процитированное, о каких предупреждениях там речь.
> там есть предупреждения.А, да, про те предупреждения, что там есть. Вот они, предупреждения: http://try-dart-lang.appspot.com/s/P9AR
В языках со статической типизацией это — ошибка. А тут что такое, я вас спрашиваю‽ Мало того, оно *выполнилось*. На кой ляд тогда писать про «статическую типизацию»?
Это, простите, обычные аннотации, а никакая не типизация. Это — как в Erlang, который никто, слава разуму, статически типизированным не называет, несмотря на прекрасную возможность написать `-spec foo(integer()) -> atom().`
Тьху, мерзость.
Dart provides, at the programmer’s option, a mixture of static and dynamic checking. When experimenting, the programmer can write untyped code for simple prototyping. As the application becomes larger and more stable, types can be added to aid debugging and impose structure where desired.чего здесь плохого? Или давно на Паскале не писали, чтоб прям свербит?
> чего здесь плохого? Или давно на Паскале не писали, чтоб прям свербит?да нет там никакого «чекинга», есть тупые аннотации.
Ворнинги и есть чекинг, а класть на них или исправлять - ваше дело.
> Ворнинги и есть чекингBREAKING NEWS!
Еще пушка:> In Dart, you can often create objects directly from an interface,
> instead of having to find a class that implements that interfaceВот нафига такое городить было?
Продолжаем наблюдать полное отсутствие консистентности в языке.Имена типов: int и bool но Object и String. Это что, мать вашу, похапэ, что ли? Так похапэ хоть извиняет то, что его вообще никто не дизайнил, а лабали на коленке «о, посоны, давайте еще вот такое приделаем, полезно же».
Только костыли, только зубреж каждого конкретного случая!
Мне, "крестовику", это понятно: с маленькой буквы - встроенные типы, с большой - классы.
В той же Жабе аналогичная логика.
> Мне, "крестовику", это понятно: с маленькой буквы - встроенные типы, с большой - классы.Да вот если бы. Мякотка-то в чем — ведь int и bool это _не_ примитивы. Это не Java'овский int, который отличается от java.lang.Integer. Это такое же классы, производные от num, кстати.
> Это такое же классы, производные от num, кстати.Fix: такой же класс, производный от num.
И я наврал, не класс, а интерфейс (хотя мы видели выше, что тут интерфейс можно инстанциировать, хех). Вот, если точно, цитата из спецификации:
> Although you might expect int and double to be primitive types, they're actually interfaces that extend the num interface. This means that int and double variables are also nums.
Ну, реализацию можно помнить. А вот ломать давно доведенные до автоматизма шаблоны не придется. Ну кому было бы приятнее работать с Int и Bool? Паскалянтам?
И инстанцирование интерфейсов, в конце концов, всего лишь избавляет от чисто механического написания лишнего кода.
Имхо, язык не должен быть абстрактно правильным и красивым, в первую очередь это должен быть удобный инструмент.
> Ну, реализацию можно помнить. А вот ломать давно доведенные до автоматизма шаблоны
> не придется.(Вкрадчиво) А как в этомвашем C++ называется строковой тип из стандартной библиотеки? ;) Ну да ладно.
Понимаете... Я ругаю Dart за неоднородность, инконсистентность. Где-то так, где-то по-другому. Если это уже в самом начале, в draft'е языка — это плохие признаки.
> Ну кому было бы приятнее работать с Int и Bool? Паскалянтам?
Javascript'ерам, если на то пошло, самой первичной аудитории. У которых в этом плане все целостно, Number и Boolean. А вообще — мы говорим о новом языке или костылях для жабокодеров? Если о жабокодерах — для них есть GWT, зачем им Dart?
> (Вкрадчиво) А как в этомвашем C++ называется строковой тип из стандартной библиотеки? ;) Ну да ладно.string. В C++, как ни странно, все типы называются единообразно — с маленькой буквы.
> И инстанцирование интерфейсов, в конце концов, всего лишь избавляет от чисто механического написания лишнего кода.Есть похожая фигня в Java — анонимные классы. Там оно было только потому, что в Java не было анонимных функций. Но тут-то они есть.
А, кстати да, класс (и интерфейс) у нас не first-class object, в отличие от всех цивилизованных языков современности. Еще один камень в огород дарта.(А функция, ка кговорит интерпретатор на `print("fib = #{fib}");` это — хехе — Object. Хотя это ошибка реализации, я не языка.)
> Имхо, язык не должен быть абстрактно правильным и красивым, в первую очередь
> это должен быть удобный инструмент.Так вот, язык, где есть всякие исключения «а в ${LanguageName} — так» (как будто JS-кодер, должен знать этувашу Java) — неудобный инструмент.
То-то даже здоровые матерые похапэшники бегают на похапэ.нет посмотреть в каком порядке идут аргументы — (needle, haystack) или (haystack, needle), и есть ли подчеркивание, или имя функции пишется слитно.
Это вместо секундного затыка и рассуждения «а, Int — это класс, значит с большой буквы.» Такое, когда язык однороден, после пары-тройки ошибок «по старой памяти» отскакивает от пальцев.
Ребят, какая нафиг старая память ? Дело привычки как всегда. Тут не помнишь команду выхода из цикла, потому что на 5 языках одновременно, а вы про память... ;) Фигня это все. Главное может станет таки единым и не таким древним как си, уже хорошо ;)
>Ну кому было бы приятнее работать с Int и Bool? Паскалянтам?Паскаль вообще-то не регистрозавимый поэтому там все равно. Только в сиподобных языках есть такое сумашествие как регистрозависимость.
так это чудо тоже никто не дизайнил, судя по всему. тупо слизали тут кусочек, там кусочек, смотали изолентой, по бокам подпёрли палками, чтобы не шаталось, и гордо предъявили.
> так это чудо тоже никто не дизайнил, судя по всему. тупо слизали
> тут кусочек, там кусочек, смотали изолентой, по бокам подпёрли палками, чтобы
> не шаталось, и гордо предъявили.Угу. И СиШарп никто не дизайнил, ага..
> Угу. И СиШарп никто не дизайнил, ага..а эта недомузыка вообще испорченый делфи. а.х. нужно было в детстве удавить, мир был бы чище.
> а эта недомузыка вообще испорченый делфи. а.х. нужно было в детстве удавить, мир был бы чище.Если бы так. Увы С# это жаба в чистом виде, но с другими библиотеками чтоб нельзя было старый опыт использовать.
> Угу. И СиШарп никто не дизайнил, ага..Судя по результату, никто.
Эм... Из продакшн-языков он самый вменяемый вообще-то. Из маргинальщины - ну D удобнее. Ну скала (хотя там уже привычки ломать надо). И всё.
> Эм... Из продакшн-языков он самый вменяемый вообще-то.Да? И где же вменяемая вебня на сишарпе, если уж мы про продакшн? Унылый корпоративный шит уровня 2000 года за самый вменяемый результат не считается, кукуйте. Ну так, по пользовательским симпатиям например :))). Почему-то гуглы, фйэсбуки и прочие вконтакты - добились своих мест без сишарпа. Вообще дотнет громко прославился разве что вылетом с треском с LSE :)
Если кто не в курсе, чем отличаются value types от reference types - лучше выяснить. Здесь имеено это разделение.
У них интерфейс - это не только методы, но и поля. Поэтому смысл имеет.
> У них интерфейс - это не только методы, но и поля. Поэтому
> смысл имеет.Кто не понял - интерфейс используем как объявление структуры/записи, если его инстанцироват - получаем собственно структуру. А можно реализовать его в классе, заменив переменные на геттеры/сеттеры подсунуть этот класс.
> Ориентация на web, а не создание языка общего назначения - фейл.Это как раз правильно. Не нужен очередной комбайн, который умеет делать всё, но ничего по отдельности хорошо. Юникс-вей вспоминаем :)
Нет, неверно абсолютно. То что на каком-то языке нельзя решить определенную задачу - только лишь недостаток этого языка. D в этом направлении сделал очень много - на нем можно писать как риал-таймовые приложения писать - игры, ядро ОС, и высокоуровневые скрипты.
А этих изобретателей - в детсад.
Ну и где можно посмотреть на применение D в client-side web-разработке, а в телекоме?
А реалтаймовые приложения будут зависеть от среды выполнения которую он сам не предоставляет (поскольку это язык, а не платформа), не так ли? (В то время как Runtime Erlang-а даёт soft-realtime). Кроме того придется отказаться от GC и управлять памятью вручную. Перспектив у D много, но роста аудитории как-то не заметно.
на фоне Dart -- ECMAScript-6.0 будет выглядеть совсем няшкой :-D[хотя к тому времени Dart может быть тоже поправят :)]
За bsd плюсанул. Но что-то подсказывает что ничего принципиально нового этот язык не приносит, а посему, зачем он нужен?
Если будет один язык на клиенте и на сервере то уже хорошо, ну и исправления по мелочи и доделки всякие, типа #library, сообщений и т.п. тоже ведь приятно ;)
>Язык подходит как для разработки одним программистом небольших скриптов без >жесткой структуры, так и для создания высоко масштабируемых больших модульных >проектов, поддерживаемых большим коллективом и требующих более явной типизации >для того чтобы избежать неразберихи и ошибок. При этом явное задание типов не >обязательно, например, можно начать разработку без указания типов, а в >дальнейшем при необходимости добавить ихНа самом деле ЯП не может быть "немножко со строгой типизацией". Это все равно как немножко беременная женщина. Отсюда вопрос в лоб: "Приведение к типу у этого дарта неявное и автоматическое?" И если да, то для разработки бизнис-логики на серверной стороне он уже не годится. А что касается клиентской... это вопрос сложный, но пока браузеры его не будут поддерживать нативно - игрушка, ИМХО
у него вообще нет строгой типизации, даже в зайчатках. типы в нём — не декларации, а аннотации. строке отлично присваивается число и никто не жужжит.
На самом деле, именно это и плохо. Потому что никогда нельзя быть уверенным когда автоматическое приведение к типу сработает и чем это закончится. Короч, ЯП с мягкой типизацией на серверной стороне - флейм и глюк, имхо.
К счастью это только ваше имхо. И бизнес-логика на сервере, на перле например, прекрасно пишется, и все при этом понятно, и проблем с автоматическим приведением нет. Вопрос привычки и опыта.
никто не спорит, что при сноровке на костылях можно бегать, но зачем?
Ну почему на костылях то ? В чем костыльность того что я не трачу лишнее время на типизацию и при этом совершенно уверен в результате автоматического приведения ? Естественно не всегда, там где не уверен надо типизировать, а там где такая уверенность есть можно не тратить время впустую. Вопрос не в сноровке, а в том что вырабатываются соответствующие привычки и подходы, не такие как при строгой типизации, и они таки позволяют извлечь выгоду без косяков, этих котят надо просто уметь готовить ;)
> Ну почему на костылях то ?ну, или на креслах-качалках.
явная типизация — хорошо. при этом она должна быть опциональной, конечно. например, как в Strongtalk (жаль, что он в ящик сыграл; не надо было бы мне зарабатывать — всенепременно бы взялся допиливать). ну, и компилятору неплохо уметь хотя бы простое выведение типов (если это вообще возможно — а тут Strongtalk в пролёте, в общем случае там типы фиг выведешь, разве только читерить; впрочем, все читерят).
я, собственно, за фашиствующую типизацию a-la хацкель никогда и не выступал. но и совсем без неё печально.
> как в Strongtalk (жаль, что он в ящик сыграл; не надо
> было бы мне зарабатывать — всенепременно бы взялся допиливать).Бы в этом мире не считается.
> Бы в этом мире не считается.тебе кто-то мешает скачать Strongtalk и покрутить? от того, что реализация больше не пилится, язык никуда не делся. язык, кстати, делали очень знатные люди. поинтересуйся на досуге.
А потом другому человеку поддерживать твоё динамическое спагетти...
Ага, а мне его статическое ;)
> Ага, а мне его статическое ;)Всегда я говорил, что программист - не профессия, а сексуальная ориентация. Причем противоестественная.
На перле? Пишется. Только не надо про "прекрасно". Начиная с невозможности сделать immutable структуру. Впрочем, конкретно в преобразования типов не врезался.
Когда появится нативный интерпретатор в хроме хотя бы? Сейчас генерируется 6-метровый JavaScript.
и все это сокровище будет лопатиться на клиентских машинках...
Кто подарит мне еще 32 гига оперативки?
> и все это сокровище будет лопатиться на клиентских машинках...
> Кто подарит мне еще 32 гига оперативки?(с иронией) Пару недель назад тут один кекс доказывал, что плашка оперативы стоит дешевле лопаты д.рьма и что ты себе должен прикупить и еще одну подарить голодающим детям Африки. 8 лопат д.рьма тебе жалко что-ли? Подарит. Купи, ёопто. Тоже мне, проблема.
>> и все это сокровище будет лопатиться на клиентских машинках...
>> Кто подарит мне еще 32 гига оперативки?
> (с иронией) Пару недель назад тут один кекс доказывал, что плашка оперативы
> стоит дешевле лопаты д.рьма и что ты себе должен прикупить и
> еще одну подарить голодающим детям Африки. 8 лопат д.рьма тебе жалко
> что-ли? Подарит. Купи, ёопто. Тоже мне, проблема.Это была ирония...памяти то докупить можно.. но не ради такой херни ...
Еще докупать памяти чтобы работал браузер? в самом деле??
Дак когда? Я имею ввиду дату.
Wow, the 8 line Hello World demo for Google Dart compiles into ~17000 lines of JS. is.gd/7YtEOV
Глобально. Надежно. Энтерпрайз.
> Wow, the 8 line Hello World demo for Google Dart compiles into
> ~17000 lines of JS. is.gd/7YtEOVВспомнился старинный анекдот: Hello world: 11 errors, 8 warnings :)