我们简要介绍一下,在Part A和B中涉及到的,并且和Part C部分有关联的知识点。
在ML中,我们学习了函数式编程的基础部分,静态类型、模式匹配。我们学习了第一等公民函数和闭包。我们学习了类型推导、模块、两个模块是否相同。
在Part B中,我们学习了动态函数式编程。动态语言的关键特性是delay evaluation。我们在Racket解释器的基础上,通过eval exp实现了自己的一个小型的语言。
#add 学习函数式编程的关键是熟悉语言的数据结构、递归、解释器。
在Ruby中,我们将会学习到非常类似于闭包的blocks。并且将会学习到比Racket更具有动态特性的一些features。接着我们将聚焦于面向对象的部分,类和方法,以及Ruby程序是如何将数据封装在对象中的,对象中具有states和能够调用的methods。在这里,我们使用方法来代替函数。Ruby是个纯面向对象的语言,所有的值都指代的是对象。
在Part C的第二部分中,我们将会学习到函数式编程和面向对象编程分别是如何对问题进行拆解的(拆解为pieces)。我们会发现这两者是相反的。虽然它们是相反的,但并不代表他们是不同的。然后我们会学习到Ruby的mixins,我们称之为模块。我们在面向对象编程中被称作是双调度,这将成为编程任务的关键重点。
在第三周我们将回到静态类型中。我们将会重点关注子类型(sub-types)的核心概念,这对于面向对象的静态编程语言是格外重要的。与泛型(generics)相比,我们在ML中学习到了多态性。???
明天早上的第一个任务。
我们需要把核心概念聚集到一起,并进行对比和比较。第一周,我们主要学习OOP的特性。在第二三周,我们将重点关注对比和比较。