繁体   English   中英

为什么 Dart 的类型注解在左边?

[英]Why are Dart's type annotations on the left?

新语言 TypeScript、Kotlin、Scala 和 Rust 都在右侧有类型注释,但 Dart 在左侧有类型注释。 这是出于某种原因或利益而设计的吗? 在未来的路线图中或开发 Dart3 时,类型注释是否有可能更改为右侧? 我喜欢 Dart 的大部分内容,但我不喜欢这种语法。 我一直在寻找一个讨论这个问题的线程,但找不到一个。 有没有在任何地方讨论过?

Dart 语法的灵感来自 Java/C#/JavaScript,它们都来自 C 系列语言语法。 达特也在那个家庭。

使用类似 C 的语法意味着在声明中将类型放在标识符之前,并使用该位置来识别什么是类型,什么不是。 这就是您可以为类型和变量使用相同名称的原因。 (不是你应该,但语法并不关心)。

目标是让这些语言的用户熟悉。 让那些语言的用户不感到惊讶是一个明确的目标。

Dart 还有其他 C 语法特性,例如条件运算符? / :for(..;..;..)..循环,并以;结束语句 . 它很熟悉,如果那是你已经熟悉的东西。

在添加新的语言特性时,使用类似 C 的语法也有其缺点。 因为 C 语法在语法上非常密集,所以在空白处添加新语法的空间不大。 大多数事情已经有意义,并且存在是有原因的(例如,删除分号非常困难,因为语法不是为了能够猜测新语句的开始位置而构建的。)另一方面,它在语法上很密集也,又名“不冗长”。 这通常被认为是一件好事。

至于在 Dart 3.0 中发生较大语法变化的几率,比如将类型向右移动……我会说 0.0%。

它必须是一个非常有价值的更改,而不是必须迁移现有的每个 Dart 文件 简单地将类型移动到代码中的另一个位置本身并不会如此。 它必须是对整个语言语法的完全重新想象。 并且应该仍然永远支持旧语法。 (也许 Dart 10.0 NSE - 新的语法体验!)

为什么 Dart 的类型注解在左边?
Dart (Dash) 旨在取代 JavaScript。
Dart 的开发人员(与其他现代语言的开发人员不同)毫不犹豫地复制了 JavaSctipt 和 Java 的大部分语法。
主要原因是复制流行编程语言的语法。
不是最好的,但最简单的方法。
回忆一下Function类型定义的长期存在的问题就足够了。

所有这些都表明 Dart (Dash) 的开发人员最初并没有计划投资为新语言开发新的现代语法(不像其他开发人员没有走复制现有语言语法的简单路径)。
可以假设他们选择了这种最简单的方法来开发最新的编程语言,因为开发人员不确定主要目标是否会实现。 而且,众所周知,主要目标是创建一种可以替代 JavaScript 的语言。
但奇迹并没有发生,Dart (Dash) 也从未成为 JavaScript 的替代品。
在这种情况下,这可能部分地证明了为什么最初将资金用于语言设计的开发是为了其他编程语言开发人员没有节省的东西。 在这种情况下,这为语言赋予了现代外观,最重要的是,赋予了实用的设计。

附言
显然,如果某些东西非常好模仿并将两个(流行的)合二为一并稍微修改它(但在创新中必须不要过度),那么您只能在此基础上指望成功。

请原谅我的不准确之处。 主要目标不仅仅是取代 JavaScript,而是ultimately取代 JavaScript。

The goal of the Dash effort is ultimately to replace JavaScript as the lingua franca of web development on the open web platform.

全文链接: https ://gist.github.com/paulmillr/1208618

...浏览器虚拟机——我们的愿望是,Dash 最终将成为 Javascript 的可行替代品,作为所有浏览器选择的本地客户端语言。

哦...
同时,在初始阶段,没有做任何事情来使语言的设计实用(即适合其结构的未来改进)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM