OCaml 最早称为 Objective Caml,是 Caml 编程语言的主要实现,开发工具包含交互式顶层解释器,字节码编译器以及最优本地代码编译器。Ocaml 有一个巨大标准库,使得可以像 Python 或者 Perl 语言一样可以方便地开发各种应用程序。
本 Chat 主要分享内容如下:
- OCaml 语言的来历
- OCaml 语言的特点
- OCaml 语言的发展现状
- OCaml 可以给我们带来哪些好处
本次 Chat 作者:王克毅,火币技术专家
聊聊 OCaml
OCaml 是一种开发效率和运行效率都比较高的多范式语言,如今在业界已经有了越来越多的应用,这次我们就来聊聊 OCaml。
OCaml 意为 Objective Caml,是 Caml 语言的一种方言,支持命令式、函数式和面向对象等多种编程范式,并且支持 IA-32、X86-64 (AMD64)、Power、SPARC、ARM、ARM64 等多种平台。
其实你很可能已经用过 OCaml 了,就像这两位同学说的:
图片来源:Twitter 网友截图
OCaml 的确影响了相当多的当红语言,比如 Facebook 内部使用的支持协程的 PHP 编译器 Hack、苹果推出的吸收了很多 OCaml 语言特点的 Swift 语言、微软 .Net 平台上的 OCaml 方言 F#。甚至如今拥趸众多的 Rust 语言,其完成自举之前的初期版本也是由 OCaml 编写的。
是什么样的原因使这些重要的软件选择了 OCaml 呢?下面我们正式开始今天的话题。
OCaml 的历史
1985 年,法国高等师范学院(ENS)发布了 Caml 语言(Categorical Abstract Machine Language,范畴论抽象机器语言)。后来一段时期主要被法国国立计算机及自动化研究院(INRIA)负责维护。最初的 Caml 语言被暱称为 Heavy Caml,因为其使用 Lisp 实现,使用了过多的 CPU 和内存。后来 Xavier Leroy 和 Damien Doligez 使用 C 重新编写了 Caml 的编译器,称为 Caml Light。
1996 年,OCaml 发布了第一个版本,其在 Caml 的基础上支持了面向对象编程。(为什么一门函数式语言要加入面向对象的特性呢?要知道 Java 是在 1995 年发布的,当时 Caml 加入 OO 特性可能是为了蹭热点。谁知现在 FP 这么火,几成显学。)
图片来源:网络
特点
OCaml 是一种多范式的编程语言
首先,使用 OCaml 可以无痛的进行命令式编程,这对新手非常是友好的。想想学习 Haskell 的时候,首先要无脑的接受把一切 IO 塞进 do 语句,想真正搞明白发生了什么还要学习 Monad Law,接下来如果好奇心爆棚决定一口气搞明白 Monad 是什么可能会收获非常大的挫败感。而 OCaml 中通常只是将 IO 等改变状态的方法设计成 Unit 类型,然后很直白的拼接在一起,初学者可以快速进入角色编写可用的程序。
OCaml 也支持 OOP。在 Scala 语言出现之前,通常的观点认为函数式编程与面向对象是不相容的。但是最先在同一种语言中融合了带类型推导函数式编程和面向对象编程的其实是 OCaml。OCaml 支持多重继承和匿名对象,且为类和对象建立了实用的类型系统。如果用户熟悉 OOP 的风格,在掌握语法后可以快速上手。OCaml 的面向对象机