for1096 for1096
en
关注数: 11 粉丝数: 31 发帖数: 1,114 关注贴吧数: 43
写点废话 偶然看到有个人在某处喷 pre-ANSI 语法,看的我不爽,找来这个没人的地方发点牢骚。 所谓 pre-ANSI 语法,这里讲的是 C 语言(不过那个人讨论的不是 C 语言),它最初被标准化的时候是在 ANSI 由一个委员会制定的,所以我们把标准化的 C 语言称为是 ANSI C(或者应该说,把现在由 ANSI 以及 ISO 维护着的 C 语言标准称为 ANSI C)。 这里的 pre-ANSI 说的是这样一种函数定义语法: int main(argc, argv) int argc; char **argv; { return 0; } 这个语法至今仍然是兼容 C 语言的 ANSI 标准的(说到这些标准时总是说最新的标准,每当新标准通过旧标准就作废了)。我个人比较喜欢把这个风格称为是 K&R 风格。 这个语法除了一点——大家不习惯——之外我觉得它唯一的缺点就是打字比较多。 但是我的观点是:这个语法实际上比现在被接受的 C 语法更加合理。 拿 Common Lisp 的 setq 举例,(setq a 1),我们总是先列出名字,再给出一个值。 我认为在静态类型的语言中,与此相似,实际上我们应该先约定一个新的名字,然后再描述这个名字满足怎么样的要求。 在视觉上,我也认为,名字更重要。按 Lisp 的风格,或者具体来说按 Clojure 的风格,不同的类型可以被同名的函数处理,也就是说,说到底具体是怎样的类型并不重要,重要的是我们对绑定/变量做了什么操作。因此在进行这些操作之前,重要的还是名字,具体类型只是限定了你今后能进行的操作的范围。 总结来说,我认为先给类型再给名字的 C 家族风格本来就是不合理的,我们不一定要继续在这条路上走下去。
1 下一页