URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 99460
[ Назад ]

Исходное сообщение
"Выпуск языка программирования Dart 1.7, развиваемого Google ..."

Отправлено opennews , 16-Окт-14 18:45 
Компания Google представила (http://news.dartlang.org/2014/10/dart-17-easily-share-and-us...)  выпуск языка программирования Dart 1.7 (http://www.dartlang.org/), который позиционируется как язык структурированного программирования для Web, который в долгосрочной перспективе может стать прогрессивной заменой JavaScript. Код связанных с языком компонентов распространяется под лицензией BSD.

Для упрощения разработки на языке Dart поставляется SDK (http://www.dartlang.org/docs/sdk/), включающий в себя компилятор в JavaScript - dart2js (http://www.dartlang.org/docs/dart2js/), виртуальную машину Dart VM (http://www.dartlang.org/docs/standalone-dart-vm/), пакетный менеджер pub (http://pub.dartlang.org/),  статический анализатор кода dart_analyzer (https://www.dartlang.org/docs/dart-up-and-running/contents/c...), набор библиотек,  интегрированная среда разработки Dart Editor (http://www.dartlang.org/docs/editor/) и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm (https://www.dartlang.org/tools/webstorm/), Eclipse (https://www.dartlang.org/tools/eclipse-plugin/), Emacs (https://github.com/nex3/dart-mode), Sublime Text 2 (https://github.com/dart-lang/dart-sublime-bundle#readme) и Vim (https://github.com/dart-lang/dart-vim-plugin). Для выполнения и отладки приложений на языке Dart, без компиляции в JavaScript, распространяется Dartium (https://www.dartlang.org/tools/dartium/) - сборка браузера Chromium с интегрированной виртуальной машиной Dart VM. Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub (https://pub.dartlang.org/packages), который насчитывает 1280 пакетов, в том числе фреймворки для разработки web-приложений  AngularDart (https://github.com/angular/angular.dart) и polymer.dart (https://www.dartlang.org/polymer-dart/).


Язык Dart обладает похожим на Java синтаксисом, не требует явного определения типов и может использоваться для создания серверных и клиентских приложений. Для запуска  внутри браузера код на языке Dart может быть преобразован в JavaScript-представление или запущен напрямую под управлением специального JavaScript-интерпретатора Dartboard. Поддерживается (http://www.dartlang.org/articles/embedding-in-html/) встраивание кода на языке Dart в HTML-страницы, используя mime-тип "application/dart". На стороне сервера приложение на языке Dart может быть выполнено внутри специальной виртуальной машины, которая обеспечивает производительность выполнения близкую к компилируемым в машинный код языкам. Виртуальную машину Dart планируется интегрировать в будущие версии браузера Chrome, что позволит выполнять приложения на языке Dart без компиляции в JavaScript.

Особенности языка Dart:

-  Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java.

-  Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов;

-  Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные;

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

-  Среди поддерживаемых типов: различные виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Возможно создание своих (http://www.dartlang.org/articles/optional-types/) типов;


-  Для организации параллельного выполнения предлагается использовать классы с атрибутом isolate, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений;


-  Поддержка использования библиотек, упрощающих поддержку и отладку больших web-проектов. Сторонние реализации функций могут подключаться в виде разделяемых библиотек. Приложения можно разбить на части и поручить разработку каждой из частей отдельной команде программистов;

-  Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету ("edit-and-continue"). При помощи специальной прослойки возможно использование JavaScript библиотек в проектах на языке Dart;

-  Возможность создавать однородные системы, охватывающие как клиентскую, так и серверную часть. Использование одного языка и инструментария для клиентских и серверных компонентов упрощает процесс кодирования и избавляет от постоянной смены контекста.


В новой версии:


-  Упрощён способ установки и запуска написанных на Dart скриптов и утилит - для установки программы теперь достаточно активировать приложение выполнив команду  "pub global activate my_cool_app", после чего для его запуска достаточно выполнить my_cool_app, вместо "dart bin/my_cool_app.dart".
-  Улучшена модель изоляции кода,  добавлена возможность запуска изолированных блоков c различными пакетами (опция packageRoot), а не только под базовым приложением, что позволяет компоновать Dart-приложения с различными зависимостями.
-  В dart:async добавлен вызов errorCallback, позволяющий организовать перехват и обработку ошибок.
-  Изменён обработчик завершения соединения в HttpClient, в HttpServer добавлена новая опция HttpServer.autoCompress.
-  В dart2js добавлена возможность использования механизма отложенной загрузки при наличии нескольких Dart-приложений на одной странице.
-   Для упрощения установки и обновления Dart SDK и Dartium добавлены APT-репозитории (https://www.dartlang.org/tools/debian.html) для Debian/Ubuntu и поддержка  Homebrew (http://news.dartlang.org/2014/10/dart-launches-support-for-h...) для OS X.


URL: http://news.dartlang.org/2014/10/dart-17-easily-share-and-us...
Новость: http://www.opennet.me/opennews/art.shtml?num=40849


Содержание

Сообщения в этом обсуждении
"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Ordu , 16-Окт-14 18:45 
> "pub global activate my_cool_app", после чего для его запуска достаточно выполнить
> my_cool_app, вместо "dart bin/my_cool_app.dart".

А в чём фишка? "pub global activate" делает
export PATH="`pwd`:$PATH"; ln -s bin/my_cool_app.dart my_cool_app
Так что ли?


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Vkni , 16-Окт-14 22:04 
alias my_cool_app=dart bin/my_cool_app.dart ;-)

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено manster , 16-Окт-14 18:48 
Это что, надо будет веб серверу раздавать для хрома *.dart ? А разработчикам писать костыли для js и dart? Что-то не похоже на гугл подобное поведение.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Александр , 16-Окт-14 19:12 
Костыли на javascript уже есть.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Пиони , 16-Окт-14 19:32 
Сейчас клиент пишется на JS, сервер на чём только не пишут. Когда на клиенте и сервере нужно иметь одни либы и интерфейсы, приходится их дублировать сразу на 2-х языках - это время и деньги. Node.js частично решает эту проблему, принося на сервер JS

Dart - попытка решить эту проблему, попутно решив вопрос с резким снижением производительности JS в больших приложениях, и предоставив привычный синтаксис с обратной совместимость с JS

Моё сугубо личное мнение - у Dart есть все шансы захватить мир, и гугл проделал отличную работу


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 21:36 
>обратной совместимость с JS

Какая к черту обратная совместимость. Каждый if JS-а надо проверять, что там на самом деле тестировалось и переделывать:

if (x) {
  // code
}

Что подразумевалось: x, x!=null, x!=0, x!="" ?. А может все это вместе? Эти фишки JS-а конечно полный маразм, но какая тут совместимость.

Динамики нет, нельзя динамически порождать классы (прототипы), varargs ф-ций нет (для класс-мемберов можно запинать), eval-а нет, продолжать?


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено uhbyujdibr , 16-Окт-14 22:59 
не пиши ересь про JavaScript :)

сначала выучи его, может тогда сможешь что-то умное из себя выдавить


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено funny_falcon , 17-Окт-14 06:46 
› Динамики нет, нельзя динамически порождать классы (прототипы), varargs ф-ций нет (для класс-мемберов можно запинать), eval-а нет, продолжать?

Перечислять преимущества? Да, продолжайте.

Выше перечисленные особенности языка могут быть удобны в написании прототипа, я не спорю. Но чем больше команда, и чем чаще приходится прибегать к отделке, тем вреднее они становятся.

Например, я уверен, что php держится за счёт того, что указанные особенности хотя и возможны, но не удобны, и к ним прибегает не каждый школьник, а лишь съевший собаку.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 19:25 
> Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до ...

Konqueror, elinks, opera mini for j2me... Неужели везде будет работать?


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Crazy Alex , 17-Окт-14 01:41 
При всей полезности elinks временами - что из этого является современным браузером? А так - всё, что вменяемо умеет JS - сумеет и оттранслированный в него Dart.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Devider , 16-Окт-14 19:30 
А я согласен. Язык в котором
"2" + "2" -> "22",
"2" - 2  -> 0,
"2"-+-"2" -> 4
надо закопать как можно быстрее и глубже.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Феня , 16-Окт-14 19:49 
И почему же?

1. Конкатенация строк, тут всё обычно
2. Операция '-' для Строки и Числа. Для строк она не определена, но определена для чисел, и первый операнд недвусмысленно преобразовывается в число
3. Опущены скобки, +- выступают как последовательная пара унарных операторов, из-за чего второй последний операнд превращается в число

Что именно вам не нравится?


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено angra , 16-Окт-14 20:46 
А чему равно a+b, если a=b="2"? А как насчет сравнений?
Операции для строк должны быть определены отдельно, а не угадываться транслятором. У программиста должен быть способ однозначно указать требуемое действие.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Xasd , 16-Окт-14 21:59 
> Операции для строк должны быть определены отдельно, а не угадываться транслятором.
> У программиста должен быть способ однозначно указать требуемое действие.


var a_int = parseInt(a) // где a равно 2 или "2"
var b_int = parseInt(b) // где b равно 2 или "2"

a_int + b_int // результат: 4 .. и при этом мы точно знаем что работаем с числами (или с NaN)

(a | 0) + (b | 0) // тоже самое, результат: 4 .. но хак, и выглядит не совсем красиво.. (не может быть NaN)

a.toString() + b.toString() // результат: "22" .. у каждого объекта есть метод .toString() , даже у строки

всё довльно однозначно и ясно, на мой взгляд.. хотя быть может и слишком длинные конструкции


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено angra , 16-Окт-14 23:49 
Ну сравни
a.b против a.toString()+b.toString()
a+b против a.parseFloat()+b.parseFloat()
a le b  против a.toString() <= b.toString()
a <= b против a.parseFloat() <= b.parseFloat()

Зачем на каждую операцию сложения или сравнения делать отдельно вызовы parseFloat() и toString(), если можно просто указать это самим оператором? Что делать с человеческой ленью(а это приводит к багам) и читабельностью кода? Причем заметь, что в первом случае неоднозначно писать просто не получится, а во втором возможность сохраняется и ей будут пользоваться.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено funny_falcon , 17-Окт-14 06:56 
А зачем на одну по смыслу операцию пара операторов? Я про сравнение. Отдельная конкатенация удобна. Кстати, ею можно соединить два массива? Нет. А есть оператор сравнения массивов? по элементно... Как, тоже нет?

Беда не в том, что + можно применить и к числам и к строкам (и к массивам, в боллее лучших языках), а в том, что можно применить к строке и числу одновременно, и интерпретатор не ругнется.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Xasd , 17-Окт-14 17:11 
> и интерпретатор не ругнется.

ну уж приучите себя как-нибудь не делать детские ошибки.. :)

что я тут ещё могу сказать -- да,  Javascript это серъёзный язык, который требует внимания для того чтобы не выстрелить себе в ногу.

в реальности -- почти не существует ситуаций при которых одна и таже кустомарная функция будет принимать из одного и того же источника -- то строки то числа..

например -- на этом форуме:

document.querySelector('input[name="words"]').value // всегда будет иметь тип "строка", а не число.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Vkni , 17-Окт-14 23:14 
> ну уж приучите себя как-нибудь не делать детские ошибки.. :)

Зачем заниматься отлавливанием этих "детских ошибок", если это может делать компилятор. Ваш код на JS практически 1 в 1 переводится заменой ключевых слов и имён функций в код на OCaml'е, в котором всё статически проверяется и дури в виде сложения "2" + "2", когда нужно 2 + 2, нет и быть не может.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Vkni , 17-Окт-14 23:10 
> том, что можно применить к строке и числу одновременно, и интерпретатор
> не ругнется.

Эта проблема давно решена в современных функциональных языках (откуда и дерут всё). При этом код этими "string_of_int", "int_of_string" особо не раздувается. Т.е. полиморфизм операторов со статической типизацией вполне себе живёт и здравствует.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Devider , 16-Окт-14 20:55 
Неинтуитивность.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено uhbyujdibr , 16-Окт-14 23:06 
это не интуитивность виновата, а просто существуют люди которые не могут научиться программировать, и дальше голого изучения синтаксиса двинуться не могут

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Devider , 16-Окт-14 23:32 
Не знаю, при чем тут эти люди, но если операции + и - ведут себя принципиально по разному, это как-то странно. Большинство ЯП себе такого не позволяют, за исключением случаев, когда поведение пожно переопределить.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Devider , 16-Окт-14 20:59 
Виноват, кавычки забыл во втором примере:
"2" + "2" равно "22".
"2" - "2" равно  0.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 17-Окт-14 00:00 
> "2" + "2" равно "22".
> "2" - "2" равно  0.

Гугл крут.... Oo


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Vkni , 16-Окт-14 22:06 
> 1. Конкатенация строк, тут всё обычно

^

> 2. Операция '-' для Строки и Числа. Для строк она не определена,
> но определена для чисел, и первый операнд недвусмысленно преобразовывается в число

Зачем?

let z = 2 + (int_of_string "2")

> Что именно вам не нравится?

Неявные преобразования типов.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Диванный Специалист , 17-Окт-14 11:23 
Вы так, батенька, можете добрую половину языков программирования, используемых сегодня, на свалку истории отправить.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Devider , 17-Окт-14 12:00 
Назовите хотя бы 5 штук?

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Kodir , 17-Окт-14 13:49 
+1! (это плюсадин, а не конкатенация :) )

Вот поэтому в языке Ди есть операция ~ (тильда) - она и только она может использоваться для соединения строк.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним рус спб , 16-Окт-14 20:34 
а тут как раз пару дней назад:

Angular.Dart v1.0 is our first production-ready release

https://github.com/angular/angular.dart/commit/7a745d5df5081...


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено другой Аноним , 17-Окт-14 09:51 
Интересно соответствие его версий, версиям и возможностям JS Angular-a...

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Tav , 16-Окт-14 20:48 
> Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java.

Очередной язык, созданный быть привычным (ориентация на популярность у быдлокодеров), а не быть лучше.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Crazy Alex , 17-Окт-14 01:46 
Для того, чтобы быть лучше нужно, чтобы было то, лучше чего надо быть. А в вебе сейчас один единственный совершенно нечеловеческий (хотя местами забавный) JS. И то, что гугл пытается протянуть что-то, что может называться промышленным языком - логично и правильно. разумеется, правильнее была бы какая-нибудь VM или гвоздями прибитый NaCl, чтобы вообще выбор языка не ограничивать, но это уже другой разговор как и то, что HTML5 DOM для написания приложений малопригоден - слишком много возможностей и их комбинаций.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Tav , 17-Окт-14 11:02 
Есть масса языков, которые компилируются в JS, и на JS давно уже пора смотреть как на стандартное промежуточное представление и развивать его именно в этом направлении (asm.js — пример такого развития).  И среди этих языков есть весьма достойные примеры, которые в разной степени позволяют абстрагироваться от HTML5 и DOM.

Пара наиболее, на мой взгляд, интересных проектов:
Функциональный реактивный Elm: http://elm-lang.org/
Объектно-ориентированный Amber Smalltalk с характерной для Смолтока интерактивной средой: http://amber-lang.net/

А Дарт как язык ничего интересного из себя не представляет, очередная попытка Гугла усилить свой контроль над вебом, породив кучу сайтов, которые работают вроде как везде, но в Хроме лучше.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Crazy Alex , 17-Окт-14 13:36 
Индустриальный вебовский язык и не должен что-то особенное из себя представлять. Он должен быть понятен, предсказуем, минимизировать количество ошибок программиста, быть удобным для освоения существующей массой специалистов и давать вохможность писать как для клиента, так и для сервера. И если готовые джависты и дотнетчики могут на него сравнительно легко перейти - то это жирный плюс с точки зрения бизнеса. И нет, нет "массы языков". Есть кофескрипт, дарт и тайпскрипт. У всего остального нет никакой токовой поддержки. Учитывая, что кофескрипт - это красивая обертка над JS, не дающая дополнительной строгости - толку с него в плане написания серьезных приложений мало.

А что за любовь объявлять JS "стандартным промежуточным представлением" - не пойму. Костыль же. Если уж хотеть промежуточное представление - то надо нормальную виртуальную машину. Об asm.js вообще не говорю - костыль в квадрате, особенно по сравнению с NaCl.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 20:53 
> polymer.dart.

Гугл как бы намекает нам на перспективы этой фигни :).


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 21:40 
Теперь разработчикам Оперы надо для солидности  запилить принципиально новый ЯП

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 22:29 
> Теперь разработчикам Оперы надо для солидности  запилить принципиально новый ЯП

Так нет больше никакой оперы и разработчиков. Есть проприетарная шкурка для гуглохрома, которая почему-то называется оперой.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 16-Окт-14 21:50 
Список изменений очень скудный

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Crazy Alex , 17-Окт-14 01:47 
Логично - стабилизация. Чем быстрее перетсанут язык крутить тем больше шансов его таки запулить в продакшн.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Аноним , 17-Окт-14 07:47 
> Логично - стабилизация. Чем быстрее перетсанут язык крутить тем больше шансов его
> таки запулить в продакшн.

Язык где сложение и вычитание работает по разному надо не в продакшн а в гроб.


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Crazy Alex , 17-Окт-14 13:45 
Хм, я чего-то считал, что  это поправили. Таки да - в гроб.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено другой Аноним , 17-Окт-14 09:36 
возможно уже готовят к продакшен стадии и скоро поместят его в хром.

"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено Тупой молодец , 17-Окт-14 09:31 
>производительность выполнения близкую к компилируемым в машинный код языкам

все так говорят, только вот близкая она у единиц, и то только на синтетических тестах


"Выпуск языка программирования Dart 1.7, развиваемого Google ..."
Отправлено другой Аноним , 17-Окт-14 10:13 
>>Dart Editor requires Java version 6 or higher..

Раз уже есть стэндалон версия Dart VM написали бы Editor на том же Dart.


Мозилла в своё время привнесла JS в веб, сейчас большой шанс есть у Гугла привнести Dart с помощью его Хрома и Андроида.

Если производительность у Дарта будет заметно выше чем у JS и будет фоллбэк онлайн перекомпиляция в случае если не поддерживается Дарт (через дополнения в Мозилле и Хром для старых версий), то взлетит.