专栏名称: 廖雪峰
业余马拉松选手廖雪峰的公众号,各种鸡汤混杂负能量,心理承受能力不强者慎重订阅。
目录
相关文章推荐
国际金融报  ·  劣迹斑斑!和合期货被吊销期货业务许可证 ·  昨天  
金融早实习  ·  正略集团2025校园招聘 ·  昨天  
金融早实习  ·  ‌易方达基金‌2025校园招聘 ·  昨天  
Wind万得  ·  意义重大,比亚迪即将官宣 ·  昨天  
国际金融报  ·  DeepSeek爆火,银行下场“吃螃蟹” ·  4 天前  
51好读  ›  专栏  ›  廖雪峰

从 0 到 1 ,手写一个自己的 Python 虚拟机!

廖雪峰  · 公众号  ·  · 2024-05-08 19:09

正文

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

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

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

如何具备这样的能力呢?

我是跟着华为资深编译专家,原 Huawei JDK 团队负责人「海纳」的书《自己动手写 Python 虚拟机》,一步步上道的。他经过十多年的探索和实践,发现 动手写一个虚拟机是快速上手编译开发的最优的路线 。通过手写 Python 虚拟机,可以获得从宏观到微观多维度的编程能力。
  • 深入了解编程语言的工作原理和执行流程。
  • 掌握编译原理,特别是编译器的前端和后端工作机制。
  • 了解如何优化虚拟机的性能,包括 JIT 编译技术和内存管理策略。
  • 实现虚拟机的内存管理模块,掌握自动垃圾回收算法和内存分配策略。
  • 通过构建一个完整的虚拟机项目,体验软件工程从设计、编码到测试和维护的全过程。

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

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

早鸟秒杀, 到手 ¥79
如果你是新人,到手只要 ¥59!

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

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

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


第一阶段 编程语言的发展历程与基本架构
这一阶段海纳老师会带你深入探讨虚拟机的起源与演进,了解它的核心优势,学习编译器是如何将源代码转化为字节码的,你还可以通过实例看到虚拟机的执行过程,包括字节码序列化、解释执行及 JIT 编译技术。
第二阶段 控制流
在这部分,你会了解到 Python 字节码指令集、字节码文件的格式、虚拟机如何对字节码文件进行加载等内容。然后就可以实现最基本的控制流了,例如分支结构、循环结构。也就是说,虚拟机已经具备了基本的计算能力。
第三阶段 函数的实现机制
函数作为 Python 语言的第一类公民,可以做为参数传递给其他函数,也可以做为返回值被传出函数之外。这是函数式编程最基本的特性,但要实现函数式编程,还需要理解自由变量、闭包等特性,所以这一阶段你会全面了解语言虚拟机是如何实现这些高级特性的。
第四阶段 对象系统和语言内建对象
面向对象编程的三大特征是封装、继承和多态。在这一章中,你会看到虚拟机是如何实现通过类型创建对象,以及如何表达类型之间的继承关系这些基本内容的,然后进一步掌握运行时识别、函数覆写、操作符重载等面向对象编程中的高级主题。
第五阶段 内存管理与垃圾回收
这一阶段你会学到 Python 对象的内存分配策略,包括静态分配与动态分配的原理与实现。同时也对垃圾回收算法(如引用计数、标记清除、分代回收)的选择与实现有初步的了解。垃圾回收算法是一个独立且庞大的体系,而这一章将成为你学习垃圾回收算法的第一课,带你轻松走进内存管理知识殿堂。






请到「今天看啥」查看全文


推荐文章
金融早实习  ·  正略集团2025校园招聘
昨天
金融早实习  ·  ‌易方达基金‌2025校园招聘
昨天
Wind万得  ·  意义重大,比亚迪即将官宣
昨天
国际金融报  ·  DeepSeek爆火,银行下场“吃螃蟹”
4 天前
奔波儿灞与灞波儿奔  ·  男友沉迷游戏,我和别人出轨了都不知道!
7 年前
潮人  ·  潮流壁纸精选 | 2017-04-26
7 年前