编译原理
分享
课程详情
课程评价
spContent=自从1946年世界上第一台现代电子计算机“埃尼阿克(ENIAC)”诞生以来,计算机世界中的语言已经超过了1000种,在不久的将来,计算机世界的语言总量就会超过人类世界语言的总量。编译原理就是讨论如何把符合人类思维方式的某种程序设计语言翻译成计算机能够理解和执行的形式,通过课程的学习,不仅可以了解程序设计语言的运行机制,克服学习新的程序设计语言的恐惧,从系统层面重新认识程序和算法,还可以建立计算思维,掌握问题求解的典型思路和方法,培养解决复杂工程问题的能力。
—— 课程团队
课程概述

编译原理是高等工科院校面向计算机相关专业大三学生开设的专业核心必修课。所含内容既有便于抽象的问题,也有较成熟的理论,涉及学科抽象、理论、设计三个形态。课程使用形式化的巴科斯范式描述程序设计语言,涉及的概念多,算法抽象,不易理解;同时,本课程注重计算思维的培养,强调理论指导下的工程实践。

通过学习该课程,使学生了解形式语言基本概念和术语,掌握词法分析、语法分析和语义分析与中间代码生成技术的基本原理和实现方法。通过将“抽象、自动化、形式化、转化、约简、递归、嵌入、分解、仿真和容错”等计算思维与“形式语言基本理论、词法分析、语法分析、和语义分析与中间代码生成”等内容进行对应,帮助学生更好地从计算思维的角度去理解和分析编译的理论和技术。

通过学习编译程序的构造原理和技术,不仅有助于深刻理解和正确使用程序设计语言,更可以培养计算机学科乃至其他学科解决问题的思维和方法(即如何形式化地描述问题,以及如何通过演绎和归纳来设计解决方案)。这些思维和方法对于应用软件、系统软件以及人工智能的设计与开发具有重要的启示意义,为从事计算机相关行业打下基本的理论和工程实践基础。

授课目标

通过课程学习,使学生了解形式语言基本概念和术语,掌握词法分析、语法分析和语义分析与中间代码生成技术的基本原理和实现方法。通过将“抽象、自动化、形式化、转化、约简、递归、嵌入、分解、仿真和容错”等计算思维与“形式语言基本理论、词法分析、语法分析、和语义分析与中间代码生成”等内容进行对应,帮助学生更好地从计算思维的角度去理解和分析编译的理论和技术。

通过学习编译程序的构造原理和技术,不仅有助于深刻理解和正确使用程序设计语言,更可以培养计算机学科乃至其他学科解决问题的思维和方法(即如何形式化地描述问题,以及如何通过演绎和归纳来设计解决方案)。这些思维和方法对于应用软件、系统软件以及人工智能的设计与开发具有重要的启示意义,为从事计算机相关行业打下基本的理论和工程实践基础。

具体课程目标如下:

课程目标1:借助形式语言、词法分析、语法分析、语义分析与中间代码生成的相关知识,立足优秀传统文化,培养学生等价转化、形式化与抽象、约简、递归、自动化、权衡等计算思维和解决问题的通用方法,使学生在掌握计算机问题求解的基本思想和方法的同时树立文化自信。

课程目标2:了解编译技术的发展历程,理解形式语言的基本概念,掌握编译系统的工作流程和编译器各功能模块的设计原理,能够应用这些基本方法和技术分析和解决软件开发中的实际问题。

课程目标3:使学生掌握词法分析器、语法分析器开发方法,学习构造编译器的各种工具的使用方法,培养学生软件开发能力,具备开发系统软件的能力,并最终养成严谨、求实、守信、创新的科学态度,具有敬业品质、团队协作等职业素养。


课程大纲
预备知识

与本课程关系最为密切的是《高级语言程序设计》,高级语言程序设计侧重于程序设计和软件开发,本课程重点是阐述高级语言程序开发工具中的编译系统的工作原理。在课程的算法讲授中会运用到《离散数学》和《数据结构A》等课程相关知识点。

证书要求

本学期的线上成绩由四部分组成,单元测验+单元作业+线上期末考试+线上讨论,其比例分别是40%、20%、30%和10%

参考资料

教材:黄海平,蒋凌云,沙超,徐康. 北京:人民邮电出版社,2022

参考资料:

[1] Terence Parr.编程语言实现模式.武汉:华中科技大学出版社,2013.                

[2] Alfred V. Aho.编译原理.北京:机械工业出版社,2009   

[3] 蒋宗礼, 姜守旭. 编译原理. 北京: 高等教育出版社, 2017