有沒有內容類似於《Python源碼剖析》,但內容更新過,針對新版本的Python書籍?

網路資源什麼的也是極好的


據說 @賴勇浩 大大接手了《Python源碼剖析》的更新版本的編寫工作。不過還沒收到消息什麼時候會完成寫作。

更新:在CPyUG郵件列表上賴大大說目前公司狀況緊張,書的進度暫時放下了:

https://groups.google.com/forum/#!topic/python-cn/IVhb_Uh3at4

太任性,公司快發不出工資了,先救公司。

書的進度只能跟大家說一聲抱歉了。再等等。

賴勇浩

祝福賴大大!

CPython的新版本實現其實也沒比《Python源碼剖析》對應的CPython 2.4/2.5有多少根本性變化,對照舊書來讀新代碼還是OK的。

另外有一本比較新的書,不是直接講CPython的源碼剖析,而是藉助CPython的位元組碼設計來講解編程語言的設計與實現的:《Foundations of Programming Languages》

這本書用C++實現了一個名為CoCo的虛擬機,兼容CPython 3.2位元組碼,來講解Python及其它編程語言的概念。請參考:CoCo - A Python Virtual Machine,完整代碼作者放在在Github上了。

網路資源的話,請參考:

  • Python-Dev Info Page &<- python-dev 郵件列表。關注CPython最新動態請從郵件列表開始。

  • GitHub - amygdalama/python-internals: Resources for learning about Python internals and CPython source code &<- 資源匯總鏈接帖

  • Philip Guo - CPython internals: A ten-hour codewalk through the Python interpreter source code &<- Rochester大學的Philip Guo助理教授做的視頻講解,基於 CPython 2.7.8。實際視頻內容打不開的話請自備工具(咳咳

  • Generational GC in Python and Ruby &<- CPython 與 CRuby 的GC的講解

  • A Python Interpreter Written in Python &<- 為Python程序員而寫的,用Python來實現CPython位元組碼的解釋器。先從這裡看起會對理解實際的CPython里的做法有不少幫助。
  • Faster CPython &<- (課外閱讀)各種吐槽


沒見過,不過新版python源碼也還是類似的架子


厚著臉皮,硬答一發。

hinus/railgun

我用Java寫了一個Python虛擬機。這個玩意純粹是為了好玩,並沒有什麼實用價值。這個項目的代碼里有兩部分,一部分是python實現的,它是一個語言的前端,這門語言就叫railgun,然後我們把這個語言翻譯成了Python位元組碼文件。

RailGun位元組碼文件的格式與pyc文件完全一致的。

例如:

這樣我就編譯出來了一個rgb文件,位於rg目錄下。

Java部分就是這個虛擬機的具體實現了。具體來說,就是運行這個Java工程,可以看到這樣的圖形界面:

點擊File菜單,選擇Open Binary,打開一個rgb文件來運行。例如:

然後我選擇剛才編譯出來的snake.rgb文件。

再點擊菜單欄中的run。就可以看到貪食蛇的遊戲界面了:

如果掛掉了,按空格就能重新開始。大家可以自己去看snake.rg文件的邏輯。這個文件就是使用railgun語言實現了一個貪食蛇。

通過這個項目,即可以掌握python的編譯過程,又可以掌握python虛擬機的執行原理。而且這個項目才剛剛開始,很多東西都不完善。正好是大家用來練手的好材料。

更多內容,請關注我的公眾號:

我的公眾號


希望賴大大可以早日救活公司!Philip Guo的視頻教程確實不錯~~


雨痕的Python學習筆記可以看看


書已經在手,嘿嘿


推薦閱讀:

任何編程語言都可以編譯為原生的機器碼嗎?
解釋性語言存在的意義?
為什麼沒有國產的C/C++的編譯器?
在獨自實現一個小型編譯器中你遇到過哪些困難?

TAG:Python | 源代碼 | 虛擬機 | 腳本語言 | 編譯原理 |