第2章 OCaml的基础

271 阅读4分钟

本章将介绍 OCaml 的一些基本特性。但在我们深入学习 OCaml 之前,让我们先谈谈一个更大的理念:学习语言。

这门课程的次要目标之一不仅仅是让你学习一门新的编程语言,而是提高你学习 如何学习 新语言的技能。

学习一门语言有五个基本组成部分:语法、语义、惯用语、库和工具。

语法。 所谓语法,我们指的是定义语言中构成格式良好的文本程序的规则,包括关键字、对空格和格式的限制、标点符号、运算符等。学习一门新语言最烦人的地方之一是,与你已经熟悉的语言相比,它的语法很奇怪。但是,你学的语言越多,你就会越习惯接受这种语言的语法,而不是希望它有所不同。(如果你想了解一些语法非同寻常的语言,可以看看APL ,它需要自己的扩展键盘和空白,其中的程序完全由空格、制表符和换行符组成。你需要理解语法,才能与计算机对话。

语义。 所谓 语义 ,我们指的是定义程序行为的规则。换句话说,语义是关于程序的含义——一段特定的语法所代表的计算。请注意,尽管“语义”是复数形式,但我们将其用作单数。这类似于“数学”或“物理学”。

语义有两个部分,语言的动态语义和语言的 静态语义。动态语义定义程序在执行或计算时的运行时行为。静态语义定义编译时检查,该检查用于确保程序是合法的, 涵盖了任何语法要求。最重要的一种静态语义可能是类型检查: 定义程序是否类型良好的规则 。学习一门新语言的语义通常是真正的挑战,即使语法可能是你必须克服的第一个障碍。你需要理解语义来向计算机表达你的意思,你需要表达你的意思,这样你的程序才能执行正确的计算。

惯用语。 所谓惯用语 是指使用语言特征来表达计算的常用方法。考虑到在一种语言中,一种计算可能有多种表达方式,你会选择哪一种?有些人会比其他人更自然。精通该语言的程序员会比其他人更喜欢某些表达方式。我们可以从有效地使用语言中的主导范式来考虑这一点,无论它们是命令式、函数式、面向对象等等。你需要理解惯用语才能对计算机和其他程序员表达出你的意思。当你使用惯用语编写代码时,其他程序员会更好地理解你的代码。

库。 是已经编写好的代码包,可以使你成为更有效率的程序员,因为你不必自己编写代码。(据说懒惰是程序员的一种美德。)学习一门新语言的一部分是发现哪些库可用以及如何使用它们。一种语言通常会提供一个标准库,让你能够访问一组核心功能,其中许多功能是你自己无法用该语言编写的,例如文件I/O。

工具。 至少任何语言实现都提供编译器或解释器作为使用该语言与计算机交互的工具。但还有其他种类的工具:调试器、集成开发环境(IDE)、以及性能、内存使用和正确性等分析工具。学习使用与语言相关的工具也可以让你成为一个更有生产力的程序员。有时很容易将工具本身与语言混淆;例如,如果你只同时使用过Eclipse和Java,那么你可能不太清楚Eclipse是一个可以与多种语言一起工作的IDE,也不太清楚Java可以在没有Eclipse的情况下使用。

在本书中学习 OCaml 时,我们主要关注语义和惯用语。当然,我们必须一路学习语法,但这不是我们学习的有趣部分。我们将接触到 OCaml 标准库和其他几个库,特别是 OUnit(类似于 JUnit、HUnit 等的单元测试框架)。除了 OCaml 编译器和构建系统之外,我们将使用的主要工具是 toplevel,它提供了以交互方式试验代码的能力。

注:本书是康奈尔大学 CS 3110 数据结构和函数式编程的教材。原书为英文版,在学习的过程中,根据自己的理解,翻译了一些,做一个记录,版权归原作者所有,如有侵权,请联系我删除。