跳到主要內容

發表文章

目前顯示的是有「程式設計」標籤的文章

讀書心得: 大話設計模式

當初我跟同學們辦設計模式讀書會的時候,列出來的書單有兩本,一本是「深入淺出設計模式」,另一本就是這本「大話設計模式」。 大話設計模式其實寫得也不錯,只是跟另一本深入淺出比較起來,就明顯差了一個檔次。 大話設計模式的優點是內容非常非常的淺顯,例子很容易明白。但缺點就是是舉出來的例子真的太淺了,設計模式是拿來解決某些特定的軟體設計難題的手法,這難題若是太過簡單,那麼使用設計模式就會顯得殺雞用牛刀。 大部分的例子都跟實際脫節,為了模式而模式。像是Decorator Pattern的穿衣服,Builder Pattern也沒有真的建造出什麼東西,這樣的例子一點用都沒有,看是看懂了,但是無法明白為何要使用模式,以及模式的威力在哪裡,實際工作中也不會寫這種程式的。 不過還是看的出來作者非常的用心,華文電腦書界需要多一些這樣的作者。書裡很多比喻都很棒,像用活字印刷來比喻物件導向程式設計,讓我讀時眼睛一亮,覺得說的真好。

讀書心得: 程式設計師提昇生產力秘笈

原文書名:Productive Programmer (對岸譯『卓有成效的程序員』,我比較喜歡這個名字。) 「程式設計師提升生產力秘笈」這本書非常有趣,它並不打算教你一套新的程式心法或者尖端技術,他想要做的事情是「扭轉你從小到大操作電腦的習慣」。有一點莫名其妙,不過讀過之後,我發現自己過去的不良的操作習慣,甚至一般人習以為常的操作習慣,的確很浪費時間。 啟動板 啟動板「Launchy」是我打開書後第一個安裝的小工具軟體,而且用了五分鐘後我就愛上它了!平常我們想要啟動一隻程式,例如打開 Word,會怎麼做呢?當然是先把滑鼠移到螢幕左下角點擊「開始功能表」、展開「程式集」、選擇「Office」目錄、最後用滑鼠敲一下程式的捷徑。 這個過程一般人已經習以為常,不以為怪;而啟動版Launchy讓你直接這樣幹:按下Alt+Space叫出啟動板,敲W-O-R-D四個鍵就行了。(甚至只要敲W,啟動版就替你挑出最常用的程式),傳統的方法相較之下簡直是繁文縟節。 這例子很小,但是隱約帶出了幾個本書強調的原則: 第一、用搜尋取代瀏覽。隨著使用電腦的時間越久,應用程式的清單就會越來越長,而長度正好和其用處成反比,清單越長,效率就越低。啟動版可以幫助你跳過這段用眼睛上下找尋瀏覽的時間,保證啟動程式的動作永遠是O(1)。 第二、啟動版可以隔離那些會讓人不小心分心的事物。從你想要啟動某個程式,到程式真的運行起來之間,不會有瞥見一眼就丟掉十幾分鐘的東西,例如 RSS Reader,或者是某個你之前就很有興趣但是一直沒時間看的漂亮網頁。 第三、手不需要離開鍵盤。程序員大多時間都把手放在鍵盤上,滑鼠雖然直覺,但是操作速度上一定沒有鍵盤快,而且手臂在鍵盤與滑鼠之間一直移動也是很令人討厭的事情。 上面提到的這幾項都是書中不斷重複出現的中心思想,用搜尋取代瀏覽,排除讓你分心的事物,鍵盤永遠比滑鼠好,以及最重要的,不要不停的重複做同一件事。 附帶一提,我的桌面現在非常乾淨,只有一個垃圾桶跟幾個常用檔案,因為那些花花綠綠的圖示跟捷徑都不再需要了,呵呵。 漂亮的GUI是效率的障礙 「重複做同樣的事」是軟體開發裡面最嚴重的效率傷害,通常我們把他稱作 D.R.Y (Don't Repeat Yourself) 原則。 不光是程式碼複製貼上存在DRY原則而...

讀書心得: The C++ Standard Library : a Tutorial and Reference

Effective C++第一條款就寫明「C++是一個語言聯邦。」 這個語言聯邦由四個次語言組成,分別是 C、 物件導向C++、Template C++、以及標準庫 STL。我去年接了大一程設課助教,每週都要上台教 C++,這份苦差事意外挖出不少自己當年學習上的盲點。其中最大的問題就是我對 C++ 的後兩個部分: Template C++以及 STL 不夠熟悉,只好找上這本書來補足這方面的知識。 STL 是一個相當淺明易用的程式庫,這從我以前亂逛 cplusplus.com,糊里糊塗就能隨便抄幾句 STL 來用就可以得證。本書對我的主要幫助不是學會 STL,而是能夠從宏觀的視野來看待整個 STL,了解當初 STL 設計的時候架構上的取捨,引發的優點以及缺點,能讀到這些設計上的觀點我覺得很難能可貴。就好像我以前都覺得 STL algorithm 異常難用,看了書才知道原來 STL algorithms 要搭配 function object 才能發揮威力。各種 Iterator 的錮中差異,也是看了此書後才有全盤了解。 內容上我認為第五章是整本書的核心精華,清楚說明了 STL 三大組件的關係與腳色 (圖片節錄自書上5.1節) Container 負責管理物件集合,Algorithm 是操作手法,而 Iterator 則扮演此二者間的黏著劑,讓雙方可以透過抽象手法互相作用,不會有過緊的依賴關係,由此可以看出 STL 設計之初軟體架構就相當軟Q。接下來六 ~ 九章是書本的主力內容,分別對Container、Iterator、Algorithm 做專門深入的探討。 第八章 Function Object 我認為是值得一讀的特別章節,因為坦白說 function object 這東西使用上並不直覺 (我一直覺得只有聰明鬼才能想出替 object 加上operator( ) 來當函數呼叫的餿主意 ),但是要靈活地使用STL Algorithm,就一定要搭配 function object 才行。沒有function object,STL Algorithms 就只是彆腳程式庫。第十章之後還有介紹一些C++的其他標準庫,像是字串、I/O、國際化問題等等。 整體來講,這是一本好書,但是有點無聊。本書安排內容的方式是把 STL 各個部分切開來,每部份分配一...