这次回顾Part B Week 1的内容,主要介绍了课程结构。

课程主页:

https://www.coursera.org/learn/programming-languages-part-b/home

B站搬运:

https://www.bilibili.com/video/BV1tZ4y1D7

Week 1

欢迎来到Part B

再次欢迎你!

  • A部分涵盖了很多内容——现在让我们在此基础上再接再厉!
  • 挑战性的机会,学习编程语言的基本概念。
  • 通过努力工作、耐心和开放的心态,本课程使你成为一个更好的程序员
    • 糟糕的课程摘要:”使用ML、Racket和Ruby”
  • 现在:
    • 另一种函数式语言——更容易上手
    • 强大的习语”延迟评估”
    • 用闭包实现你自己的编程语言
    • 静态类型与动态类型

(缺少)介绍性材料

  • 与A部分格式相似
  • 所以要”直接进入”
  • (根据需要,查阅课程信息和A部分材料)

Part B概述

我们了解过的内容

Part A:

  1. 基础知识、函数、递归、范围、变量、元组、列表……
  2. 数据类型、模式匹配、尾递归
  3. 头等函数,闭包和课程动机!
  4. 类型推理、模块、等价性

总的来说:对静态类型的函数式编程进行了详细的介绍,并逐一建立了模型:

  • 在B和C部分中,将高度利用这一基础。

Part B

第5节:

  • 在动态类型化语言中快速”回顾”
    • 没有类型系统、推理等。
    • 不同的语法(大量的括号)。
    • 类似:列表、闭包、函数,…
  • 延迟评估
    • 使用零参数的函数
    • 原因:延迟/避免计算,无限流,记忆
    • 主要问题
    • 可选的:一些Racket的细节

第6节:

  • Racket中的数据类型-编程
  • 实现编程语言
    • 编译器与解释器
    • 抽象语法树
    • 实现环境和闭包

第7节:

  • 静态类型与动态类型
    • 什么是静态检查
    • 健全性和完备性
    • 静态检查的优点和缺点

Part B课程结构

Part B:三周

  • 因为我们已经完成了Part A,而且Racket的安装很容易,所以可以 “直接进入”。
  • 前两周:作业的结构相同:自动评分器、同行评议……
  • 第三周:就该部分进行测验(成绩的10%)。
  • 第二周和第三周曾经合并过,所以现在每个星期都比较短,但是。

    • (第2周)的作业5被许多人认为是更有挑战性的(和更有价值的)。
  • C部分结束时的考试涵盖Part B和Part C