發表文章

目前顯示的是 7月, 2008的文章

[ACM] 101 The Blocks Problem

本題重新寫過,請看這裡 [UVa] 101 The Blocks Problem @2009.11.12

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

圖片
本書作者之一賴名宗曾說過一句話,我覺得非常棒:「(學習) 什麼時候有了正確的觀念和目標,就什麼時候入門了。」那麼本書最大特點,就是建立正確物件導向觀念。 我早些年曾經在網路上看過一篇文章叫「 不要從程式語言學習物件導向 」,第一次讀時我看不懂。對我來說,物件導向不就是那些 class、new、public  等等的語法嗎?不從程式語言學還能從哪裡學呢?大多數坊間書籍只從「程式語法」的角度切入物件導向,受此影響的人(包括我)自然也曾經以為學會了 JAVA 就已經摸透物件導向了。 這個困惑直到我讀完了「世紀末軟體革命」後才稍微解開,物件導向之所以長青不倒的原因,是因為背後有一套組織程式的世界觀: 「程式是為了模擬世界」,「程式由物件組成,物件之間互相發送訊息」,而語法不過是實現整個思考架構的最末節。這樣來看,本書的撰寫順序「先OO,後C++」,這個次序才真的能抓到物件導向思考的脈絡。 本書從背景遠因─軟體危機的歷史背景開始,引出物件導向思想發芽,背後的理念精神「電腦運算的是為了模擬真實世界」,然後介紹比較完整的物件導向理論,最後,才以這樣的知識基礎下介紹C++ OOP。此時來看 C++ 的OO部份,眼光高度就有差異了,也可以知道C++並沒有完美的實踐所有的OO精神。 從思想起源再到程式實踐方法,一路娓娓道來,深入淺出,故事跟插圖很多,程式碼卻很少,架構起一個堅實又不艱澀的的地基。大學寫程式寫了四年,但是要問我何時真正開始瞭解物件導向? 我會說從讀過這本書開始。 另外這本書給我的感動並不只單純在技術上,這三位作者寫書的時候,都還只有20歲,文字語氣中或多或少都還帶著 BBS 上的那種大學生的說話口吻,就像賀元說,他們當初寫書的動機,也只是看了一些好書想要把想法分享給大家而已,但是這本書暢銷到隔了十年還能再出「復刻版」,讓我思考,也許我自己能做的更多,年輕人就該帶有一些瘋狂的想法然後瘋狂的行動。 侯捷的二版序八個字道盡我心中的感覺 『鷹揚年少、氣吞牛斗』。 本書有一些小缺點,像涵蓋的議題很大,想要包山包海,結果貪多嚼不爛,有些細節就模糊帶過。作者之一賴明宗現在是PTT CSSE版主,可以去朝聖一下。