𝚲

编程世界里的伟大航路

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

Functional Programming in X-lang

于是,我不得不追根溯源,直到读到巴科斯在1978年发表的图灵演讲的完整版4。那一刻我意识到,我可能摸到函数式编程的内核了。似乎,此前我关于函数式编程的所有疑惑都能解释了:

  1. 代码怎么写才算是函数式了?
  2. 为什么函数必须是第一等的(First-class)?
  3. Lambda演算、组合子和函数式有什么关系?
  4. 哪些简短的函数命名或符号哪里来的?
  5. 代数数据类型(ADT)与数学性质(Property)能有什么用?
  6. ……

若你也有类似的困惑,那它是值得你花时间去阅读的。不过,文章过于古早,且不谈本身的阅读门槛,其 PDF 文件的阅读体验就并不友好。好在我自己细读的过程中,顺手整理了中英对照的 Markdown 版本,持续更新在 Github 上5。为了方便往复细读,我还拆分了章节,也建立了目录。

考虑到个人水平有限,难免错漏,欢迎任何形式(PR 、Issue 或留言)的修订建议。后续,我也会就函数式编程展开更多探讨,期待你的关注与参与。

如果说,编程的世界存在 ONE PIECE 的话;那么,巴科斯口中的 函数式编程 就是一条通往 ONE PIECE 的 伟大航路


  1. https://en.wikipedia.org/wiki/John_Backus↩︎

  2. https://en.wikipedia.org/wiki/Fortran↩︎

  3. What is functional programming?↩︎

  4. https://dl.acm.org/doi/abs/10.1145/359576.359579↩︎

  5. https://github.com/zhongl/thinking-in-fp/blob/main/can-programming-be-liberated-from-the-von-neumann-style/chunked/README.md↩︎