第三节:简洁
假定你的语言已经能够满足上面三项条件--一种免费的实现,一本相关书籍,以及语言所依附的计算机系统--那么还需要做什么才能使得黑客喜欢上你的语言?
黑客欣赏的一个特点就是简洁。黑客都是懒人,他们同数学家和现代主义建筑师一样,痛恨任何冗余的东西或事情。有一个笑话说,黑客动手写程序之前,至少会在心里盘算一下哪种语言的打字工作量最小,然后就选择使用该语言。这个笑话其实与真实情况相差无几。就算这真的是个笑话,语言的设计者也必须把它当真,按照它的要求设计语言。
简洁性最重要的方面就是要使得语言更抽象。为了达到这一点,首先你设计的必须是高级语言,然后把它设计得越抽象越好。语言设计者应该总是看着代码,问自己能不能使用更少的语法单位把它表达出来。如果你有办法让许多不同的程序都能更简短地表达出来,那么这很可能意味着你发现了一种很有用的新抽象方法。
不要觉得为用户着想就是让他们使用像英语一样又长又啰嗦的语法。这是不正确的做法,Cobol 就是因为这个毛病而声名狼藉。如果你让黑客像下面这样求和:
add x to y giving z
而不是写成:
z=x+y
那么你就是在侮辱黑客的智商,或者自己作孽了。
简洁性是静态类型语言的力所不及之处。不考虑其他因素时,没人愿意在程序的头部写上一大堆的声明语句。只要计算机可以自己推断出来的事情,都应该让计算机自己去推断。举例来说,hello-world 本应该是一个很简单的程序,但是在 Java 语言中却要写上一大堆东西,这本身就差不多可以说明 Java 语言设计得有问题了。
单个的语法单位也应该很简短。Perl 和 Common Lisp 在这方面是两个不同的极端。Perl 的语法单位很短,导致它的代码可以拥挤得让人无法理解,而 Common Lisp 内置运算符的名称则长得可笑。Common Lisp 的设计者们可能觉得文本编辑器会帮助用户自动填写运算符的长名称。但是这样做的代价不仅是增加了打字的工作量,还包括提高了阅读代码的难度,以及占用了更多的显示器空间。
更多武汉IT培训相关资讯,请扫描下方二维码