程序语言理论是计算机科学中历史最悠久的学科之一,50 多年来,ACM 图灵奖获奖者中大概 1/3 从事程序语言与编译系统的相关研究。程序语言与编译器的设计与实现体现了计算机科学中的最核心的思想和技术,并且和业界新兴的技术领域,如人工智能加速芯片、云计算、物联网都有非常重要的联系。
本课程主要讲授程序语言设计与实现中的理论和实践,相较传统编译原理课程花费比较多的篇幅在词法分析、语法分析、语法树构造等章节,这门课程会直接从 Lambda 演算 切入介绍编程语言最核心的部分,但和国外的同类课程不同的是,更多的注重把理论和实践相结合。
课程内容包括 Lambda 演算、partial evaluation、 debruin index、 模式匹配、 类型检查、类型推导、虚拟机技术等。课程的后半段会根据需要邀请其他嘉宾来进行一些分享。
该课程主要面向对基础软件感兴趣的学生、及从事软件研发的业界同行等,该课程尽量不设前置条件,希望能培养更多学生对基础软件相关领域的兴趣,后续可能会推出一些更专业的课程。
授课的示例代码使用 ReScript 语言,起源于授课老师的个人作品,也是迄今国内第一个在国际范围内有一定影响力的通用编程语言。
授课的内容大部分属于作者原创,未经授权,不得转载。
Date | Topic | Slides | Video | Example code | Recommended reading |
---|---|---|---|---|---|
Week 0 | Introduction to language design and implementation | Lec0.pdf | part1, part2, part3 | code0.zip | 社区贡献中文版@guenchi |
Week 1 | ReScript crash course | Lec1.pdf | video | 入门教程 | 环境配置 parser lexer |
Week 2 | λ calculus | Lec2-part1.pdf, Lec2-part2.pdf | part1, part2, part3, part4 | code2.zip | |
Week 3 | Names, binders, De Bruijn index | Lec3.pdf | part1, part2 | code3.zip | |
Week 4 | Stack machine and compilation | Lec4-part1.pdf, Lec4-part2.pdf | part1, part2, part3, part4 | code4.zip | |
Week 5 | Semantics analysis and type systems | Lec5-part1.pdf, Lec5-part2.pdf, Lec5-part3.pdf | part1, part2 | TBD | |
Week 6 | Closure calculus | lec6 | part1, part2 | TBD |
欢迎大家关注我们的 B 站帐号,我们课程的视频都会存放于此(记得点赞、投币、收藏哈)。
https://space.bilibili.com/1453436642
欢迎大家加入我们的公开课微信群,我们会在群里实时同步开课信息,如果群二维码过期,请加小助手微信,我们会邀请你进微信群。
https://bbs.csdn.net/forums/raelidea
粤港澳大湾区数字经济研究院 常年招聘程序语言开发工具链相关的工程师。其包括但不限于如下领域:编译器,运行时(垃圾回收),IDE, 代码编辑器, WebAssembly 等。
有兴趣的朋友欢迎投递简历到邮箱 jichuruanjian@idea.edu.cn,并在标题注明「程序语言开发工具工程师」