编程语言中那些逼死强迫症的设定
编程语言是好的,创造了这个世界上形形色色的程序。但总有些设定会让人感觉奇奇怪怪的。
(1)分号结束一个语句。C语言开此先河,后续很多语言模仿。结束一个语句不应该是句号吗?那应该用一个点。可是一个点的应用已经很广泛了,包括小数点,面向对象编程时访问属性和方法。一个点再多一种用途,似乎也能接受。
(2)有Begin,没有End。Scheme语言是这样的。因为Scheme可以有很多的括号来表示End,所以也能勉强接受。大概强迫症无法接受。
(3)有End,没有Begin。Lua语言是这样的。用End来结束语句,却不用Begin来开始。
(4)没有Begin,也没有End。光秃秃的。Python语言是这样的。而且缩进管理非常严格,多一个空格就无法通过编译。这一点应该是强迫症的福音。什么都不用了,看起来舒服多了。用的是空白,看不见。
(5)既有Begin,也有End。Pascal和Ada语言是这样的。这样的设定看起来舒服很多。强迫症应该学类似这两种的语言。
(6)列表的末尾可以加逗号吗?如果可以,极大方便了编程,用机器生成代码,没有特殊情况需要单独处理,每个列表项的末尾直接添加一个逗号,但人类看这代码会感觉有点怪异,怎么列表结束了还有一个逗号,后面有啥?如果不允许,也很怪异,每项都用逗号结束,最后一项难道有什么特殊的吗?现在很多语言都允许列表项最后可以有逗号(也可以没有逗号),任由程序员自己选择,这样就不会逼死强迫症了。
(7)Perl语言用引用访问和直接访问数组,采用不同的记号,一个是箭头,一个是方括号,如果嵌套的层次多了,那么代码是相当可观。近年的版本似乎改进了,可以用很多种不同的方式来访问。然而满屏的$@_%#&->让人眼花缭乱。Python代码看起来则清爽许多。
(8)Java语言凡事都要个类,写Hello World都要个类,真的很累。不知道强迫症是否喜欢被强迫用类。
(9)不能在函数内部定义函数。函数内部可以定义变量,为啥不能定义函数。函数不是第一等公民,这样的语言可以逼死强迫症。
有些语言则可以,可以在函数内部定义函数的语言,都是及其优美的,拥有精美的递归结构,严格的作用域。