#2017_9_11 20:24新添加
Part A&B是学习Part C的基础。
challenging and rewarding study 富有挑战性但是非常值得的课程(编程神课~~~)
新的总结:第一周课程主要在面向对象的基础(值就是对象,对象的方法定义在类中)。动态特性。blocks(非常类似于函数闭包)。面向对象的关键特性,子类、继承、重写。
#
Part C部分共有三周的学习时间。
第一周有很多的内容。我们聚焦于为什么Ruby是纯净的面向对象语言(在Ruby中所有的值代表的都是一个对象,另外每个对象的方法都是在类中进行定义的 its method defined in the class)、动态编程语言(比Racket具有更多的动态特性,怎么体现出来的呢)。然后我们聚焦于Ruby的基础语法以及面向对象的方法。接着,我们会学习到Ruby的blocks(和函数的闭包很相似的特性)。最后,也是最重要的,我们将会学习子类、继承、方法重载,即面向对象的一些核心特性。作业和之前的Part A和B的形式有所不同,使用子类在重写已提供的代码,从而在俄罗斯方块的代码中创建具有不同行为(不知道指的是不是对方块的操作)的新版本。
第二周,主要聚焦于比较和对比函数式编程和面向对象编程。by showing how they best support "exactly opposite" ways to decompose programs into pieces, and we learn the double-dispatch idiom for a way to decompose certain computations in a (very?) object-oriented way.(没看懂)。然后我们比较和对比了面向对象编程的高级特性:多重继承、Ruby的mixins和Java的接口。在这一周中,视频的长度是最短的,但是作业是最具有挑战性的,它的任务是synthesizing(合成) a lot of ideas by having you port a small interpreter for a "domain-specific language" from ML to Ruby.。
第三周,课程的内容是更加理论化的。涉及到子类,即子类的一般概念是如何融合到静态类型的面向对象语言中的。对子类型和ML风格(通用类型)进行对比。以及将子类型和泛型是如何结合到一起的。
final exam会考察到Part B和Part C部分的知识。