有沒有內容類似於《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++的編譯器?
※在獨自實現一個小型編譯器中你遇到過哪些困難?