课程简介:
为了让整个项目既环环相扣,又有一定的独立性,海纳按照不同的模块将课程分成了 6 个章节。
第一章 编程语言的发展历程与基本架构
这一章海纳老师会带你深入探讨虚拟机的起源与演进,了解它的核心优势,学习编译器是如何将源代码转化为字节码的,你还可以通过实例看到虚拟机的执行过程,包括字节码序列化、解释执行及 JIT 编译技术。这些都是 Python 虚拟机相关的背景知识,是后面具体实操的理论基础。
第二章 控制流
学完这一章的内容,你会了解到 Python 字节码指令集、字节码文件的格式、虚拟机如何对字节码文件进行加载等内容。然后就可以实现最基本的控制流了,例如分支结构、循环结构。也就是说,虚拟机已经具备了基本的计算能力。
第三章 函数的实现机制
函数作为 Python 语言的第一类公民,可以做为参数传递给其他函数,也可以做为返回值被传出函数之外。这是函数式编程最基本的特性,但要实现函数式编程,还需要理解自由变量、闭包等特性,所以这一章你会全面了解语言虚拟机是如何实现这些高级特性的。
第四章 对象系统和语言内建对象
面向对象编程的三大特征是封装、继承和多态。在这一章中,你会看到虚拟机是如何实现通过类型创建对象,以及如何表达类型之间的继承关系这些基本内容的,然后进一步掌握运行时识别、函数覆写、操作符重载等面向对象编程中的高级主题。
第五章 内存管理与垃圾回收
这一章你会学到 Python 对象的内存分配策略,包括静态分配与动态分配的原理与实现。同时也对垃圾回收算法(如引用计数、标记清除、分代回收)的选择与实现有初步的了解。垃圾回收算法是一个独立且庞大的体系,而这一章将成为你学习垃圾回收算法的第一课,带你轻松走进内存管理知识殿堂。
第六章 异常、迭代、模块系统
异常、迭代、模块系统等高级主题相对独立,但同时也有一些依赖关系。在前五章的基础上,你完全有能力自己设计并实现这些主题。所以这一部分的内容相对简略,以说明架构设计为主,你可以根据课程中给出的架构设计,自己动手实现这些高级特性。
课程目录:
├──导学|三小时掌握C++(上).md 0.61kb
├──导学|三小时掌握C++(下).md 0.21kb
├──导学|三小时掌握C++(中).md 0.23kb
├──开篇词|从0开始,打造一个属于自己的Python引擎.md 10.50kb
└──开篇词|从0开始,打造一个属于自己的Python引擎.mp3 9.22M
├──01|源起:动态编程语言如何引爆虚拟机的革命?.md 11.72kb
├──01|源起:动态编程语言如何引爆虚拟机的革命?.mp3 11.44M
├──02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?.md 19.62kb
├──02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?.mp3 12.58M
├──03|编程语言全景图(下):虚拟机是如何执行字节码的?.md 19.28kb
├──03|编程语言全景图(下):虚拟机是如何执行字节码的?.mp3 13.51M
├──04|字节码文件:编译器与虚拟机的标准合约.md 20.54kb
├──04|字节码文件:编译器与虚拟机的标准合约.mp3 13.92M
├──05|分支语句:控制流让程序具备基本的运算能力.md 14.57kb
├──05|分支语句:控制流让程序具备基本的运算能力.mp3 9.39M
├──06|循环语句:控制流让虚拟机执行复杂的运算.md 18.49kb
├──06|循环语句:控制流让虚拟机执行复杂的运算.mp3 9.49M
├──07|类型标识:虚拟机支持对象自检的基础设施.md 15.10kb
├──07|类型标识:虚拟机支持对象自检的基础设施.mp3 7.98M
├──08|函数和栈帧:深入区分函数的静态描述和动态记录.md 11.48kb
├──08|函数和栈帧:深入区分函数的静态描述和动态记录.mp3 9.87M
├──09|函数对象:函数是依赖什么成为第一类公民的?.md 21.52kb
├──09|函数对象:函数是依赖什么成为第一类公民的?.mp3 10.33M
├──10|变量的作用域:哪些复杂规则是因函数而产生的?.md 17.15kb
├──10|变量的作用域:哪些复杂规则是因函数而产生的?.mp3 10.70M
├──11|函数的参数:赋予函数意义的关键特性.md 19.02kb
├──11|函数的参数:赋予函数意义的关键特性.mp3 8.29M
├──12|Native方法:打通底层软件与高层应用的关键.md 22.47kb
├──12|Native方法:打通底层软件与高层应用的关键.mp3 14.22M
├──13|列表(上):Python语言的核心数据结构.md 26.60kb
├──13|列表(上):Python语言的核心数据结构.mp3 16.60M
├──14|列表(下):列表所支持的基本操作.md 25.84kb
├──14|列表(下):列表所支持的基本操作.mp3 11.53M
├──15|字典(上):关联式数据结构的基本表示.md 23.90kb
├──15|字典(上):关联式数据结构的基本表示.mp3 14.88M
├──16|字典(下):位置参数和闭包依赖字典实现.md 18.79kb
├──16|字典(下):位置参数和闭包依赖字典实现.mp3 12.74M
├──17|函数闭包:函数式编程的重要支撑.md 20.65kb
├──17|函数闭包:函数式编程的重要支撑.mp3 13.69M
├──18|类型对象:虚拟机如何识别对象的类型?.md 19.68kb
├──18|类型对象:虚拟机如何识别对象的类型?.mp3 12.98M
├──19|自定义类型:面向对象编程的基础设施.md 19.16kb
├──19|自定义类型:面向对象编程的基础设施.mp3 13.48M
├──20|创建对象:支持对象创建和访问属性以完成基本对象系统.md 20.10kb
├──20|创建对象:支持对象创建和访问属性以完成基本对象系统.mp3 12.68M
├──21|继承和多态:完善面向对象编程的两大特征.md 25.18kb
├──21|继承和多态:完善面向对象编程的两大特征.mp3 14.83M
├──22|自动内存管理:把程序员从内存缺陷的海洋里解放出来.md 16.41kb
├──22|自动内存管理:把程序员从内存缺陷的海洋里解放出来.mp3 14.19M
├──23|复制算法:最简单高效的垃圾回收算法.md 22.53kb
├──23|复制算法:最简单高效的垃圾回收算法.mp3 15.24M
├──24|标记和回收:完成对象的搬移以整理内存.md 27.29kb
├──24|标记和回收:完成对象的搬移以整理内存.mp3 15.73M
├──25|模块和库:构筑现代软件系统的基础材料.md 17.63kb
├──25|模块和库:构筑现代软件系统的基础材料.mp3 10.84M
├──26|动态扩展库:Python大流行的最根本保障.md 18.45kb
├──26|动态扩展库:Python大流行的最根本保障.mp3 13.09M
├──27|异常(上):优雅高效地处理运行时发生的错误.md 25.90kb
├──27|异常(上):优雅高效地处理运行时发生的错误.mp3 14.29M
├──28|异常(下):处理finally子句和traceback对象.md 14.20kb
├──28|异常(下):处理finally子句和traceback对象.mp3 8.09M
├──29|Generator:一种无栈协程的简易实现.md 20.00kb
├──29|Generator:一种无栈协程的简易实现.mp3 11.79M
├──结课测试|一起挑战吧!.md 0.41kb
├──结束语|结束,只是新的开始.md 6.09kb
├──结束语|结束,只是新的开始.mp3 5.55M
├──资料
├──videos
| ├──02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?
| ├──04|字节码文件:编译器与虚拟机的标准合约
| ├──导学|三小时掌握C++(上)
| ├──导学|三小时掌握C++(下)
| └──导学|三小时掌握C++(中)