當前位置: 妍妍網 > 辦公

華為大佬!手寫了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 人。