我想向初学者宣传OCaml,我正在寻找英语的好教程;不是说你只听说过,而是你实际上已经尝试过并发现有用......
答案 0 :(得分:22)
我非常喜欢这本书Developing Applications With Objective Caml - 我想应该更新标题以反映'OCaml'的命名决定。它是旧的,因此稍微过时,但仅在次要方面 - 例如,它将流语法呈现为属于核心语言,但现在将其外包为Camlp4扩展。这本书令人惊讶地完整,第2,3和4章已经有很多肉。
这本书涵盖了一些系统编程,但如果它是读者感兴趣的内容,我宁愿推荐单独的书Unix system programming in OCaml - 也可以通过社区努力翻译成英文。
最后,如果想要发现OCaml的理论基础,如果找到U3书,Using, Understanding, and Unraveling the OCaml Language是一个很好的资源。但它只适用于已经了解OCaml的读者。
PS:我对Jason Hickey的introduction to Objective Caml也有很好的看法,但我不能说我已经完整阅读了它,只是瞥了一眼。这是“初学者”书籍的问题,你最多可以阅读一本好书。答案 1 :(得分:8)
对我来说,主要的是:
$ apt-cache show ocaml-book-en
Package: ocaml-book-en
Source: ocaml-book
Version: 1.0-5
Installed-Size: 7061
Maintainer: Debian QA Group <packages@qa.debian.org>
Architecture: all
Recommends: www-browser | pdf-viewer
Description-en: English book: "Developing applications with Objective Caml"
This is the English translation of the O'Reilly's OCaml French
book "Developpement d'applications avec Objective Caml" that can
be found in the ocaml-book-fr package.
.
This package contains both the HTML and PDF version of the book.
:)
system programming in OCaml和食谱风格资源here也有很棒的书。
答案 2 :(得分:5)
我在学习时使用的教程和我一直向初学者推荐的教程 - ocaml-tutorial.org(因为原始网站出现故障而在ocamlcore上镜像)。
答案 3 :(得分:3)
这是一本适合新手编程的书,也是那些了解某些编程但希望学习面向功能范式的编程的人,或者那些只想学习OCaml的人。
本书OCaml port的How to Think Like a Computer Scientist由Nicolas Monje创作。
根据该网站,应该下载该书的PDF version
从书中可以看出:
本书的目标是教你像计算机科学家一样思考。这种思维方式结合了数学,工程和自然科学的一些最佳特征。与数学家一样,计算机科学家使用形式语言来表示思想(特别是计算)。与工程师一样,他们设计事物,将组件组装到系统中并评估替代方案之间的权衡。与科学家一样,他们观察复杂系统的行为,形成假设和测试预测。
计算机科学家最重要的技能是解决问题。解决问题意味着能够制定问题,创造性地思考解决方案,并清晰准确地表达解决方案。事实证明,学习编程的过程是练习解决问题技巧的绝佳机会。这就是为什么这一章被称为“程序的方式。”
在一个层面上,您将学习编程,这本身就是一项有用的技能。在另一个层面上,您将使用编程作为达到目的的手段。随着我们的进展,这一目标将变得更加清晰。
答案 4 :(得分:3)
我刚刚开始使用Ocaml,这些是我认为最有帮助的教程:
Documentation and user’s manual - 最有用和最正式的
Introduction to Caml - 这是我在最初几天(最近)使用的那个,因为它很简单所以非常有用
答案 5 :(得分:2)
我认为Jason Hickey对Objective Caml的介绍非常好(关于我读过的语言的唯一实际文本,以及我是如何开始的)。 INRIA的文档也很好;一旦掌握了它,阅读模块签名本身就很有启发性;)
信不信由你,OCaml是我(真正)学过的第一种语言。
答案 6 :(得分:2)
Jason Hickey的新书“Real World OCaml”将很快出版。在the web-site,免费提供公开测试版。尽管这本书尚未完成,但我没有发现任何重大错误或无关紧要。
它让我对OCaml有了全面的了解。它包含许多说明概念的示例,可以很容易地被视为教程。我也喜欢它部分涵盖标准模块(List
,ListLabels
,Map
,Sys
,String
,可能还有其他模块。
本书中的“运行时系统”部分非常有用。它提供了有关编译器实现,内存管理,与外部代码的链接,语言成本直觉的详细信息。后者我认为非常重要,因为许多功能性编程书籍涵盖了概念而没有说明它们在内存和时间方面有多昂贵。强烈推荐这本书,特别是当有免费的在线版本时。