从头开始构建解释器

编程语言的语义

讲师:Dmitry Soshnikov

口袋资源独家Udemy付费课程独家中英文字幕配套资料齐全!

不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。

你将学到什么

  • 从头开始构建编程语言
  • 解释器和编译器
  • AOT、JIT 编译器和转译器
  • AST 解释器和虚拟机
  • 字节码、LLVM、堆栈机
  • 一流的函数、Lambda 和闭包
  • 调用堆栈和激活记录
  • OOP:类、实例和原型
  • 模块和抽象

要求

  • 基础数据结构和算法
  • 图、树、遍历

描述

编程语言的底层是如何工作的?编译器解释器有什么区别?什么是虚拟机JIT 编译器函数式编程命令式编程之间有什么区别?

在实现编程语言时有很多问题!

学校里“编译器课程”的问题是它们通常被呈现为一些“核心火箭科学”,仅适用于高级工程师。

此外,经典的编译器书籍从最不重要的主题(例如词法分析)开始,直接深入到形式语法的理论方面。当实现第一个 Tokenizer 模块时,学生们就会对这个主题失去兴趣,而没有机会真正开始实现编程语言本身。所有这一切都蔓延到整个学期的分词器和 BNF 语法上,而没有理解编程语言的实际语义。

我相信我们应该能够在 4-6 小时内构建并理解完整的端到端编程语言语义– 内容开门见山,在实时编码会议中以结对编程的形式展示,并在一种可以理解的方式。

“解释要点”课程中,我们特别关注运行时语义,并为与 JavaScript 或 Python 非常相似的编程语言构建解释器。

实现一门编程语言也能让你对其他编程语言的实际使用水平更加专业。

这门课适合谁?

本课程适合任何好奇的工程师,他们希望获得构建复杂系统的技能(构建编程语言确实是一项非常高级的工程任务!),并获得构建此类系统的可转移知识。

如果您对编译器、解释器和源代码转换工具特别感兴趣,那么本课程也适合您。

本课程的唯一先决条件是基本数据结构和算法:树、列表、遍历。

用于实现什么?

由于我们构建的语言在语义上与 JavaScript 或 Python(当今两种最流行的编程语言)非常相似,因此我们专门使用 JavaScript——其优雅的多范式结构结合了函数式编程、基于类和基于原型的 OOP,非常适合那。

许多工程师都熟悉 JavaScript,因此立即开始编码应该更容易。然而,在实现中,我们并不依赖于过于具体的 JS 构造,并且课程中的代码可以轻松移植到 TypeScript、Python、Java、C++、Rust 和您喜欢的任何其他语言。

注意: 我们希望我们的学生能够真正遵循、理解和实现解释器的每个细节,而不是仅仅复制粘贴最终解决方案。该语言的完整源代码可在视频讲座中找到,展示并指导如何构建特定模块。

这堂课有什么具体内容?

这些讲座的主要特点是:

  • 简洁明了,开门见山。每场讲座都是自给自足、简洁的,描述与主题直接相关的信息,不会分散无关材料或演讲的注意力。
  • 动画演示与实时编辑笔记相结合。这使得主题的理解变得更容易,并显示了对象结构如何(以及何时)连接。静态幻灯片根本不适用于复杂的内容。
  • 端到端的实时编码会话和作业。视频讲座课程中提供了从头开始直到最后的完整源代码。在课程中,我们为我们的编程语言实现了完整的AST 解释器。

阅读材料

作为本课程的进一步阅读和补充文献,推荐以下书籍:

  • 计算机程序的结构和解释 (SICP)作者:Harold Abelson 和 Gerald Jay Sussman
  • 编程语言:应用和解释 (PLAI)作者:Shriram Krishnamurthi

课程内容是什么?

课程分为四个部分,共18讲,每讲还有多个子主题。请参阅课程以获取详细的讲座说明。

第 1 部分:编译器速成课程

在这一部分中,我们描述不同的编译和解释管道,了解 JIT 编译器和 AOT 编译器之间的区别,讨论什么是虚拟机和字节码解释器,以及它与 AST 解释器的区别,展示本机代码的示例、LLVM IR 以及其他主题。

第 2 部分:解释器:基本表达式和变量

在这一部分中,我们开始构建我们的编程语言,并考虑基本表达式,例如数字、字符串,讨论变量、范围和词法环境、控制结构和触摸解析器生成器。

第 3 部分:函数和函数编程

在这一部分中,我们开始讨论和实现函数抽象和函数调用。我们描述了闭包、lambda 函数和 IILE(立即调用的 lambda 表达式)的概念。此外,我们还涉及调用堆栈、递归和语法糖等主题。

第 4 部分:面向对象编程

本课程的最后部分致力于我们语言中的面向对象支持。我们描述了基于类和基于原型的方法,实现了类、实例和模块的概念。

我希望您喜欢这门课程,并乐意在评论中讨论任何问题和建议。

——德米特里·索什尼科夫

本课程适合谁:

  • 好奇的工程师想要了解编程语言的底层工作原理

发表回复

后才能评论

  • 每一个课程页面,都有演示地址选项,点击链接可以跳转到课程发布网站查看详细课程列表。
  • 绝大部分课程都有试看内容,可以先点击试看,再决定是否购买。
  • 本站课程均存储在阿里云盘或百度网盘中,由于阿里云盘对分享的文件类型有限制,所以课程资料和字幕会存储到蓝奏云盘中。
  • 阿里云盘和蓝奏云盘都是不限速下载的,你既可以选择在阿里云盘中在线学习,也可以选择下载到本地学习。
  • 课程下载到本地可以挂载中英文双字幕,请点击查看Potplayer挂载中英文双字幕教程
  • 本站所有课程,均提供mp4格式视频文件,中英文双字幕,配套资料齐全,不加密。
  • 每一个课程右侧下载面板中,都会有清晰度标识,大部分都是1080P或者720P,还有少数是超高清的。
  • 本站课程购买之后,均可以免费更新,所有课程,皆配有中文字幕。
  • 请注意,课程的中文字幕是根据英文字幕用谷歌翻译生成的,本非人工翻译。谷歌翻译准确度尚可,学习观看,没有问题。
  • 由于数字资源具有可复制性,一旦购买,不接受退款要求,请在购买之前,认真了解课程内容,确定是否需要。
  • 当然,如果有特殊情况,可以查看网站底部联系方式,联系站长说明问题,我会为你妥善处理。
  • 赞助本站VIP会员,可以免费下载所有课程,详情请查看VIP介绍