TL;DR 什么也没学到
介绍当中说,本课程主要内容是FP,并且顺道讨论一下程序语言的设计。
UW官方上面的课程只有Slides和assignments,video不提供。Coursera有video,但是版本比较老,是2013年的。下面的讨论都是基于au20的新版本。
简单来说,前半学期(hw1-hw4)是关于OCaml,一种静态类型的FP。后半学期(hw5-hw7)是Racket,一种动态语言FP。课程里面80%+(的难度)都在于新的FP编程语言,只包含少数PL的内容。例如HW4中,需要实践一个简单粗暴的tokenizer/parser;HW6实现了一个虚假的编程语言MUPL,这个实现并不需要你解析代码,而是手写解析好的语法树,在上面实现求值、闭包、递归等。
调试与debug也是一个非常蛋疼的问题,尤其是Racket写闭包的时候。。。
学习建议:
- OCaml的部分比较简单,7天一个小长假就可以搞定。做为平时的娱乐调剂也可以,周期不会超过一个月。
- 如果不想使用OCaml,可以尝试F#。因为都是一个流派的,语法接近。使用VS还可以有实时的提示。
- Racket的部分难度较大,主要是与平时所使用的语言差别较大。没啥好办法,只能多打log。
- HW7难度不高,但是提供的代码里面有一个在构造函数里面Call虚函数的迷惑操作。
- 多写测试。
Repo地址:https://github.com/Wizmann/UW-CSE341-au20
仅供参考。
感谢华大(
Comments
comments powered by Disqus