如果你已经熟悉主流编程语言如Python或Java,那么很好。这本书就是为你准备的。是时候学习如何更好地编程了。是时候学习函数式编程语言OCaml了。
函数式编程提供了一种不同于你目前所经历的编程视角。适应这种视角需要放弃旧的编程思想:赋值语句、循环、类和对象等。这不会很容易。
南一(Nan-in),是明治时期(1868-1912)的一位禅师,有一天他接待了一位前来询问禅宗的大学教授。南一为这位教授沏茶,将茶杯倒满,然后继续倒。教授看着茶水溢出,直到他无法再控制自己。 "茶已经满了,再也倒不下去了!" 南一说:"就像这个杯子一样,你满脑子都是自己的想法和猜测。如果你不先清空你的杯子,我怎么向你展示禅宗呢?"
我相信学习 OCaml 会让你成为一个更好的程序员。原因如下:
-
你将体验到不可变性的自由,在这种自由中,所谓的“变量”的值是不能改变的。和调试说再见。
-
你将在抽象方面得到提高,这是一种通过提取共性来避免重复的实践。和臃肿的代码说再见。
-
你将接触到一开始会讨厌的类型系统,因为它拒绝你认为正确的程序。但你会爱上它,因为你会谦卑地意识到它是对的,而你的程序是错的。和失败的测试说再见。
-
你将接触到编程语言的一些理论和实现,帮助你理解编写代码时与计算机交流的基础。与晦涩难懂的代码说再见。
所有这些编程思想都可以在其他环境和语言中学习到。但是 OCaml 提供了一个将它们捆绑在一起学习的绝佳机会。OCaml 将改变你编程的思考方式。
如果一门语言不会影响你编程的思考方式,那这门语言是不值得学习。
-- Alan J. Perlis (1922-1990), first recipient of the Turing Award 第一位图灵奖获得者
此外,OCaml 很漂亮的。OCaml 是简洁、简单和优雅的。美学确实很重要。编写代码不仅仅是为了让机器执行。它也是用来和人类交流的。优雅的代码更容易阅读和维护。但写起来并不一定更容易。
你编写的 OCaml 代码可以是流行和雅致的。起初,这一点可能并不明显。毕竟你正在学习一门新的语言 —— 你不会期望在刚开始学习梵文时就能欣赏梵文诗歌。事实上,你可能会感到沮丧,因为你在新的语言中表达自己时会遇到困难。因此,请给自己一些时间来适应和学习OCaml的语法和风格。在你掌握 OCaml 之后,当你重新使用那些你已经知道的语言时,你可能会惊讶于它们是多么的丑陋。
注:本书是康奈尔大学 CS 3110 数据结构和函数式编程的教材。原书为英文版,在学习的过程中,根据自己的理解,翻译了一些,做一个记录,版权归原作者所有,如有侵权,请联系我删除。