编译器

Compilers

这门课将探讨用于当今编程语言编译器实现的主要思想。你将学到更便于人类理解的高级语言程序,是如何被翻译为更便于机…

斯坦福大学

分享

编译器
  • 分类: 计算机
  • 平台: Coursera
  • 语言: 英语

这门课将探讨用于当今编程语言编译器实现的主要思想。你将学到更便于人类理解的高级语言程序,是如何被翻译为更便于机器理解的低级汇编语言程序。

课程概述

这门课将探讨用于当今编程语言编译器实现的主要思想,包括:词法分析、解析、语法制导翻译、抽象语法树、类型、类型检查、中间语言、数据流分析、程序优化、代码生成和运行时系统。学完这门课后,你将学到更便于人类理解的高级语言程序,是如何被翻译为更便于机器理解的低级汇编语言程序。过程中,我们还将探讨编程语言是如何设计的、编程语言语义是怎样的、以及为什么有这么多种编程语言存在。

课程将以简短视频的形式呈现。为了帮助你掌握课程内容,视频中会有需要你作出回答的测试问题。这门课还有小测试和两次考试:期中考和期末考。课上还会布置作业,形式是一些练习题,要求你给出推导特定结果的一系列逻辑步骤,例如:类型检查器对一段代码执行类型检查的一系列步骤,或是解析器对一个输入字符串执行解析的一系列步骤。这种检查技术是斯坦福大学在创新型教育工具开发的持续研究中得到的。我们很高兴,这将是第一门将这些内容提供给学生的课程。

这门课有一个选做项目,是为COOL(课堂面向对象语言)写一个完整的编译器。COOL将具有现实编程语言的各种必要特性,但它很小,只需要几千行代码就能实现。选择参与这一项目的学生可以选择用C++或Java来实现。
我很期望,这门课能让你上得愉快!

为什么要学习编译器?
计算机所做的任何事情都要通过程序进行。世界上数以百万计的程序,都是由过去60余年间人们所开发出的数千种编程语言中的一种编写得到。设计和实现一个编程语言实际上是非常困难的,计算机科学领域中充满智慧的前人思考过相关问题,并给出了一些美妙而深刻的答案。学习编译器能让你体会到计算机科学中理论和实践的相互影响,特别是有力的一般性思想是如何同工程洞见相结合,得到重大难题的实践解决方案。了解编译器如何工作还会让你成为更优秀的程序员,并让你拥有更快学习新编程语言的能力。

常见问题

完成这门课后,我能否得到结业证书?
能,成功学完这门课的学生将得到授课老师签发的结业证书。

这门课的授课形式是怎样的?
每周都会有一些视频需要观看,大多数视频中将包含一个测试问题需要你来回答。大多数时候,每周都会有作业(在线完成)和一个小测试要做。这门课还会有一个期中考试和一个期末考试。参加课程项目的学生,还将有5个编程作业要做。这些作业都需要在我们提供基本内容的基础上独立完成。

课程材料能以文件形式下载吗?
能。课程幻灯片将有注释和非注释两种形式提供下载。

我需要教材吗?
不需要,这门课没有指定教材。不过如果你希望找一本教材作为参考并加深学习理解,我推荐三本编译器方面的教材:
《编译器:原理、技术和工具》第二版
阿尔弗莱德·阿霍、莫妮卡·拉姆、拉维·塞西、杰弗里·乌尔曼著
艾迪生韦斯利出版社
《现代编译器实现——Java语言》第二版
安德鲁·阿佩尔、延斯·帕尔斯伯格著
剑桥大学出版社
《编译器工程》
凯斯·库珀、琳达·特克森著
摩根考夫曼出版社

有问题如何提呢?
这门课有一个在线论坛供学生提出问题和获得解答。由于在线课程规模会很大,回答得最快最好的通常是别的同学。课程教员会监控讨论情况,确保回答的准确性。学生群体特别想要教员来回答的问题,教员也会作出解答。

编译器项目是必须的吗?
不是,你可以选修这门课而不做编程作业。

编译器项目有多大难度?我需要怎样的背景知识和工具?
这个问题比较难以回答,因为编程基础会因人而异,难度也会因人而异。粗略说来,参加编译器项目需要你有熟练的编程能力,能够适应大量编写C++或Java程序代码。编写编译器对于学习编程和学习特定语言都不是很好的方式。项目还需要使用软件工具,所以你还需要适应自学新工具的使用。就算开始做项目但最后放弃,也不会对这门课的学习造成任何影响,我们会把最终放弃项目的学生同非项目学生同等对待。

声明:MOOC中国收录之课程均源自下列机构,版权均归他们所有。本站仅作报道并尊重其著作权益,感谢他们对MOOC事业做出的贡献!(排名不分先后)
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc

Copyright © 2008-2015 MOOC.CN 慕课改变你,你改变世界