编程语言的设计原理
课程通知
目前还有少数同学没有提交作业。作业补交日期限制在24日晚24:00之前,没有提交作业的同学抓紧提交~
4月8日的课请同学们带上笔记本电脑,同时在电脑上装好OCaml环境,并编译好目前已经学过的课程部分的相应实现。
请大家在4月16日24:00之前将组队名单发送到助教邮箱中。同时之前没有提交作业的同学尽快提交作业。
作业提交:
纸制版作业,每次课的作业在下次课上课前交给助教。
电子版作业,每次课的作业在下次课上课前发送到助教的邮箱,xuchen0602@126.com,邮件标题请以“第X次作业_学号_姓名”格式书写。
课程简介
本课程主要面向大三和大四本科生与研究生,推荐先修《程序设计技术与方法》、《编译原理》, 但不做强制要求。未来三年每年在春学期开课。
新兴的程序设计语言层出不穷,这些语言是如何设计出来的? 主流语言中不断扩展出新的高级语言特征,这些特征是如何定义的? 为什么说Java语言的设计是有缺陷的?面向对象、函数语言、泛型编程等新型编程模型是否有共通的理论基础? 本课程将揭示这些问题的答案。
近十多年来,编程语言的发展呈现两个趋势:1)从固定少量语言到大量领域特定语言的变化; 2)从简单语言到复杂高级语言。比如,在2013年9月的TIOBE的编程语言排行榜上, C和Java两个占统治地位的语言只能各自占到16%左右的份额, 大量的份额被近年来涌现的新型编程语言比如Javascript, Scala, Erlang, R占据。 同时,更多的新语言还在不断被设计出来。另一方面,大量经典语言也不断扩展, 引入各种高级语言成分。比如Java一起初的设计目标为一个简化版的语言, 但最新的Java 8设计中已经包含了泛型、函数式编程、动态性等多种高级特性。在这样的情况下, 掌握设计新的编程语言的能力,已经不仅限前沿科研人员所掌握的高级技能,而是一线软件开发工程师的基本要求 。同时,对语言设计原理的了解和掌握,也有助于更好的理解高级语言中的各种新特性,以更好的使用主流编程语言。
为指导编程语言的设计,研究人员们已经提出了一系列的原理和方法,其中最核心的就是类型理论。 类型声明是现代语言中避免编程错误的一个基本手段,而类型理论解释了一个良好的类型系统应该具有的特征和复杂类型的定义方法。 本课程将围绕类型理论这个核心进行组织,讲授程序设计语言的现代理论。
本课程具有两个特点:1. 严谨性:课程中的概念元素都将有严格的数学定义,可以进行形式演绎和归纳, 而非空泛的概念介绍。2. 操作性:课程中的所有重要概念都将通过课程作业的方式编程实现, 使得同学们在动手过程中真正掌握知识。希望通过本课程的学习,使得同学们在编程语言领域拥有扎实的理论功底和实践能力, 在产业方面能胜任设计新语言的任务,在学术方面为开展程序语言相关研究打下基础。
参考书目
Types and Programming Languages , Benjamin C. Pierce, The MIT Press, 2002. (教材) |
课程讲义和作业
课程日期 | 课程章节 | 讲师 | 讲义和作业 | |
---|---|---|---|---|
2015/3/4 | Introduction & Untyped Systems | 胡振江 | hu_intro_ch1.pdf && hu_ch3.pdf | |
2015/3/11 | Untyped Systems | 胡振江 | hu_ch5.pdf && hu_ch6.pdf && hu_ch8.pdf | |
2015/3/18 | Simple Typed Lambda Calculus | 胡振江 | hu_ch9.pdf && hu_ch11.pdf | |
2015/3/25 | Ocaml + Chapter 11 | 赵海燕 | OCaml_15.pdf | |
2015/4/1 | Chapter 13 | 赵海燕 | ch_13.pdf | |
2015/4/8 | in_class_practice & course_project | 熊英飞 | in_class_practice.pdf && course_project.pdf | |
2015/4/15 | Chapter 14 & Chapter 15 | 赵海燕 | Chapter 14.pdf & Chapter 15.pdf | |
2015/4/22 | Chapter 16 | 赵海燕 | Chapter 16.pdf | |
2015/5/6 | Chapter 18 & Chapter 19 | 熊英飞 | Chapter 18.pdf & Chapter 19.pdf | |
2015/5/13 | Chapter 20 | 熊英飞 | Chapter 20.pdf | |
2015/5/20 | Chapter 18-19-practice | 赵海燕 | Chapter 18-19-practice.pdf | |
2015/5/27 | Chapter 21 | 熊英飞 | Chapter 21.pdf | |
2015/6/3 | Chapter 22 | 熊英飞 | Chapter 22.pdf | |
2015/6/10 | Chapter 23 & Chapter 24 & Chapter 26 | 熊英飞 | Chapter 23.pdf & Chapter 24.pdf & Chapter 26.pdf |
讲义将在每节课课后上传。