21

两种语言都声称可以修复 JavaScript 的感知缺陷。我想了解 CoffeeScript 和 Dart(编译为 JavaScript)如何实现这一点的主要区别。尤其,

  • 对象模型与 JavaScript 中的相同吗?
  • 它们是静态类型还是动态类型?强还是弱?
  • 闭包在这两种语言中是如何工作的?
  • 他们支持协程吗?
  • 语法的主要区别是什么?
  • 我可以使用多少个本机库?
  • 我可以使用现有的 JavaScript 库吗?

我对个人偏好、采用率、工具支持或对特定目的的有用性等不感兴趣。

4

3 回答 3

19

Seth Ladd 有一篇文,他将 CoffeeScript 的某些方面与 Dart 和 JavaScript 进行了比较。不会触及你所有的子弹,但可能是一个开始。他还发布了这个讨论来回应关于 nettuts 的 Coffeescript 和 Dart 文章。

于 2012-04-15T23:36:01.027 回答
1

添加到 Richard G 的出色链接: 您可以在 CoffeeScript 中使用 JavaScript http://coffeescript.org/#embedded 在该站点上测试 CoffeeScript;很多很好的例子。

IIRC,Dart 最初是它自己的语言。当开发社区对 Dart 不那么开放(“meh”或“ugg”)时,Google 将 JavaScript 交叉编译添加到了 Dart。Native Dart 最终是为了与 JavaScript 竞争。Dart 现在是 alpha 质量的;除非您进行大量测试,否则我会跳过它。

对我来说,一个更好的问题是,“我应该使用 CoffeeScript 还是Haxe JS进行开发?”

于 2012-04-16T04:23:58.580 回答
0

我在 MarakanaTechTV 上找到了一个新视频,其中有一些Dart 与 JS的比较(主要与 Dart 的 VM 相关,而不是从 Dart 渲染到 JS 时)。强调:

  • 更多基于类(与 JS 的原型相反,它们相似,但 dart 在这里更像 Java 和 C++。这有助于使 Dart 更快,因为调用不必沿 Prototype 链向上传播。)
  • 对象大小可能是静态且密集的,有助于对象数组运行得更快。虽然如果你想要空洞数组,你可以使用“地图”。
  • Int 数学很容易获得,它比双浮点数更快(JS 或多或少总是如此)。
  • Dart 具有 SIMD,可以减少大型数据集 CPU 使用率(例如图像、音频、视频、3d、大表)。尽管除非您打算在浏览器中处理图形、音频或大型数字表,否则这对您来说并不重要。(顺便说一句,我不同意演讲者的观点;我自己翻译为 DSP 的 SIMD 显示切换到 SIMD 确实需要一些“开销”,因为 SIMD 操作码确实比典型的 double/int 操作码需要 1 个或多个周期,并且您必须花费用于在 SIMD 和“旧”数学之间转换的操作码。也就是说,即使将 SIMD 用于 2 通道(如立体声音频),您也可以节省至少 20% 的 CPU,如果使用全部 4频道)。

还有另一个“为什么 Dart? ”为网络开发人员提供的视频。方便的语言糖/快捷方式:命名收缩器、词汇“this.”、方法级联。像 Angular.js 这样的内置数据绑定。

于 2013-04-13T18:47:03.363 回答