49

就他们试图解决的问题而言,我没有看到Dart的意义。

我读到它是由于 JavaScript 的缺点而创建的,但是没有给出这些缺点。

有人可以解释学习 Dart 而不是我学习 Node.js 的好处吗?

4

2 回答 2

64

我认为它的主要问题是解决创建大型、多开发人员应用程序的问题。

在 Javascript 中,我可以编写完全有效的代码:

function x(y) {
 return y*y;      
}

document.write(x(3,4,5));

这将执行得很好,但这显然是一个错误。

现在将几个开发人员和几个月的函数定义和函数调用分开数千行代码的代码库。

原始函数 x(y) 最初可能是函数 x(y,z,a),但后来随着时间的推移进行了重构。这就是 javascript 对我来说失败的地方,这就是 dart 将帮助解决的问题。

编辑(2013 年 5 月)除了我上面的回答(我相信这仍然适用)之外,我认为性能故事也变得非常引人注目。Lars Bak 和 Kasper Lund在 Google I/O 上的演讲提供了一些证据。

于 2011-10-18T20:55:37.543 回答
41

技术概述似乎很好地总结了差异:

  • 类:虽然 JavaScript面向对象的并且它提供类(至少在其最新版本中),但它实际上是一种基于原型的语言,而不是基于类的语言。虽然这本身并不糟糕,但它与大多数主要的 OO 语言不同,这使得大多数人更难学习。

  • (可选)静态类型:您不能在纯 JavaScript 中进行静态类型(如:“由编译器检查”)。优点(和缺点)是众所周知的,并已被广泛讨论。

  • 对库的语言支持:“在此之前加载该文件”是实现库的一种非常原始的方式,大多数现代语言都以某种方式明确支持库。

该页面还提到了工具,但这不是语言之间的固有差异。诚然,静态编译和类型化的语言更容易为其编写好的工具,但这并不是编程无法解决的根本区别。

于 2011-10-10T11:32:06.053 回答