November 2014 Archives

理论上,所有程序都是等价的。基于lambda演算的函数式和基于图灵机的过程式都是等价的。那为啥还会有汇编,C,Python这么多语言?
那是不是大家直接在图灵机层面写机器码?把LISP去掉宏直接用lambda写code?

我自己的理解,所谓语言,本质是服务于人机交互的目的。人机交互的核心问题是人脑能理解的东西和带宽都是相当有限的。因此语言,本质上就是一套抽象规则,核心目的是把信息量提升到人能读写的程度。所以衡量语言优劣的核心问题,是提升信噪比的问题。

在满足这一前提的情况下,再尽量减少规则的数量,实现小内核,提升规则的正交性等目的,来方便使得语言易于学习和理解;最后才是提升语言本身的运行性能。所以这套规则是不是严格正交的,是否无冗余之类的完美性问题,都是相对次要的。

站在这个角度来说,语法糖当然是很有必要的东西,可以大大提升信噪比。只要别滥用语法糖,让语法糖本身成为噪音的一部分,就没啥理由去反对它。