编程世界里的伟大航路
Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs.
John Backus,1977
约翰·巴科斯(John Backus)1,听起来特别像是个威名远扬的大海盗。其实,他是计算机史上第一个高级编程语言Fortran2的设计者,为计算机领域作出众多卓越贡献。1977年10月,在位于西雅图举办的ACM年会上,图灵奖被授予给了他,而后他对着话筒说出了篇首那句撼动业界的话。
而今,函数式编程 成为了一个高大上的技术热词,其思想也适用于主流的编程语言。然而,关于什么是函数式编程,大多相关的文章和书籍千篇一律,给我的不是答案,而是更多问题3。
于是,我不得不追根溯源,直到读到巴科斯在1978年发表的图灵演讲的完整版4。那一刻我意识到,我可能摸到函数式编程的内核了。似乎,此前我关于函数式编程的所有疑惑都能解释了:
- 代码怎么写才算是函数式了?
- 为什么函数必须是第一等的(First-class)?
- Lambda演算、组合子和函数式有什么关系?
- 哪些简短的函数命名或符号哪里来的?
- 代数数据类型(ADT)与数学性质(Property)能有什么用?
- ……
若你也有类似的困惑,那它是值得你花时间去阅读的。不过,文章过于古早,且不谈本身的阅读门槛,其 PDF 文件的阅读体验就并不友好。好在我自己细读的过程中,顺手整理了中英对照的 Markdown 版本,持续更新在 Github 上5。为了方便往复细读,我还拆分了章节,也建立了目录。
考虑到个人水平有限,难免错漏,欢迎任何形式(PR 、Issue 或留言)的修订建议。后续,我也会就函数式编程展开更多探讨,期待你的关注与参与。
如果说,编程的世界存在 ONE PIECE 的话;那么,巴科斯口中的 函数式编程 就是一条通往 ONE PIECE 的 伟大航路 !