译后记
其实也不算什么译后记。在翻译完前面一篇文章之后,没更多想说的了。 毕竟译文前面也写了很长一段,能憋出来的都写在里面了。开这一篇文章其实是因为前面 准备这篇译文的时候,把整个讨论串的消息都读了一遍,感觉其中有不少精彩的观点和论述, 摘录出来放到这里。
翻译太难,这里就直接放原文,不翻译了。斜体和粗体均为编者所加。和之前一样, 每段后面附上原文链接。后面的中文部分是我的一些想法。
译:"A closure is poor man’s object, an object is poor man’s closure."
编程范式的讨论,应该算是程序员社区的日常话题。函数式编程和面向对象,分别是什么, 孰优孰劣,总是争论不休,如同无休无止的宗教战争。而 closure 和 object,可以称作是 fp 和 oop 各自的代表概念。
要翻译的这篇文章,写于 2003 年,是一条邮件列表里的消息。它出自一个 很长的讨论串, 始作俑者1标题 “What’s so cool about Scheme?”,似乎不容易联系到这里。 最后一段留下了一个问题:
Is Scheme really a ‘functional programming language’ or is it just a really general purpose tool that allows functional programming?
Scheme 真的是一门“函数式编程”语言吗?然后就引发了长长的讨论,讨论什么是函数式编程, 函数式编程必要的特性有哪些,什么是 Scheme / Lisp 的特质。当然,不可避免地, 会提到其他编程范式,当然,主要是面向对象。
然后就到了这篇文章,http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html。 它先从倾向闭包的角度,后从倾向对象的角度,来阐发一者无非是低劣版本的另一者。 但是当两种针锋相对的态度出现在同一篇文章中,仿佛太极阴阳,两相融合。因为这种 平等宽容的态度,我很喜欢这个文章。另一个我喜欢的点是在于文章最后编的禅宗公案, 有棒喝,有机锋;给原本朴实的技术讨论增加了不少禅意。
“A closure is poor man’s object, an object is poor man’s closure.” 从文章中提取 出来的这个句子,成为了编程语言社区里的一条名言或是警句;也被用作这篇文章的标题。