当前位置: 欣欣网 > 办公

华为大佬!手写了1个Python虚拟机,还开源了

2024-07-16办公

大家好,这里是程序员晚枫,小红书/抖音/B站都叫这个名字。

上一篇文章,给大家分享了给业余爱好者的学习计划 + 配套资料,点击查看👉 ,今天给大家分享一个给专业程序员的进阶学习资料。

这两天刷知乎,看见一个老哥三年前对「编译器开发前景」的回复,可以说是精准预测未来了。 随着去年 OpenAI 的爆发, 国内芯片自主研发的步伐也在逐渐加速,越来越多的公司开始组建自己的编译器团队,不单单是以前 传统的芯片公司需要编译器开发人员,互联网公司、智驾企业,甚至物流行业、医药行业也纷纷下场开发自己领域的大模型,这导致 AI 编译器领域对相关人才的需求越来越大

我们都知道,AI 编译器的研发是一个复杂且漫长的过程,它要求大家不仅要具备扎实的计算机科学基础,还需要对人工智能和机器学习领域有深刻的洞察。

可是,在学校里想短时间内学明白这么多东西,挺难的,就算学了一大堆理论, 真正上手干活儿的时候,还是会手生,并且还缺乏与工业界实际需求对接的实践机会 。甚至工作几年了,还有不少人 对虚拟机的底层工作原理了解得不够透彻,遇到内存管理、编译优化等生产上的问题时,没有办法快速解决。

如何具备这样的能力呢?

我是跟着华为资深编译专家,原 Huawei JDK 团队负责人「海纳」的书【自己动手写 Python 虚拟机】,一步步上道的。他经过十多年的探索和实践,发现 动手写一个虚拟机是快速上手编译开发的最优的路线 。通过手写 Python 虚拟机,可以获得从宏观到微观多维度的编程能力。

  • 深入了解编程语言的工作原理和执行流程。

  • 掌握编译原理,特别是编译器的前端和后端工作机制。

  • 了解如何优化虚拟机的性能,包括 JIT 编译技术和内存管理策略。

  • 实现虚拟机的内存管理模块,掌握自动垃圾回收算法和内存分配策略。

  • 通过构建一个完整的虚拟机项目,体验软件工程从设计、编码到测试和维护的全过程。

  • 最近我有机会与海纳老师交流,他告诉我和极客时间合作最新推出了一个专栏 【手写 Python 虚拟机】 。这个专栏是他多年实战经验的精华,旨在帮助大家从 初级阶段就能够快速掌握编译技术 。海纳老师还将书中基于 Python 2.7 的内容升级到了 Python 3.0,并会一步步引导我们构建自己的 Python 虚拟机。每个环节都提供了详细的示例代码,如果在学习过程中遇到问题,也可以随时在读者群向老师求助。


    专栏里包含一套完整的代码,源码中的每次提交都实现了一个功能,这些功能与专栏章节是相互对应的 ,你可以通过提交记录轻松地与具体章节对应起来。每节课也会有实验环节以及详细的步骤说明,方便你跟随我一步步实现一个简化版的 Python 虚拟机。获取这套课程的代码,请在 公众号:Python图书馆 的后台发送: 虚拟机源码 ,即可24小时免费获取下载链接~👇

    专栏刚上线,目前正在 早鸟特惠,仅需 ¥79 !这是一个与海纳老师一起 动手实现属于你自己的编译器的绝佳机会 ,不仅能 提升你的编程技能,还能为自己搭建起一个技术护城河 。别错过这个学习提升的好时机!

    早鸟秒杀, 到手 ¥79

    如果你是新人,到手只要 ¥59!

    在这儿特别介绍下海纳老师,他原是 Huawei JDK 团队的负责人,现在担任华为资深编译器专家,主要负责华为编译器领域的相关创新工作。这两年,他笔耕不辍,不仅在 2019 年出版了【自己动手写 Python 虚拟机】一书, 还在极客时间连载了新的内存专栏,上线三天就突破千人学习 。此外他还长期维护知乎专栏【进击的 Java 新人】,近期他的【从零开始写 Linux 内核】也即将面世 海纳老师的无私分享精神和对技术深入探索的热情,无疑为我们的学习之路提供了宝贵的指引。

    海纳老师的工作,主要涉及的都是数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,因此也让他积累了大量相关的一线实战经验。

    在这个专栏里,海纳老师就是秉承着「实践化学习」的理念,避免了理论与实践的割裂感,难以把知识内化的问题, 整个项目既环环相扣,又有一定的独立性按照不同的模块将课程分成了 6 个章节层层叠进。如下图所示:

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

    这一阶段海纳老师会带你深入探讨虚拟机的起源与演进,了解它的核心优势,学习编译器是如何将源代码转化为字节码的,你还可以通过实例看到虚拟机的执行过程,包括字节码序列化、解释执行及 JIT 编译技术。

    第二阶段 控制流

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

    第三阶段 函数的实现机制

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

    第四阶段 对象系统和语言内建对象

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

    第五阶段 内存管理与垃圾回收

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

    第六阶段 异常、迭代、模块系统

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

    具体看看目录:

    再强调一下:

    早鸟秒杀, 到手 ¥79 单独订阅 ¥99

    如果你是新人,到手只要 ¥59!

    👇 点击「阅读原文」, 立省 ¥20 入手,仅限 前 50 人。