这两天刷知乎,看见一个老哥三年前对「编译器开发前景」的回复,可以说是精准预测未来了。
随着去年 OpenAI 的爆发,
国内芯片自主研发的步伐也在逐渐加速,越来越多的公司开始组建自己的编译器团队,不单单是以前
传统的芯片公司需要编译器开发人员,互联网公司、智驾企业,甚至物流行业、医药行业也纷纷下场开发自己领域的大模型,这导致
AI 编译器领域对相关人才的需求越来越大
。
我们都知道,AI 编译器的研发是一个复杂且漫长的过程,它要求大家不仅要具备扎实的计算机科学基础,还需要对人工智能和机器学习领域有深刻的洞察。
可是,在学校里想短时间内学明白这么多东西,挺难的,就算学了一大堆理论,
真正上手干活儿的时候,还是会手生,并且还缺乏与工业界实际需求对接的实践机会
。甚至工作几年了,还有不少人
对虚拟机的底层工作原理了解得不够透彻,遇到内存管理、编译优化等生产上的问题时,没有办法快速解决。
我是跟着华为资深编译专家,原 Huawei JDK 团队负责人「海纳」的书《自己动手写 Python 虚拟机》,一步步上道的。
他经过十多年的探索和实践,发现
动手写一个虚拟机是快速上手编译开发的最优的路线
。
通过手写 Python 虚拟机,可以获得从宏观到微观多维度的编程能力:
-
深入了解编程语言的工作原理和执行流程。
-
掌握编译原理,特别是编译器的前端和后端工作机制。
-
了解如何优化虚拟机的性能,包括 JIT 编译技术和内存管理策略。
-
实现虚拟机的内存管理模块,掌握自动垃圾回收算法和内存分配策略。
-
通过构建一个完整的虚拟机项目,体验软件工程从设计、编码到测试和维护的全过程。
最近跟海纳老师交流,知道他跟极客时间合作最新推出了一个专栏
《手写 Python 虚拟机》,可以说是图书的进阶版本了。
这个专栏凝聚了他多年的实战经验,旨在帮助大家从
初级阶段就能够快速掌握编译技术
。海纳老师还将书中
基于 Python 2.7 的内容升级到了 Python 3.0
,然后一步步引导我们构建自己的 Python 虚拟机。每个环节都提供了详细的示例代码,如果在学习过程中遇到问题,也可以随时在读者群向老师求助。
专栏刚上线,目前正在
早鸟特惠,仅需 ¥79
!这是一个与海纳老师一起
动手实现属于你自己的编译器的绝佳机会
,不仅能
提升你的编程技能,还能为自己搭建起一个技术护城河
。别错过这个学习提升的好时机!
在这儿特别介绍下海纳老师,他原是 Huawei JDK 团队的负责人,现在担任华为资深编译器专家,主要负责华为编译器领域的相关创新工作。这两年,他笔耕不辍,不仅在
2019 年出版了《自己动手写 Python 虚拟机》一书,
还在极客时间连载了新的内存专栏,上线三天就突破千人学习
。此外他还长期维护知乎专栏《进击的 Java 新人》,近期他的《从零开始写 Linux 内核》也即将面世
。
海纳老师的无私分享精神和对技术深入探索的热情,无疑为我们的学习之路提供了宝贵的指引。
海纳老师的工作,主要涉及的都是数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,因此他积累了大量相关的一线实战经验。
在这个专栏里,海纳老师就是秉承着“实践化学习”的理念,避免了理论与实践的割裂感,难以把知识内化的问题,
整个项目既环环相扣,又有一定的独立性按照不同的模块将课程分成了 6 个章节层层叠进。如下图所示:
这一阶段海纳老师会带你深入探讨虚拟机的起源与演进,了解它的核心优势,学习编译器是如何将源代码转化为字节码的,你还可以通过实例看到虚拟机的执行过程,包括字节码序列化、解释执行及 JIT 编译技术。
在这部分,你会了解到 Python 字节码指令集、字节码文件的格式、虚拟机如何对字节码文件进行加载等内容。然后就可以实现最基本的控制流了,例如分支结构、循环结构。也就是说,虚拟机已经具备了基本的计算能力。
函数作为 Python 语言的第一类公民,可以做为参数传递给其他函数,也可以做为返回值被传出函数之外。这是函数式编程最基本的特性,但要实现函数式编程,还需要理解自由变量、闭包等特性,所以这一阶段你会全面了解语言虚拟机是如何实现这些高级特性的。
面向对象编程的三大特征是封装、继承和多态。在这一章中,你会看到虚拟机是如何实现通过类型创建对象,以及如何表达类型之间的继承关系这些基本内容的,然后进一步掌握运行时识别、函数覆写、操作符重载等面向对象编程中的高级主题。
这一阶段你会学到 Python 对象的内存分配策略,包括静态分配与动态分配的原理与实现。同时也对垃圾回收算法(如引用计数、标记清除、分代回收)的选择与实现有初步的了解。垃圾回收算法是一个独立且庞大的体系,而这一章将成为你学习垃圾回收算法的第一课,带你轻松走进内存管理知识殿堂。
异常、迭代、模块系统等高级主题相对独立,但同时也有一些依赖关系。在前五阶段的基础上,你完全有能力自己设计并实现这些主题。这一部分主要以说明架构设计为主,你可以根据课程中给出的架构设计,自己动手实现这些高级特性。