Компания Google представила (http://news.dartlang.org/2016/08/dart-119-improved-developer...) выпуск языка программирования Dart 1.19 (http://www.dartlang.org/), который позиционируется как язык структурированного программирования для Web, обладает похожим на Java синтаксисом, не требует явного определения типов и может использоваться для создания серверных и клиентских приложений. Для запуска внутри браузера код на языке Dart компилируется в представление JavaScript, для выполнения серверных приложений развивается специальная виртуальная машина Dart VM. Код связанных с языком компонентов распространяется под лицензией 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...), набор библиотек, интегрированная среда разработки DartPad (https://dartpad.dartlang.org/) и плагины с поддержкой 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), который насчитывает 2212 пакетов, в том числе фреймворки для разработки web-приложений AngularDart (https://github.com/angular/angular.dart) и polymer.dart (https://www.dartlang.org/polymer-dart/).
В Dart 1.19 совместно с разработчиками фреймворка Flutter (https://flutter.io/) продолжена работа по предоставлению полноценных средств для разработки мобильных приложений. Например, в новой версии добавлена возможность оставления запятых после последнего аргумента при вызове или определении функций. Возможность оставлять запятые позволяет не задумываться о корректности структуры при копировании частей определения функций или изменении порядка следования аргументов, что актуально в мобильных приложениях на базе фреймворка Flutter, в которых обычно используются большие списки аргументов.
Другим заметным улучшением стало добавление опции "--no-package-dir" для команд "pub get" и "pub upgrade", которая позволяет (http://news.dartlang.org/2016/08/so-long-symlinks.html) обойтись без создания отдельной директории "packages/" для пакета, благодаря применению символических ссылок непосредственно в директории проекта. В будущих выпусках данную опцию планируется активировать по умолчанию.URL: http://news.dartlang.org/2016/08/dart-119-improved-developer...
Новость: http://www.opennet.dev/opennews/art.shtml?num=45035
Живее всех живых, давно пора выкатывать DartVM в FF и Chromium
Серьезно? вот прям пора? А почему именно дарт? А может давайте все альтернативы жаваскрипту сразу выкатим во все браузеры?
Dart это отдельная тематика, тем кто еще не болен смертельной болезнью JS.
А, он для тех кто болен дартофилией?
Именно поэтому он компилируется в js? :)
правильно, давно уже пора интегрировать .NET CLR
Суахили тоже очень даже жив, почему бы вам не выкатить его в серые рабочие будни?
Сударь, у вас подгорает синим пламенем)))
WebAssembly наше все. Надеюсь, скоро я все реже буду видеть js код, а dart не увижу никогда на сайтах. Ненавистные хендлеры и тригеры по селекту с глобальной областью видимости, написанные людьми не умеющими писать на js, меня зае*али.
долой нечитаемые бинарники!
> долой нечитаемые бинарники!Кем нечитаемые? Машины вполне справляются. Обфускация — право автора оградить свой код от излишнего использования. Это в некотором роде способствует снижению теплового шума во Вселенной.
>>Обфускация — право автора оградить свой код от излишнего использованияПроприетаристы на моём OpenNET?
> Проприетаристы на моём OpenNET?http://lwn.net/Articles/430098/
> Red Hat's "obfuscated" kernel source
> Distribution in this form should satisfy the GPL, but it makes life hard for
> anybody else wanting to see what has been done with this kernel.Двойные стандарты лапчатых в действии - это вот так.
Так пусть не выкладывает свой код! Пусть организует стрим трансляцию. От меня к нему идут байты - куда я мышь сдвинул и где кнопочку нажал, а от него идёт видео + аудио. html + css + js тем и хороши, что можно на коленке в консоли чуть ли не на баше распарсить и обработать. А то мало того что далеко не все веб страницы справляются со своей задачей, так ещё и трояны будут пропихивать!
>долой нечитаемые бинарники!даешь нечитаемый жопоскрипт!
Он всё равно будет более читаемым.
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');Знаешь что это? Это "alert(0)". Have fun.
https://habrahabr.ru/post/112530/
Во что не заворачивай JS - будет исполняться именно JS.
А это значит:
- Никакой типобезопасности во время выполнения
- веселье с Nan, Undefined, Null и др
- Дополнительное время компиляции проекта. (+ 5 минут при полной перекомпиляции в нашем случае)
- Молчаливое согласие если что-то пошло не так.JS - убогий неисправимый язык, который доставляет мне невыносимую боль.
Убери кактус со стула, на котором сидишь во время программирования :D
> типобезопасности во время выполненияЧто-то новенькое. Может просветите?
Например, у нас есть тип SomeType.
Мы передаем объект этого типа в какой-нибудь модуль на JS. Внутри этого модуля кладем в наш объект какую-нибудь хрень. Затем прдолжаем с ним работать.
Когда мы продолжим с ним работать, у нас скорее всего без какого-либо адекватного сообщения об ошибке что-либо где-либо не отразится.Может не очень корректно выразился
> Например, у нас есть тип SomeTypeХорошо, допустим.
> Мы передаем объект этого типа в какой-нибудь модуль на JS
А зачем? Если модуль написан вами -- достаточно зависеть от интерфейса, а не от типа. Если же у вас там делается assert(passedObject instanceof SomeType, "Tafuck are u doin dude, i want SomeType!!11"), то тут проблема в организации зависимостей. Гугли DI, IoC. А если модуль не ваш, и он втихаря объявляет в passedObject какие-нибудь геттеры-сеттеры -- то передавай ему свежесозданную копию. Загугли также pure functions -- все ваши проблемы сугубо организационные.
> Внутри этого модуля кладем в наш объект какую-нибудь хрень
Так и есть: проблема организационная. Такую же штукенцию (с мутированием передаваемых объектов и прочими side-эффектами) можно и на питоне, и на плюсах замутить. Что гуглить, я уже подсказал -- если молоток бьет по пальцам, то менять его бесполезно, другие молотки тоже будут бить.
Вы, вероятно, считаете что если, например, в результирующем машинном коде никаких типов нет, то и типобезопаность стирается в процессе компиляции вместе с ними?
> JS - убогий неисправимый язык, который доставляет мне невыносимую боль.Варианта тут всего три: овладеть языком, продолжить страдать, сменить работу.
> Варианта тут всего три.Как минимум 5
4. Отказаться от некоторых фич js, чтобы минимизировать количество кода на js.
5. Писать нативные приложения.
Вы забыли предложить самый радикальный вариант "вообще приложений не писать".И наиболее практичный и наименее сложный - писать на любом нормальном языке, который умеет генерировать JS.
Ну,если комментатор может внести изменения в js, тогда да. Но скорее всего такой власти у него нет, и даже нет возможности выбирать язык разработки. Поэтому оба варианта отпадают.
Не очень тонко.
Предложите кому-нибудь написать сервер на ноде, чтобы платежи обрабатывал, деньги считал.
У вас x86 (или ARM, MIPS или хоть PDP-11, не важно) код сейчас исполняется, на каком бы языке вы его не писали.
Означает ли это "никакой типобезопасности", "nan, undefined, null" и молчаливые согласия?
Означает ли это "никакой типобезопасности", "nan, undefined, null" и молчаливые согласия в одинаковой степени вне зависимости от языка программирования?
boolean isFalse = "false";
true + false
6 / "3"
null + 1
undefined + 1
undefined + NaNРуки за такое отрывать надо.
Руки надо отрывать программистам, чей код содержит такие вещи.
Естественно что адекватный человек не напишет подобного.
Такой код появляется опосредованно, не явно. Он как суслик
Специально для таких случаев на белом коне прискакал TypeScript. Если же данные приходят откуда-то со стороны, то ничто не мешает произвести проверку на соответствие схеме.
Прямо в машинных кодах и не такое можно написать.
Но вы обычно прямо в них не пишете.
Он наверное еще думает, что если в каком-нибудь ЯП есть понятие "приватный член", и если возможно физическое изменение значения приватного члена в оперативной памяти в обход логики класса, объявившего этот приватный член, то в этом ЯП понятие приватного члена дискредитировано и не существует в реальности.
Во что превратили этот веб.. Постоянное нагромождение костылей.. Хорошо, что Тим Бернес-Ли хочет создать новый
NIH (Not Invented Here) синдром.
Dart уже давно остановился в развитии.
- На стандартизацию TC52 ECMA забили большой и толстый.
- Dart Dev Compiler скорее жив чем мертв.
- Polymer.dart точно мертв или притворяется, что сдох.
- Из Angular 2 выкинули Dart потому что оно, пятое колесо, телеге не нужно.
- На актуальные и злободневные вопросы у разработчиков ответов нет, как впрочем и не было никогда.
Автор этой новости похоже любит копи-пастить (copy-paste).
Уже вторая новость (а может и больше, я не проверял) где утверждается, что имеются "плагины с поддержкой Dart для Eclipse".Ну, нет такого плагина. Нет. Сдох он уже много лет назад.
И ссылка, кстати, ведет в никуда.
https://www.dartlang.org/tools/eclipse-plugin/P.S.
Каюсь, сам балуюсь copy-paste, но то кодирование, но здесь то ведь новость, а не алгоритм какой-то.
используй функции
>> используй функцииВместо алгоритмов?
при использовании вима не только функции - даже циклы не требуются: достаточно нажать yy1000p, и он добавить 1000 копий текущей строки.
Причем здесь vim?
Основной комментарий был о том, что в тексте новости имеются неточности.
Также упоминалось об операциях copy-paste.
Но неужели имеется какая-то очевидная связь между этим?То есть:
Текст новости с неточностями + copy-paste = vim?
Джава скриптеры такие тупые ^_^ насилуют "use strict"
Да действительно, давно ведь уже есть eslint с правилами от airbnb.