跳转至

1706977768

编程语言原理

CS 专业模块-计算机科学 IS 专业选修

课程学习内容

这门课从 20 级(22 秋冬)开始内容大改,讲授 PL 领域的基础知识,并且 21 级开始从“程序设计方法学”改名为了“编程语言原理”(PPL),内容大致如下:

  • lambda 演算
    • 基本的 lambda 演算记法与运算,三种等价关系与规约
    • lambda 演算表示布尔值,Church 自然数
  • 抽象语法树与归纳法
    • 抽象语法树与抽象绑定树的定义
    • 归纳推理的基本知识,归纳定义等
  • 静态语义与动态语义
    • 给定语言的静态语义表示方法与一些类型相关的定理
    • 结构化动态语义、上下文动态语义及相关定理
    • 类型安全的定义
  • 函数与递归
    • 将函数引入语言定义中,给出静 / 动态语义,引入高阶函数
    • 带有递归运算的 Gödel's System T
  • 数据类型
    • 有限数据类型,积类型与和类型
    • 无限数据类型,泛型、归纳类型、余归纳类型
  • PCF 递归系统
    • PCF 语法,不动点算子,规约方法
  • 并行
  • 多态、协程(课程目录里有但完全没讲)

先修要求

至少要会 C 语言,其他没有什么特别的先修要求。如果有了解过 lambda 演算或者一些函数式编程语言会对理解课程内容有很大帮助。

任课教师

这门课只有翁恺老师教授。

虽然大翁老师在 C 语言这种基础课上久负盛名,但从这门课中就可以看出大翁老师早已“晚节不保”,对于教学也已经不上心了。这门课讲的不能说是一塌糊涂,但确实和计院平均授课水平相差无几。如果你是奔着学习 PL 知识或者奔着听“网红”翁恺老师讲课的话,建议先避雷。

课程教材

实用编程语言理论基础(原书第 2 版),Robert Harper

PFPL,机械工业出版社有中文版,是比较经典的 PL 教材,但内容个人感觉比较晦涩抽象,连大翁老师也评价这本书既不实用也不基础。不过课程的绝大部分内容还是照着这本书抄的,鉴于大翁老师自己也并不很懂 PPL 而且 PPT 笔者感觉大部分都是对于这本书的拙劣机翻,所以只针对于授课内容而言,看一看这本书还是可以的。

程序设计语言理论(第二版),陈意云、张昱著

另一本大翁老师推荐的教材,笔者没看过,但很明显 PCF 的部分应该是出于这本书,所以在课程上和其他部分有着非常强的割裂感。

分数构成

  • 课内成绩(10%)
    • 包括小测、提问、点名,但实际上 21 级只进行过两次极为简单的开课小测,以及几次随机抽人提问
  • 作业(40%)
    • 完全由助教命题,21 级有四次作业,每次作业都会有很多扩展知识以及指导,认真做可以学到很多(感觉比听课有用
  • 期末考试(50%)
    • 21 级半开卷,可以带一张 A4 纸,不过鉴于大翁老师只会出自己会的题,所以其实 A4 没什么大用,很多题都是 PPT 上出现过的简单例子

参考资料

学习建议

只针对这门课而言,拿高分还是比较轻松的,毕竟大翁老师现在的风评已经基本只靠给分高来维持了。小测只要赶上了就几乎满分,不过大翁老师会在上课前开启学在浙大小测且不通知,在刚上课时结束小测,或者提交人数达到一定比例了也会提前关闭小测,还需要多加注意(或者结束后找老师 argue)。作业助教的起评分已经很高,而且作业文档里面有很多的指导性内容,只要认真做、肯学新内容,作业当然也不成问题。期末考试上面也说过了,题目都是极为简单的题目,甚至可以说是 PPT 例题抄写,而且还可以带一张 A4 纸,所以可以说基本完全不必担心。

就这门课学习而言,虽然不太好说“不建议听课”这种话,但是纯听课确实是学不懂这门课的,以及听课的时候也不要抱有什么期待。在大翁老师的课堂上你可以收获包括且不限于:大翁老师经典小故事集、和下发内容不一样的 PPTLaTeX 公式混乱一坨的 PPT、对着第一页 PPT 吹水一个小时、念机翻得毫无逻辑的 PPT、抄两本不同教材导致的前后章节完全割裂、并行专题只吹水各种语言并行大概怎么写。种种迹象表明课堂质量已经趋于计院平均水平,所以想要学习 PL 知识还是得靠自学,并且祈求有更专业的老师来教这门课。不过为了避免错过小测和随机提问,建议还是得到课(苦笑)。