2008年7月24日 星期四

讀書心得: 世紀末軟體革命復刻版

本書作者之一賴名宗曾說過一句話,我覺得非常棒:「(學習) 什麼時候有了正確的觀念和目標,就什麼時候入門了。」那麼本書最大特點,就是建立正確物件導向觀念。

我早些年曾經在網路上看過一篇文章叫「不要從程式語言學習物件導向」,第一次讀時我看不懂。對我來說,物件導向不就是那些 class、new、public  等等的語法嗎?不從程式語言學還能從哪裡學呢?大多數坊間書籍只從「程式語法」的角度切入物件導向,受此影響的人(包括我)自然也曾經以為學會了 JAVA 就已經摸透物件導向了。

這個困惑直到我讀完了「世紀末軟體革命」後才稍微解開,物件導向之所以長青不倒的原因,是因為背後有一套組織程式的世界觀: 「程式是為了模擬世界」,「程式由物件組成,物件之間互相發送訊息」,而語法不過是實現整個思考架構的最末節。這樣來看,本書的撰寫順序「先OO,後C++」,這個次序才真的能抓到物件導向思考的脈絡。

本書從背景遠因─軟體危機的歷史背景開始,引出物件導向思想發芽,背後的理念精神「電腦運算的是為了模擬真實世界」,然後介紹比較完整的物件導向理論,最後,才以這樣的知識基礎下介紹C++ OOP。此時來看 C++ 的OO部份,眼光高度就有差異了,也可以知道C++並沒有完美的實踐所有的OO精神。

從思想起源再到程式實踐方法,一路娓娓道來,深入淺出,故事跟插圖很多,程式碼卻很少,架構起一個堅實又不艱澀的的地基。大學寫程式寫了四年,但是要問我何時真正開始瞭解物件導向? 我會說從讀過這本書開始。

另外這本書給我的感動並不只單純在技術上,這三位作者寫書的時候,都還只有20歲,文字語氣中或多或少都還帶著 BBS 上的那種大學生的說話口吻,就像賀元說,他們當初寫書的動機,也只是看了一些好書想要把想法分享給大家而已,但是這本書暢銷到隔了十年還能再出「復刻版」,讓我思考,也許我自己能做的更多,年輕人就該帶有一些瘋狂的想法然後瘋狂的行動。

侯捷的二版序八個字道盡我心中的感覺 『鷹揚年少、氣吞牛斗』。

本書有一些小缺點,像涵蓋的議題很大,想要包山包海,結果貪多嚼不爛,有些細節就模糊帶過。作者之一賴明宗現在是PTT CSSE版主,可以去朝聖一下。