Подтвердить что ты не робот

Каковы основные различия между улучшениями CoffeeScripts и Darts на JavaScript?

Оба языка претендуют на исправление недостатков JavaScript. Я хотел бы понять основные различия в том, как CoffeeScript и Dart (скомпилированные для JavaScript) стремятся к этому. В частности,

  • Является ли модель объекта той же, что и в JavaScript?
  • Являются ли они статически или динамически типизированы? Сильно или слабо?
  • Как закрытие работает на любом языке?
  • Поддерживают ли они сопрограммы?
  • В чем основные отличия в синтаксисе?
  • Сколько встроенных библиотек я могу использовать?
  • Можно ли использовать существующие библиотеки JavaScript?

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

4b9b3361

Ответ 1

У Сета Лэдда есть сообщение в блоге, где он сравнивает некоторые аспекты CoffeeScript с Dart и JavaScript. Не касается всех ваших пуль, но может быть началом. Он также разместил этот обсуждение в ответ на статью Coffeescript и Dart о nettuts.

Ответ 2

Чтобы добавить к Ричарду Г. отличные ссылки: Вы можете использовать JavaScript внутри CoffeeScript http://coffeescript.org/#embedded Проверьте CoffeeScript на этом сайте; множество замечательных примеров.

IIRC, Дарт сначала был собственным языком. Когда сообщество разработчиков было не так открыто для Дарта (либо "meh", либо "ugg" ), Google закрепил в JavaScript кросс-компиляцию в Dart. Native Dart в конечном итоге конкурировать с JavaScript. Дарт теперь альфа-качества; Я пропустил бы это, если вы не будете много тестировать.

Для меня лучший вопрос: "Должен ли я развиваться в CoffeeScript или Haxe JS?

Ответ 3

Я нашел новый вид на MarakanaTechTV, который имеет некоторое сравнение Дарта против JS (в основном привязанного к Dart VM, а не при передаче JS от Dart). Основные характеристики:

  • Более класс основан (в отличие от прототипов JS, которые похожи, но dart больше похож на Java и С++ здесь. Это помогает сделать Dart быстрее, так как вызовам не нужно перемещаться по цепочке прототипов.)
  • Размеры объектов могут быть статическими и плотными, помогая массивам объектов работать быстрее. Хотя вы можете использовать "карту", ​​если хотите дырявые массивы.
  • Int maths легко доступны, которые быстрее, чем double-float (что JS более или менее всегда).
  • Dart имеет SIMD, который может уменьшить использование ЦП на больших массивах (например, изображения, аудио, видео, 3d, огромные таблицы). Хотя, если вы не планируете обрабатывать графику, аудио или большие таблицы номеров внутри браузера, это не имеет значения для вас. (BTW, я не согласен с динамиком, мои собственные переводы в SIMD для DSP, показанные при переключении на SIMD, требуют некоторых "накладных расходов", поскольку код SIMD выполняет 1 или более циклов по типичному операционному коду double/int, и вам приходится тратить opcodes для перевода между SIMD и "старыми" математиками. Тем не менее, даже используя SIMD для 2-канального (например, стерео аудио), вы можете сэкономить минимум 20% CPU и до 3,7-кратного увеличения скорости, если вы используете все 4 каналы).

И еще один Почему Dart?" для веб-разработчиков. Удобный язык сахара/ярлыки: named constrictors, lexical 'this.', Метод каскадов. Встроенная привязка данных, например Angular.js.