关于课程
这门课程将讨论编译器设计的主要思想,包括词法分析器、解析器、直接语法翻译(SDT)、抽象语法树(AST)、类型与类型检查、中间语言、数据流分析、程序优化、代码生成,以及运行时系统。最终,您会学到一门为人类设计的高级编程语言是怎样被系统地翻译成适合机器的底层汇编语言的。在课程中,我们也会接触编程语言的设计,编程语言的语义,以及为什么会有这么多编程语言的问题。
课程讲座将会以短视频的方式提供。为了帮助您掌握知识,课程中会有当堂提问、小测验和两次考试:期中和期末。以练习形式出现的作业,会让你展示一些步骤以利用前面流程的结果,例如,为一段代码做类型检查的步骤,或者解析一段字符串的步骤。检查作业的技术是斯坦福正在进行的为教育而开发的创新工具的产物,我们很高兴能通过这门课程首次让学生使用。
学生可以完成一项可选的课程设计:为COOL(Classroom Object Oriented Language)写一个完整的编译器。COOL包含现实中编程语言的要素,但已足够简单,其编译器只需要几千行代码。选择课程设计的同学可以用C++或Java来实现它。
希望你们在学习这门课中得到乐趣!
为什么要学习编译器?
计算机做的一切事情就是为某些程序得出结果,而全世界上亿种程序是用60年来的上万种编程语言写成的。设计并实现一门编程语言很难,计算机科学天才们想出了不少优美而深刻的办法解决这些问题。学习编译器的内容会学到关于理论和实践的演化,尤其是带有工程洞察力的真知灼见,会带来困难问题的巧妙解法。了解编译器的工作方式也会让您更快地学习编程语言,使您成为更优秀的程序员。
网友评论