Я проверил сайт очень кратко, и мне стало любопытно. Есть ли преимущества использования дартс? Это просто замена для JavaScript?
Это выглядит как более простая Java. Написание довольно много C # на работе, язык очень похож на то, к чему я привык, поэтому изучение синтаксиса выглядит как легкий для изучения. Есть ли у кого-нибудь мнения или опыт работы с языком?
(По сравнению с CoffeeScript (= я не использую синтаксис Ruby), синтаксис выглядит мне более знакомым).
javascript
dart
Marko
источник
источник
Is there any advantages of using Dart?
значит? Преимущество над чем и измеряется как ? Существует множество языков, которые компилируются в JavaScript. Большинство из них делают что-то намного лучше, чем Дарт. Некоторые делают большинство вещей лучше, чем Дарт. И, например, если вы делаете C #, то ScriptSharp может быть вам интересен. Хотя из всех языков, компилируемых в JavaScript, это было бы далеко не моим первым выбором, для вас это было бы очень простым переходом, возможно, даже позволяющим безболезненно переносить существующий код.Ответы:
Спасибо за ваш вопрос! Полный отказ от ответственности, я работаю в команде Dart.
Вероятно, лучшее преимущество, которое Dart имеет сегодня, - это то, что он знаком с C #, Java, C ++ и большинством разработчиков JavaScript. Многие разработчики имеют ряд ожиданий относительно своего языка (OO на основе классов, лексическая область действия, знакомый синтаксис) и своих инструментов (завершение кода, рефакторинг, навигация по коду, отладка), которые Dart стремится удовлетворить и превзойти.
Вот некоторые вещи, которые мне нравятся в языке:
Необязательные статические типы. Когда я создаю прототипы или просто пишу небольшие сценарии, я не использую тонну статических типов. Я просто не нуждаюсь в них, и я не хочу увязнуть в церемонии. Однако некоторые из этих сценариев превращаются в большие программы. По мере масштабирования сценариев я стремлюсь к классам и аннотациям статических типов.
Невинен до тех пор, пока его вина не доказана. Dart старается свести к минимуму ситуации, которые приводят к ошибке во время компиляции. Многие условия в Dart - это предупреждения, которые не мешают запуску вашей программы. Зачем? В соответствии с модой веб-разработки крайне важно позволить разработчикам попробовать немного кода, нажать кнопку перезагрузки и посмотреть, что произойдет. Разработчик не должен сначала доказать правильность всей программы перед тем, как тестировать часть кода.
Лексическая сфера. Это круто, если вы к этому не привыкли. Проще говоря, видимость переменных, и даже это , определяется структурой программы. Это устраняет класс головоломок в традиционном веб-программировании. Нет необходимости в функции повторного связывания, чтобы держать это к тому , что вы думаете , или ожидать.
Настоящие занятия запекаются на языке. Понятно, что большинство разработчиков хотят работать в классах, так как большинство фреймворков для веб-разработки предлагают решение. Однако «класс» из фреймворка A не совместим с фреймворком B в традиционной веб-разработке. Дарт использует классы естественно.
Функции верхнего уровня. Одна из болезненных частей Java - все должно быть помещено в класс. Это немного искусственно, особенно если вы хотите определить несколько вспомогательных функций. В Dart вы можете определять функции на верхнем уровне, вне любого класса. Это делает композицию библиотеки более естественной.
Классы имеют неявные интерфейсы. Устранение явных интерфейсов упрощает язык. Больше не нужно определять IDuck везде, все, что вам сейчас нужно, это класс Duck. Поскольку каждый класс имеет неявный интерфейс, вы можете создать
MockDuck implements Duck
Именованные конструкторы. Вы можете дать конструкторам имена, которые действительно помогают с удобочитаемостью. Например:
var duck = new Duck.fromJson(someJsonString)
Фабрика конструкторов. Фабричный шаблон довольно распространен, и приятно видеть, что это запечатлено на языке. Конструктор фабрики может возвращать одноэлементный объект, объект из кэша или объект подтипа.
Изолятов. Прошли времена совместного использования изменяемого состояния между потоками (техника, подверженная ошибкам). Изолят Dart - это изолированная куча памяти, которая может выполняться в отдельном процессе или потоке. Изоляты общаются путем отправки сообщений через порты. Изолирует работу в виртуальной машине Dart и может компилировать ее для веб-работников в приложениях HTML5.
Дарт компилируется в JavaScript. Это очень важно, так как JavaScript является языком общения в Интернете. Дартс приложения должны работать в современном Интернете.
Сильный инструмент. Проект Dart также поставляется с редактором. Вы найдете завершение кода, рефакторинг, быстрые исправления, навигацию по коду, отладку и многое другое. Также у IntelliJ есть плагин Dart.
Библиотеки. Вы можете организовать код Dart в библиотеки, чтобы упростить пространство имен и возможность повторного использования. Ваш код может импортировать библиотеку, а библиотеки могут реэкспортировать.
Строковая интерполяция. Это просто приятная особенность, облегчающая создание строки:
var msg = "Hello $friend!";
noSuchMethod Dart - динамический язык, и вы можете обрабатывать произвольные вызовы методов с помощью
noSuchMethod()
.Обобщения. Возможность сказать «это список яблок» дает вашим инструментам гораздо больше информации, чтобы помочь вам и заранее обнаружить потенциальные ошибки. К счастью, дженерики более простые, чем те, к которым вы, вероятно, привыкли.
Перегрузка оператора. Классы Dart могут определять поведение для таких операторов, как
+
или-
. Например, вы можете написать код, какnew Point(1,1) + new Point(2,2)
.Сказав все это, есть еще много библиотек JavaScript.
Лично я считаю, что в Интернете есть место для многих языков. Если приложение классное и оно работает в большинстве современных браузеров, мне все равно, на каком языке оно написано. Пока вы, разработчик, счастливы, продуктивны и запускаетесь в Интернете, это какие вопросы! :)
источник
Это один момент о Дарт. Javascript считается неловким языком с несколькими общими идиомами. В языке, подобном Java, часто существует естественный способ решения проблемы. Например, если вы ведете инвентаризацию таблицы, в Java или C # вы создадите класс Table.
Javascript не имеет классов, вы можете захотеть использовать прототипы, но они чувствуют себя неловко и не предоставляют такой сильной структуры и инструментов инкапсуляции. (По крайней мере, не делая никаких трюков.) Наследование, композиция и т. Д. Неудобны с прототипами Javascript. Вот почему большинство людей используют простые хэш-карты для хранения данных. Или они используют сторонние библиотеки, такие как прототип, который дает вам классный опыт.
Так что удобство - это одно, а структура - другое. Javascript просто плохо масштабируется, потому что не существует стандартного способа структурирования крупномасштабных приложений. Однако в настоящее время такие сторонние библиотеки становятся действительно популярными. (Например, backbone.js)
Дарт это что-то, чтобы решить это. Он создан для того, чтобы дать вам структурное удобство Java и, кроме того, в нем нет всех этих неуклюжих функций JS. (Большинство из них связано со слабой типизацией.)
Так что ответ да: классы, наследование, ...: "традиционный ООП". (Большинство реальных веб-приложений JS там используют основанный на обратном вызове jQuery в качестве основной структуры.) И он имеет свободную форму статической типизации, однако это не ключевой момент продажи.
Кстати: вы можете прочитать эту «внутреннюю» рассылку Google от 2010 года: будущее Javascript
источник
Для меня это дает мне возможность структурировать мой код лучше, чем JavaScript с областью действия и классами.
Это похоже на Java и JavaScript, и с редактором Dart у меня была почти нулевая адаптация. Я сразу начал кодировать.
var ws = new [Moz]WebSocket
необходимость обслуживать разные браузеры раздражает. Dart компилируется в код JavaScript, совместимый с популярными браузерами.Моя задача в основном заключается в взаимодействии с кодом JavaScript. Я как-то нахожу способы обойти это, но было бы лучше, если бы это было частью Дартс.
источник
Подход Java / C # определенно предвзят в сбивании JS с момента появления web 2.0. Это происходит из-за искусственного (или очень реального и необходимого) различия между языками на стороне клиента и языками на стороне сервера. Я думаю, это так, чтобы язык на стороне сервера мог «контролировать» основные проблемные области веб-приложений и отделять менее серьезный код (код пользовательского интерфейса) от бизнес-кода (на стороне сервера). Кроме того, я думаю, что Java любит оставаться серверным ядром, поскольку оно проиграло войну с графическим интерфейсом с апплетами, в основном из-за Flash и HTML 5. Теперь у вас есть RedTamarin - проект NodeJS-esque AS3, ссылающийся на плюралистическое смешанное будущее унифицированных фронтальных и бэкэнд-парадигм ,
источник