C 风格类型注解与其他注解

标签 c types static-typing type-annotation

<分区>

因此,根据我的编程经验,我遇到了静态类型语言的两种类型注释:我称它们为“之前”和“之后”。 C-Style 语言使用格式

int i = 5

虽然大多数非 c 系列语言都使用这种格式

var c:int = 5

前一类的示例是 C、C++、Java;后一类的例子是 Scala、Haxe、Go。

这在某些人看来似乎很肤浅,但我的问题是:每种风格的优点是什么?为什么要使用一个而不是另一个?为什么 C 首先采用这种风格?

最佳答案

机器不关心 - 只是设计某些语言的人觉得某些类型的语法比其他类型的语法更好或更容易阅读。现代编译器通常有几个处理阶段,几乎所有这些句法差异通常在第一阶段之后丢失,第一阶段解析文本然后转换为编译器内部结构(AST - 抽象语法树)。

有一些历史先例,例如“前缀”与“中缀”与“后缀”符号( http://en.wikipedia.org/wiki/Polish_notationhttp://en.wikipedia.org/wiki/Infix_notationhttp://en.wikipedia.org/wiki/Reverse_Polish_notation )在计算机工程历史的上下文中被用于边缘情况 - 例如“中缀”表示法通常比后缀/RPN 表示法更难解析并且需要更多的内存,因此它没有在资源非常稀缺的地方使用(几 KiB 内存或更少),但大多数这些原因现在已经过时,因为硬件是足够强大。

如今,在设计一种语言时,此类语法细节的选择受到试图使该语言类似于其他一些流行语言或已有程序员的一组语言的影响,以避免制作“来自火星的语言” "很少有人会使用。

tl;dr:取决于创建该语言的人以及他认为更具可读性或“正确的做法”)。

关于C 风格类型注解与其他注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345630/

相关文章:

scala - Scala中的现有类型

Java 泛型,严格限定参数类型

java - 通用编程有必要吗?

针对 C 中的多种类型进行编译时检查?

c - 可能是内存问题还是其他什么问题?

C:是否可以通过知道变量的地址来找到变量的数据类型

c - C 语言编程 计算字符串中的字符

c - 64位机器中LONG_MAX -1吗?

Haskell 中的嵌套空列表列表

groovy - Groovy 中带类型参数的闭包