2014年11月15日

[知乎]如何抽象评判现有语言优劣,继而设计一款别具优雅的计算机语言 X ?

作者 zhuangbiaowei

update: 如何写一个让人看不懂的优雅的「Hello World」?
这个问题,让我理解@陈甫鸼 的愤怒从何而来了!

——————————————————————————————

我反对目前排名第一的@陈甫鸼 的答案,因为答非所问。抓住「优雅」两个字,就开始吐槽,而问题的本身,要点在于:「如何评判语言的优劣?」。

由于我对这方面也有不少的兴趣,也看了不少类似的书籍和文献,目前家里手边能够翻出来的书,有这样两本:《程序设计语言原理 (豆瓣)》、《程序设计语言 (豆瓣)》。后面一本的第三版,也翻译出来了《程序设计语言 (豆瓣)》。

这些都是国外的经典教材,题主如果真心想研究这个领域,可以从这样的教材入手开始学习。在知乎提这样的问题,只怕有问道于盲的危险。

在《程序设计语言原理》的第一章、第1.3节「语言评估标准」中,谈了以下几个标准:

1. 可读性
1.1. 整体简单性
1.2. 正交性
1.3. 控制语句
1.4. 数据类型和数据结构
1.5. 语法考虑
2. 可写性
2.1. 简单性与正交性
2.2. 支持抽象
2.3. 表达性
3. 可靠性
3.1. 类型检测
3.2. 异常处理
3.3. 别名使用
3.4. 可读性与可写性
4. 代价

在《程序设计语言》的第一章、第1节,「语言设计的艺术」中,也谈到了类似的一些方面:

发展进步
特殊用途
个人偏爱
表达能力
新人容易上手
易于实现
有很好的编译器
经济,支持者和惯性

由于不打算单纯的抄书转帖,就写到这里了。接下来,谈谈我对工程与科学的关系的看法。计算机工程,有计算机科学作为基础,虽然在很多时候,我们不了解计算机科学,也照样能够做好编程的工作。但是,因此而扭曲得去鄙视计算机科学,就有些过了。

相应的哲学也是一样,你可以说自己对哲学问题,不愿意多想,不愿意多谈。但是,鄙视哲学,鄙视一切相关的讨论,就有些过了。

再吐一个槽,在这个问题下面,我居然发现了一个被折叠的回答:
如何抽象评判现有语言优劣,继而设计一款别具优雅计算机语言 X ?

我无法理解,为何这个答案会被折叠???那些投票反对,并认为没有帮助的人,有谁能够告诉我为什么吗???

扩展阅读:聊聊语言之争