用哪些编程语言写出的代码,读着能感受到美?

編程语言的漂亮或者「美」是千差万别的。每个人的审美标准不一样,环肥燕瘦很难评断。试举几个大部分人都会喜欢的特性,有一个或几个这些特性的语言会很漂亮,但有时候「特性太多」本身就是一种丑陋。
  • Reflection 、Meta-programming[1] :不细分数据和指令,程序可以在运行时自我察觉、并且自我修改。个人认为这是最重要的美学特征。几乎所有基于虚拟机实现的语言都有这个特征(但不是说必须由虚拟机实现),只是语法的优雅与否区别。Reflection 的写法参见 [2], Io 的写法比 Lua 漂亮,Lua 的写法又比 Perl、PHP、Obj-C 之类漂亮。但是对于许多语言来说,写法也是可以改变的,这就是它的美。
  • 高阶函数、匿名函数、闭包[3]:函数可以作为值使用,也就是说函数可以接收函数作为参数,也可以返回函数作为返回值。可以在需要函数的时候当场写一个出来,不用起名字。可以在函数里定义函数。函数可以在脱离它被创建的环境之后继续使用它需要的值。这些特性都使得程序的抽象层次变得更高。Python,Ruby,Perl,Lua,Haskell,Scheme,都可以,只是写法有区别。加上 map / filter / reduce 这样的函数加持,许多循环的写法都可以省去了。
  • 一切都是对象:典型的比如 Ruby,3.times { puts "yo!" }。不过有时候这个特性会被滥用,这大概是最便于滥用的特性,因为写起来很爽。
  • 实用的容器类型:Set、Array、Dictionary 这样的类型都应该内建。或者 Lua 的万用 table 类型这样的机制。当然还有 String。
  • 简约实用的语法糖:比如在可以省去括号的时候省去括号。这不是所有人都觉得美,当然。
  • 简洁和易读:大部分人爱上 Python 都是因为它强制缩进带来的易读性。Coffee script 比纯 Javascript 更受欢迎也是因为它的简洁。
  • 内在的一致性。有时候遇到一种语言的新特性你会心想说「这写法太怪了」。这说明它的语法风格没有尽量保持一致。
  • 支持 List Comprehension。
  • 被集成到系统之中不会造成太多污染 [4]。


[1] en.wikipedia.org/wiki/M
[2] en.wikipedia.org/wiki/R
[3] en.wikipedia.org/wiki/F
[4] techsingular.net/?
原发布于 https://www.zhihu.com/question/19696446/answer/12682546