[专栏课]极客时间 手写 Python 虚拟机(完结)|PDF+MD+音频|百度网盘

资源简介

由于国内芯片自主研发进程加快,各个公司开始筹建自己的编译器团队以开发特定领域的大模型,这一趋势显著增加了 AI 编译器领域对专业人才的需求。但在传统教育体系下走入社会的开发工程师大多不具备自己独立设计并优化编译器和虚拟机的能力,在遇到内存管理、性能调试等生产问题时往往不知所措。

那如何才能具备这样的能力呢?

海纳作为一名拥有多年编译器开发经验的技术专家,经过多年的探索和实践,发现动手写一个虚拟机是快速上手编译开发的最优的路线。通过手写 Python 虚拟机,你可以获得从宏观到微观多维度的编程能力。

  • 深入了解编程语言的工作原理和执行流程。
  • 掌握编译原理,特别是编译器的前端和后端工作机制。
  • 了解如何优化虚拟机的性能,包括 JIT 编译技术和内存管理策略。
  • 实现虚拟机的内存管理模块,掌握自动垃圾回收算法和内存分配策略。
  • 通过构建一个完整的虚拟机项目,体验软件工程从设计、编码到测试和维护的全过程。

在课程中,海纳会带你一步步实现一个自己的 Python 虚拟机,每一环节都会配备详尽的示例代码,并融入他在行业内积累的宝贵经验和设计决策背后的思考。

课程设计

为了让整个项目既环环相扣,又有一定的独立性,海纳按照不同的模块将课程分成了 6 个章节。

《[专栏课]极客时间 手写 Python 虚拟机(完结)|PDF+MD+音频|百度网盘》

第一章 编程语言的发展历程与基本架构

这一章海纳老师会带你深入探讨虚拟机的起源与演进,了解它的核心优势,学习编译器是如何将源代码转化为字节码的,你还可以通过实例看到虚拟机的执行过程,包括字节码序列化、解释执行及 JIT 编译技术。这些都是 Python 虚拟机相关的背景知识,是后面具体实操的理论基础。

第二章 控制流

学完这一章的内容,你会了解到 Python 字节码指令集、字节码文件的格式、虚拟机如何对字节码文件进行加载等内容。然后就可以实现最基本的控制流了,例如分支结构、循环结构。也就是说,虚拟机已经具备了基本的计算能力。

第三章 函数的实现机制

函数作为 Python 语言的第一类公民,可以做为参数传递给其他函数,也可以做为返回值被传出函数之外。这是函数式编程最基本的特性,但要实现函数式编程,还需要理解自由变量、闭包等特性,所以这一章你会全面了解语言虚拟机是如何实现这些高级特性的。

第四章 对象系统和语言内建对象

面向对象编程的三大特征是封装、继承和多态。在这一章中,你会看到虚拟机是如何实现通过类型创建对象,以及如何表达类型之间的继承关系这些基本内容的,然后进一步掌握运行时识别、函数覆写、操作符重载等面向对象编程中的高级主题。

第五章 内存管理与垃圾回收

这一章你会学到 Python 对象的内存分配策略,包括静态分配与动态分配的原理与实现。同时也对垃圾回收算法(如引用计数、标记清除、分代回收)的选择与实现有初步的了解。垃圾回收算法是一个独立且庞大的体系,而这一章将成为你学习垃圾回收算法的第一课,带你轻松走进内存管理知识殿堂。

第六章 异常、迭代、模块系统

异常、迭代、模块系统等高级主题相对独立,但同时也有一些依赖关系。在前五章的基础上,你完全有能力自己设计并实现这些主题。所以这一部分的内容相对简略,以说明架构设计为主,你可以根据课程中给出的架构设计,自己动手实现这些高级特性

资源目录

——/天下无鱼17号盘-90T/计算机教程SDJDS/02-极客时间/第四部分/329-100761401-专栏课-海纳-手写 Python 虚拟机(完结)
├─01|源起:动态编程语言如何引爆虚拟机的革命?.md            11.72KB
├─01|源起:动态编程语言如何引爆虚拟机的革命?.mp3            11.44MB
├─01|源起:动态编程语言如何引爆虚拟机的革命?.pdf            2.26MB
├─02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?.md            19.62KB
├─02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?.mp3            12.58MB
├─02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?.pdf            2.07MB
├─03|编程语言全景图(下):虚拟机是如何执行字节码的?.md            19.28KB
├─03|编程语言全景图(下):虚拟机是如何执行字节码的?.mp3            13.51MB
├─03|编程语言全景图(下):虚拟机是如何执行字节码的?.pdf            1.98MB
├─04|字节码文件:编译器与虚拟机的标准合约.md            20.54KB
├─04|字节码文件:编译器与虚拟机的标准合约.mp3            13.92MB
├─04|字节码文件:编译器与虚拟机的标准合约.pdf            2.46MB
├─05|分支语句:控制流让程序具备基本的运算能力.md            14.57KB
├─05|分支语句:控制流让程序具备基本的运算能力.mp3            9.39MB
├─05|分支语句:控制流让程序具备基本的运算能力.pdf            1.43MB
├─06|循环语句:控制流让虚拟机执行复杂的运算.md            18.49KB
├─06|循环语句:控制流让虚拟机执行复杂的运算.mp3            9.49MB
├─06|循环语句:控制流让虚拟机执行复杂的运算.pdf            2.47MB
├─07|类型标识:虚拟机支持对象自检的基础设施.md            15.1KB
├─07|类型标识:虚拟机支持对象自检的基础设施.mp3            7.98MB
├─07|类型标识:虚拟机支持对象自检的基础设施.pdf            1.68MB
├─08|函数和栈帧:深入区分函数的静态描述和动态记录.md            11.48KB
├─08|函数和栈帧:深入区分函数的静态描述和动态记录.mp3            9.87MB
├─08|函数和栈帧:深入区分函数的静态描述和动态记录.pdf            1.8MB
├─09|函数对象:函数是依赖什么成为第一类公民的?.md            21.52KB
├─09|函数对象:函数是依赖什么成为第一类公民的?.mp3            10.33MB
├─09|函数对象:函数是依赖什么成为第一类公民的?.pdf            2.47MB
├─10|变量的作用域:哪些复杂规则是因函数而产生的?.md            17.15KB
├─10|变量的作用域:哪些复杂规则是因函数而产生的?.mp3            10.7MB
├─10|变量的作用域:哪些复杂规则是因函数而产生的?.pdf            856.46KB
├─11|函数的参数:赋予函数意义的关键特性.md            19.02KB
├─11|函数的参数:赋予函数意义的关键特性.mp3            8.29MB
├─11|函数的参数:赋予函数意义的关键特性.pdf            2.18MB
├─12|Native方法:打通底层软件与高层应用的关键.md            22.47KB
├─12|Native方法:打通底层软件与高层应用的关键.mp3            14.22MB
├─12|Native方法:打通底层软件与高层应用的关键.pdf            1.56MB
├─13|列表(上):Python语言的核心数据结构.md            26.6KB
├─13|列表(上):Python语言的核心数据结构.mp3            16.6MB
├─13|列表(上):Python语言的核心数据结构.pdf            2.46MB
├─14|列表(下):列表所支持的基本操作.md            25.84KB
├─14|列表(下):列表所支持的基本操作.mp3            11.53MB
├─14|列表(下):列表所支持的基本操作.pdf            1.92MB
├─15|字典(上):关联式数据结构的基本表示.md            23.9KB
├─15|字典(上):关联式数据结构的基本表示.mp3            14.88MB
├─15|字典(上):关联式数据结构的基本表示.pdf            1.82MB
├─16|字典(下):位置参数和闭包依赖字典实现.md            18.79KB
├─16|字典(下):位置参数和闭包依赖字典实现.mp3            12.74MB
├─16|字典(下):位置参数和闭包依赖字典实现.pdf            1.68MB
├─17|函数闭包:函数式编程的重要支撑.md            20.65KB
├─17|函数闭包:函数式编程的重要支撑.mp3            13.69MB
├─17|函数闭包:函数式编程的重要支撑.pdf            2.25MB
├─18|类型对象:虚拟机如何识别对象的类型?.md            19.68KB
├─18|类型对象:虚拟机如何识别对象的类型?.mp3            12.98MB
├─18|类型对象:虚拟机如何识别对象的类型?.pdf            2.75MB
├─19|自定义类型:面向对象编程的基础设施.md            19.16KB
├─19|自定义类型:面向对象编程的基础设施.mp3            13.48MB
├─19|自定义类型:面向对象编程的基础设施.pdf            756.46KB
├─20|创建对象:支持对象创建和访问属性以完成基本对象系统.md            20.1KB
├─20|创建对象:支持对象创建和访问属性以完成基本对象系统.mp3            12.68MB
├─20|创建对象:支持对象创建和访问属性以完成基本对象系统.pdf            1.55MB
├─21|继承和多态:完善面向对象编程的两大特征.md            25.18KB
├─21|继承和多态:完善面向对象编程的两大特征.mp3            14.83MB
├─21|继承和多态:完善面向对象编程的两大特征.pdf            1.9MB
├─22|自动内存管理:把程序员从内存缺陷的海洋里解放出来.md            16.41KB
├─22|自动内存管理:把程序员从内存缺陷的海洋里解放出来.mp3            14.19MB
├─22|自动内存管理:把程序员从内存缺陷的海洋里解放出来.pdf            2.27MB
├─23|复制算法:最简单高效的垃圾回收算法.md            22.53KB
├─23|复制算法:最简单高效的垃圾回收算法.mp3            15.24MB
├─23|复制算法:最简单高效的垃圾回收算法.pdf            1.46MB
├─24|标记和回收:完成对象的搬移以整理内存.md            27.29KB
├─24|标记和回收:完成对象的搬移以整理内存.mp3            15.73MB
├─24|标记和回收:完成对象的搬移以整理内存.pdf            2.72MB
├─25|模块和库:构筑现代软件系统的基础材料.md            17.63KB
├─25|模块和库:构筑现代软件系统的基础材料.mp3            10.84MB
├─25|模块和库:构筑现代软件系统的基础材料.pdf            1.29MB
├─26|动态扩展库:Python大流行的最根本保障.md            18.45KB
├─26|动态扩展库:Python大流行的最根本保障.mp3            13.09MB
├─26|动态扩展库:Python大流行的最根本保障.pdf            1.67MB
├─27|异常(上):优雅高效地处理运行时发生的错误.md            25.9KB
├─27|异常(上):优雅高效地处理运行时发生的错误.mp3            14.29MB
├─27|异常(上):优雅高效地处理运行时发生的错误.pdf            2.09MB
├─28|异常(下):处理finally子句和traceback对象.md            14.2KB
├─28|异常(下):处理finally子句和traceback对象.mp3            8.09MB
├─28|异常(下):处理finally子句和traceback对象.pdf            1.19MB
├─29|Generator:一种无栈协程的简易实现.md            20KB
├─29|Generator:一种无栈协程的简易实现.mp3            11.79MB
├─29|Generator:一种无栈协程的简易实现.pdf            1.34MB
├─images
│   ├─771605
│   │   ├─324197e998ee7d274439d6ae1318aaa7.pdf            355.76KB
│   │   ├─324197e998ee7d274439d6ae1318aaa7.png            158.14KB
│   │   ├─b1a535116f3a5dc5c78eb53df5b27622.pdf            162.1KB
│   │   ├─b1a535116f3a5dc5c78eb53df5b27622.png            272.37KB
│   │   ├─fe1273d83c2e5e245700fa19324d18d4.pdf            278.26KB
│   │   └─fe1273d83c2e5e245700fa19324d18d4.png            208.96KB
│   ├─771660
│   │   ├─01f33b8729bb289658b79af49ca257dc.pdf            206.82KB
│   │   ├─01f33b8729bb289658b79af49ca257dc.png            153.81KB
│   │   ├─1ea8133850ebb83f94bf8bcf0877633c.pdf            69.75KB
│   │   ├─1ea8133850ebb83f94bf8bcf0877633c.png            80.32KB
│   │   ├─5ea648a5d7cd6fc5eca7640d57897c83.pdf            103.22KB
│   │   ├─5ea648a5d7cd6fc5eca7640d57897c83.png            117.39KB
│   │   ├─ccfa870a1eb9a2bdd1c9ed5d0cf222d2.pdf            117.64KB
│   │   └─ccfa870a1eb9a2bdd1c9ed5d0cf222d2.png            107.17KB
│   ├─771898
│   │   ├─2c9600efe3e6fc7yy2877441afa26fbf.pdf            287.64KB
│   │   └─2c9600efe3e6fc7yy2877441afa26fbf.png            497.75KB
│   ├─771985
│   ├─772694
│   │   ├─ba9ee25d195e399f277b56905c3bc315.jpg            476.18KB
│   │   └─ba9ee25d195e399f277b56905c3bc315.pdf            482.72KB
│   ├─772703
│   ├─774403
│   │   ├─324197e998ee7d274439d6ae1318aaa7.pdf            355.76KB
│   │   └─324197e998ee7d274439d6ae1318aaa7.png            158.14KB
│   ├─774409
│   │   ├─17086a688yy18a3258faecc89db002d0.pdf            85.88KB
│   │   └─17086a688yy18a3258faecc89db002d0.png            52.36KB
│   ├─774417
│   │   ├─2e8c128c99291f57f5c0fd4548af2e01.pdf            170.38KB
│   │   ├─2e8c128c99291f57f5c0fd4548af2e01.png            82.02KB
│   │   ├─69f17b130becf91dce6e08aed25ba1f3.pdf            97.57KB
│   │   ├─69f17b130becf91dce6e08aed25ba1f3.png            43.02KB
│   │   ├─6b9286d031e12943d11557dc55d8cc46.pdf            222.14KB
│   │   └─6b9286d031e12943d11557dc55d8cc46.png            86.32KB
│   ├─775514
│   ├─776949
│   │   ├─10c4f4fyyd82dc55747a841e0945477b.pdf            159.22KB
│   │   ├─10c4f4fyyd82dc55747a841e0945477b.png            80.07KB
│   │   ├─83d893e0ba9a7271b2eb4609c5315189.pdf            94.16KB
│   │   └─83d893e0ba9a7271b2eb4609c5315189.png            68.05KB
│   ├─776954
│   ├─776961
│   │   ├─7fcd114022ff43149a4c34d2185fa4be.pdf            90.88KB
│   │   ├─7fcd114022ff43149a4c34d2185fa4be.png            52.37KB
│   │   ├─ff5646ce3251214273a64yye20361e7c.pdf            86.28KB
│   │   └─ff5646ce3251214273a64yye20361e7c.png            52.83KB
│   ├─777628
│   ├─778919
│   │   ├─6bea886237c2427e3e155305fece5211.pdf            74.92KB
│   │   └─6bea886237c2427e3e155305fece5211.png            56.11KB
│   ├─780132
│   ├─780140
│   ├─781338
│   ├─781345
│   │   ├─761564yy460a1108a69f0e834e456ec9.pdf            85.75KB
│   │   ├─761564yy460a1108a69f0e834e456ec9.png            54.28KB
│   │   ├─f6a22bd87f95c4fce6386e224ff8c69d.pdf            83.8KB
│   │   └─f6a22bd87f95c4fce6386e224ff8c69d.png            60.36KB
│   ├─781683
│   ├─782323
│   │   ├─8520460d637193f95937c5cfd75d9801.pdf            155.94KB
│   │   ├─8520460d637193f95937c5cfd75d9801.png            77.31KB
│   │   ├─a7d63b04a4beb86a14b77aa837f6128e.pdf            77.06KB
│   │   ├─a7d63b04a4beb86a14b77aa837f6128e.png            43.72KB
│   │   ├─af38a3eca9e81dc0f3b04c4d5ed993a5.pdf            160.21KB
│   │   └─af38a3eca9e81dc0f3b04c4d5ed993a5.png            74.73KB
│   ├─782484
│   │   ├─121cc1df376149eabf50d058f9105218.pdf            161.59KB
│   │   ├─121cc1df376149eabf50d058f9105218.png            66.71KB
│   │   ├─2e73e7d63d7f4bde3738518b2d56e4e6.pdf            164.29KB
│   │   ├─2e73e7d63d7f4bde3738518b2d56e4e6.png            76.19KB
│   │   ├─c250324e2b6f9befd6847fe9b2b12533.pdf            96.71KB
│   │   ├─c250324e2b6f9befd6847fe9b2b12533.png            57.23KB
│   │   ├─c4a19f1af604d2a6yy15d90a24ba4191.pdf            132.91KB
│   │   └─c4a19f1af604d2a6yy15d90a24ba4191.png            66.94KB
│   ├─782495
│   │   ├─0f201de8c81bdac36bba48dd618a5984.pdf            119.33KB
│   │   └─0f201de8c81bdac36bba48dd618a5984.png            72.18KB
│   ├─782504
│   │   ├─737d8d43111c257720ea89875586692b.pdf            322.32KB
│   │   └─737d8d43111c257720ea89875586692b.png            252.11KB
│   ├─785249
│   │   ├─773e3b48529868b77b2269bbaca59291.pdf            182.9KB
│   │   └─773e3b48529868b77b2269bbaca59291.png            161.56KB
│   ├─785277
│   │   ├─66210ef222d0e86a96ece837530cc2df.pdf            72.64KB
│   │   ├─66210ef222d0e86a96ece837530cc2df.png            24.48KB
│   │   ├─734ce05ed2df3f9f195cf1fd5a77dbfd.pdf            62.93KB
│   │   ├─734ce05ed2df3f9f195cf1fd5a77dbfd.png            27.89KB
│   │   ├─86642eb21b73b6309eac43ca2d6b9d7d.pdf            154.74KB
│   │   ├─86642eb21b73b6309eac43ca2d6b9d7d.png            70.18KB
│   │   ├─f6aa26dd4fde6e3fbaf8b09cda6e3957.pdf            100KB
│   │   └─f6aa26dd4fde6e3fbaf8b09cda6e3957.png            54.75KB
│   ├─785300
│   │   ├─08f45b58ffdf10a6b7e401b9ff04a264.pdf            92.66KB
│   │   ├─08f45b58ffdf10a6b7e401b9ff04a264.png            42.43KB
│   │   ├─238e24270dd4f9f4f3d530fba0eaaa81.pdf            46.22KB
│   │   ├─238e24270dd4f9f4f3d530fba0eaaa81.png            25.39KB
│   │   ├─3yy8db514685a2e7eb0c305cd39ab417.pdf            79.54KB
│   │   ├─3yy8db514685a2e7eb0c305cd39ab417.png            40.97KB
│   │   ├─b8ba5bcf5c574b6e785f066996256b67.pdf            48.09KB
│   │   ├─b8ba5bcf5c574b6e785f066996256b67.png            31.37KB
│   │   ├─de0b7b47230e641dyy08c66ebed34fdf.pdf            120.94KB
│   │   └─de0b7b47230e641dyy08c66ebed34fdf.png            50.79KB
│   ├─788719
│   │   ├─21592b07e25ebf61c429b7a969a273e8.pdf            103.67KB
│   │   ├─21592b07e25ebf61c429b7a969a273e8.png            42.04KB
│   │   ├─84e537f2afd291719daea44f11f8dfd2.pdf            86.64KB
│   │   └─84e537f2afd291719daea44f11f8dfd2.png            38.86KB
│   ├─788992
│   ├─790215
│   ├─790838
│   ├─791160
│   ├─792430
│   ├─792446
│   │   ├─1dc4a1b119cc53163b952dab048f5b7b.jpg            264.75KB
│   │   └─1dc4a1b119cc53163b952dab048f5b7b.pdf            271.29KB
│   └─792447
│         ├─28d1be62669b4f3cc01c36466bf811a4.pdf            30.08KB
│         └─28d1be62669b4f3cc01c36466bf811a4.png            5.7KB
├─list.txt            -1.#INDB
├─videos
│   ├─02|编程语言全景图(上):编译器是如何把源代码翻译成字节码的?
│   │   └─2cf450a8-18f79f4b206-0000-0000-01d-dbacd.mp4            12.65MB
│   ├─04|字节码文件:编译器与虚拟机的标准合约
│   │   └─344c7866-18f93ee3d18-0000-0000-01d-dbacd.mp4            78.37MB
│   ├─导学|三小时掌握C++(上)
│   │   └─1613bf3a-18f84671e25-0000-0000-01d-dbacd.mp4            240.4MB
│   ├─导学|三小时掌握C++(下)
│   │   └─6285b576-18fed3848dc-0000-0000-01d-dbacd.mp4            679.51MB
│   └─导学|三小时掌握C++(中)
│         └─424d64a-18fa95e4a7d-0000-0000-01d-dbacd.mp4            1.84GB
├─导学|三小时掌握C++(上).md            624B
├─导学|三小时掌握C++(上).pdf            1.78MB
├─导学|三小时掌握C++(下).md            218B
├─导学|三小时掌握C++(下).pdf            1.8MB
├─导学|三小时掌握C++(中).md            239B
├─导学|三小时掌握C++(中).pdf            1.69MB
├─开篇词|从0开始,打造一个属于自己的Python引擎.md            10.5KB
├─开篇词|从0开始,打造一个属于自己的Python引擎.mp3            9.22MB
├─开篇词|从0开始,打造一个属于自己的Python引擎.pdf            2.21MB
├─结束语|结束,只是新的开始.md            6.09KB
├─结束语|结束,只是新的开始.mp3            5.55MB
├─结束语|结束,只是新的开始.pdf            1.02MB
├─结课测试|一起挑战吧!.md            415B
└─结课测试|一起挑战吧!.pdf            347.74KB

资源下载

抱歉,只有登录并在本文发表评论才能阅读隐藏内容,切记不要恶意刷,否则会被限制,先阅读用户规则,一旦进入黑名单,不可能再放出来。同时注意,暂停在线支付,请联系客服QQ2441105221。
  1. 我又杀牲了说道:

    :surprised: 学习

  2. 浅陌说道:

    感谢分享

发表回复