社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

从 0 到 1 ,实现自己的 Python 虚拟机!

蚂蚁学Python • 1 年前 • 819 次点击  
这两天刷知乎,看见一个老哥三年前对「编译器开发前景」的回复,可以说是精准预测未来了。随着去年 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 对象的内存分配策略,包括静态分配与动态分配的原理与实现。同时也对垃圾回收算法(如引用计数、标记清除、分代回收)的选择与实现有初步的了解。垃圾回收算法是一个独立且庞大的体系,而这一章将成为你学习垃圾回收算法的第一课,带你轻松走进内存管理知识殿堂。
 
第六阶段 异常、迭代、模块系统
异常、迭代、模块系统等高级主题相对独立,但同时也有一些依赖关系。在前五阶段的基础上,你完全有能力自己设计并实现这些主题。这一部分主要以说明架构设计为主,你可以根据课程中给出的架构设计,自己动手实现这些高级特性。

具体看看目录:

再强调一下:
早鸟秒杀,到手 ¥79单独订阅 ¥99
如果你是新人,到手只要 ¥59!


尤其值得说的一点是,海纳老师不管是在评论区还是读者群里,永远都是知无不言言无不尽,就在前几天晚上,有位同学说他没有读懂有限自动机那部分,老师连夜录制了视频讲解。

快来跟着纳老师一起手写一个自己的 Python 引擎吧。


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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/170409
 
819 次点击