OCaml 的过去

从家族谱的角度来看,OCaml 来自编程语言的血统,其祖父是 Lisp,包括其他现代语言如 Clojure、F#、Haskell 和 Racket。

OCaml 起源于苏格兰爱丁堡计算机科学实验室的罗宾·米尔纳(Robin Milner)等人的工作。他们在 1970 年代末和 1980 年代初致力于定理证明器。传统上,定理证明器是用诸如 Lisp 之类的语言实现的。米尔纳一直遇到一个问题,即定理证明器有时会将不正确的“证明”(即非证明)组合在一起,并声称它们是有效的。因此,他尝试开发一种只允许您构建有效证明的语言。ML 代表“元语言”,是该工作的结果。ML 的类型系统经过精心构建,以便您只能在该语言中构建有效证明。然后,定理证明器被编写为一个构建证明的程序。最终,这种“经典 ML”演变成了一种成熟的编程语言。

在 80 年代初,机器学习领域出现了一场分裂,法国人站在一边,英国人和美国人站在另一边。法国人继续发展了 CAML,后来发展出了 Objective CAML(OCaml),而英国人和美国人则发展了 Standard ML。这两种方言非常相似。微软在 2005 年推出了自己的 OCaml 变体,称为 F#。。

Milner 在 1991 年因其在 ML 领域的工作而获得了图灵奖。[ACM]((https://amturing.acm.org/award_winners/milner_1569367.cfm) 为他的奖项所做的网站包括了这样的赞美:

ML 远远领先于其时代。它建立在清晰和明确的数学思想之上,这些思想被拆分开来,以便能够独立研究,并相对容易地重新混合和重复使用。ML 已经影响了许多实用语言,包括 Java、Scala 和微软的 F#。事实上,任何认真的语言设计者都不应忽视这个优秀设计的例子。