Facebook Page


Programmer’s Python: Everything is an Object – Mike James

因工作上的需要,去年我才開始學習Python,寫了Python程式接近一年,寫起來漸漸得手應手。Python不愧為近年冒起得最快的語言,它集傳統OOP語言如C++和快速interpret語言如Perl兩家之大成,syntax簡潔易用,dynamic typing和duck typing寫起來更輕鬆自由,若果對typing不放心還可以optional type check。我久不久要回去寫C++,寫開Python忽然要寫上一代language,很不習慣,然後就咒罵為什麼C++沒有那些好用的功能,當然鬧了兩句後,就會記得C++比Python運行速度快很多倍,static type是有其存在的原因。

學習一個程式語言,除了學習syntax學習使用不同library外,若果要學得深入學的精專,就要明白程式語言的運作原理。C++只要有C的基礎,而C只要有Assembly的基礎,只要弄懂pointer其他就很易明。Python也是一樣,只要明白它任何東西也是object的核心,它的variable和funciton scope是如何resolve,其他所有「進階」syntax只是飾裝的外衣。

市面上有很多Python課本,亦有不少online tutorial,絕大部份都是教你應用Python去寫code,沒有真正講解Python的內部結構。Python official document有提及,我由頭到尾叫做看過一篇,不過寫得太枯燥無味,內容零碎沒有系統,不適合一般人閱讀。這本《Programmer’s Python: Everything is an Object》是進階讀物,並不適合初學者,甚至不會你寫Python,而是從程式語言設計的層面,去解釋Python內裏的運作原理,換一句話說就是解釋那些double underscore builtin attributes有什麼作用。

這本書是I Programmer網頁的作者出版,這個網頁是我follow開講computer science專業級知識的網頁。網站上有這本書的試看版,差不多也有半本書的內容,因為實在寫得太好,所以一定要賣回來看全本的內容。這本書非常冷門,不要說一般書店或網上書店沒有得賣,連加拿大Amazon也沒有入貨,更不要說網上沒有盜版pdf,我要特地去美國Amazon訂購回來。

這本書有沒有實際用處?很難講。日常寫Python程式,其實不需要理會它如何運作。看完這本書後,讓我懂得欣賞Python設計的巧妙。若果對程式語言設計有興趣,這本書亦講述很多程式語言設計理論,對日後學習其他語言會很有幫助。

Leave a Reply