跳过正文
  1. Posts/

The Programming Language Course

·2 分钟
目录

花了三个月的时间,终于跟完了这门编程语言课.

Programming Languages · 课程成绩(根据正文上下文重绘的示例图,并非遗失原图)
课程内容非常赞,而且也充分发挥了coursera平台的作用. 非要说缺点的话,就是这门课时间有点短,以及peers’ assignments总是找不到人…

这么课是什么
#

这门课并不是在讲一门特定的编程语言,而是在讲一些通用的编程语言概念.

课程主要内容(根据正文上下文重绘的示例图,并非遗失原图)

课程本身大体上上分为三部分,分别结合sml,racket,ruby三门语言来讲.

编程语言与范式对照(根据正文上下文重绘的示例图,并非遗失原图)

每部分大体先是视频内容(有同样内容的文字pdf,便于查询),然后要完成一项作业(10节中有8节是编程作业,2节是多选题的笔试) 作业过后,是备受好评的(?) peers’ assignments的环节. 不过由于每个人的作业只能被其他三个人评分…所以如果没有对3个同学做过code review的话,需要经常上来看看有没有新的人提交作业了…

我的体会
#

作业难度不算高,每门作业最开始的题目感觉稍微有点难度,不过大体是因为还不太熟悉一门新的语言,热身之后,后面的题目都比较容易了.

按照Grossman的说法,最难的是第二部分课程中用racket写一个简单的语言解释器.不过实际写起来其实还好,就是一个代码量不到200行的大模拟,难度感觉并不比其他部分的作业更难.

比较有意思的作业感觉反而是第三部分那个,用OOP和functional的方法实现同样的计算几何…用函数式写几何题好舒服啊…

这么课应该没有什么必须的前置技能点,因为课程中涉及的语言反正也没什么人学过(?),所以有过编程经验应该就可以跟? 以及,感觉这应该算是CS中比较核心的课程了,可是国内的高校似乎很少有开相关的课程? 有点可惜.

总之安利一波~ 最后附上我的代码链接: github CSE341

相关文章

【施工完毕】MIT 6.828 lab 2: Memory Management

·17 分钟
2019年2月24:完成了除了"Challenge"以外的全部练习和问题. 总共花费15个小时. # 2019年2月26:完成"Challenge 2"(应该是最简单的一个orz,只花了不到一个小时) # Part 1: Physical Page Management # 操作系统必须时刻追踪哪些物理内存在使用,哪些物理内存没有在使用。

C语言变长参数

·2 分钟
说起C语言的变长参数,可能听起来比较陌生,因为很少会需要自己实现。不过想一下scanf和printf,参数个数的确是不固定的。

x86 calling conventions

·3 分钟
x86的调用约定主要说的是这几件事: The order in which atomic (scalar) parameters, or individual parts of a complex parameter, are allocated How parameters are passed (pushed on the stack, placed in registers, or a mix of both) Which registers the called function must preserve for the caller (also known as: callee-saved registers or non-volatile registers) How the task of preparing the stack for, and restoring after, a function call is divided between the caller and the callee 调用约定实际上并不唯一