跳到主要內容

發表文章

讀書心得: 禮物

在人生中剛剛好的時刻,遇見一本書,提醒我許多已經忘記的事。溫暖的一本小書,簡短的故事,我在圖書館拿著書直接翻完了,卻比長篇大論更打動人心。 剛好我現在的年紀,開始會對以前做的一些事情懊悔,發現人生沒有那麼簡單,對未來又有一些迷惘和擔憂的時候,有時候就會被這些情緒佔用了我大部分的生活。 今天是上天賜與的禮物,這是為何他被叫作 當下(present) 的理由。這本小故事就是禮物,當你覺得事事不順的時候,就專注在當下的好事上吧,不要為過去自怨自艾,學習過去的失敗的經驗,去創造未來。 簡單再不過的事情,或許有點過於理想,幸福感多到漫出來了,重點是,你去實行了嗎?

讀書心得: 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 各個部分切開來,每部份分配一...

C++ Standard Library 讀書筆記: Function Object

我讀 C++ Standard Library: a Tutorial and Reference 後的筆記,主要內容來自 5.9小節,整個第八章,以及一些我自己的感想。 STL Algorithms C++ STL Algorithms 裡一系列操作容器的函數,我一直以來都覺得這系列函數異常的難用。例如萬年範例 -- for_each 逐一打印容器的元素: void print_int( int i ) { cout << i << endl; } for_each(v.begin(), v.end(), print_int); //逐一印出元素 乍看之下簡潔,但是這 for_each 有個致命的缺點,就是沒辦法傳入額外參數。例如我想對集合內的每個數值都加上一個固定值,用 for 迴圈再直覺不過: int value = 5; vector<int> ::iterator it; for(it=v.begin(); it!=v.end(); ++it) *it = *it + value; 這麼簡單的程式,想要改寫成for_each版本,馬上碰壁: void add_value( int & i ) { i = i + ???; // add something? } int main() { vector<int> v; for_each(v.begin(), v.end(), add_value); } 問號的地方只能放常數或者全域變數,而兩個選項都很爛,我真正想要的是從 main 裡面傳入一個變數。所以很長一段時間我把 for_each 封印起來,乖乖自己寫 for 迴圈。 Function Object 直到最近,我才明瞭到 function object 可能是這個惱人的問題的答案。 所謂的 function object 就是一個object,但是實做了operator() 。它實際上是物件,但可以當作函數來呼叫。要發揮整個 STL Algorithms 的威力,就一定要瞭解 function object。萬年打印範例用funciton object 來實作就會長這樣子 : class PrintInt{ vo...

讀書心得: 天涯。明月。刀

小李飛刀系列雖然有好幾部,但其實小李探花李尋歡只在第一部「多情劍客無情劍」裡有出場,承接故事的「邊城浪子」講的是小李飛刀傳人葉開,和他的好兄弟傅紅雪糾葛不清的故事。邊城浪子之後,故事就叉開成兩條支線,「九月鷹飛」裡葉開出場,「天涯明月刀」的主角就輪到傅紅雪了。 據聞「天涯明月刀」是古龍的實驗性作品,曾經被罵得很慘,所以我剛開始讀的時候格外戰戰競競,以為會讀到什麼驚人之筆,結果讀完之後反而覺得還好嘛,古龍寫小說不都是這個調調嗎? 喜歡就會喜歡。 在「邊城浪子」裡我第一次接觸到傅紅雪這個角色,還挺討厭他的,但是「天涯明月刀」裡面,我對他的印象有改觀不少,我其實很高興看到傅紅雪終於有了一點人性,不再只是個被復仇驅使的機器人。 第十一回「明月何處有」傅紅雪冷冰冰地對卓玉貞說:「這是你第一次看見我的刀,也是最後一次。」,要他亮刀簡直像要他的命一樣,但是到了下一回「生死之間」,傅紅雪不只拔出刀給卓玉珍看,還拿來削人蔘,挖石頭,刀鋒崩出了三個缺口。這是整個故事裡我最喜愛的一個轉折,能讓一個人的個性在這麼短的時間之內徹底改變,是因為傅紅雪當爸爸了。但是故事的衝突就在於他才剛迎接新生命的出生,就面臨整家人被埋在地底下的困境,我認為這是傅紅雪第一次重新思考他的人生意義,以前他的人生就是他的刀,刀是用來殺人的,但是這次傅紅雪看著手裡的刀,聲音中充滿痛恨說:「這是殺人的利器,不是救人的。」巧的是,若刀沒有崩出缺口,他們也不會被燕南飛發現,傅紅雪的改變救了他們自己一命。 然而,就是傅紅雪做出了這麼大的犧牲轉變,接下來的背叛才會更加痛苦與殘酷。一個女人,使得傅紅雪的刀又淪喪為殺人的刀,而另一個女人,使殺人的刀又變回救人的刀,這段的曲折也寫得很深刻,礙於劇透我就不明講了。 我喜歡「天涯明月刀」打鬥場面多,傅紅雪的刀拔不停,很爽快,而且打的精采,不像邊城浪子廢話一堆但是死都不拔刀,看到快睡著。

讀書心得: 邊城浪子

古龍很喜歡寫廢話,例如這樣:『只有一種人不會說話。』『那就是死人!』,一句話硬要分好成幾句來講的廢話,有時候反而會有一種曲折的效果。但是古龍的文風,發展到某個偏執的方向,大概就會變得像邊城浪子一樣。又臭又長,太多陰謀,太多廢話,讀得很累。 邊城浪子,說的是傅紅雪的復仇之旅,但是看完整本書之後,我卻對這個腳色哭笑不得,因為傅紅雪怎麼看都像一個笨蛋。傅紅雪只是魁儡,被周圍的眾人耍著團團轉,傻傻的追著他心目中的仇人。而且劇情一直不斷重複,傅紅雪陷入危機,葉開跳出來出來救他,傅紅雪快要殺錯人了,葉開跳出來點醒他,如此無窮迴圈,所以我覺得傅紅雪是笨蛋。但是另一位主角葉開,我就更搞不懂他了,他好像什麼都知道,但偏偏又什麼都不講,放任事情發展,表現很平面,從頭到尾就是「出一張嘴」葉開,真是愧對小李飛刀傳人的名號。 說到劇情,前半段的萬馬堂內鬥風雲,我覺得不錯,根本可以獨立成一個緊湊的故事了,反而走入傅紅雪的主線劇情後拖泥帶水,可能我對於復仇這檔事沒什麼共鳴吧,打得又不精彩。直到最後一一揭開真相時,我已經沒有看到真相的興奮,只覺得很疲倦,陰謀跟懸疑是古龍的長項,但是邊城浪子陰謀實在太多了,我猜傅紅雪應該比我還疲倦,終於可以結束這堆亂七八糟的事情了。讀到結局時葉開鬆了一口氣,我也鬆了一口氣。

讀書心得: 多情劍客無情劍

最近突然開始瘋狂地看古龍,不知道為什麼一本接著一本的看。講到古龍難免要跟金庸比較一下,不過不是因為我是什麼很厲害的武俠評論家,因為在下我看過的武俠就只有金庸跟古龍兩位而已,哈哈。 我自己感覺,如果用食物來比喻這兩位名家的話,讀金庸的作品就像吃一桌豐盛的大餐,書裡滿滿的人物流派、武功招式、歷史題材,有各樣不同的味道可供品嘗。但是古龍不一樣,古龍的作品味道沒那麼多元,讀起來感覺總是澀澀的又有點苦味,講的是氣氛,內容是人世的無常,大概就像喝酒的感覺吧,雖然我自己還不太明白喝酒的趣味。 有時候一本小說寫得太好看,感想反而難以下筆,因為佳作天成,各方面都是不多不少剛剛好,只好隨便亂聊。到目前為止看完的小李飛刀四部曲,分別是「多情劍客無情劍」、「邊城浪子」、「九月鷹飛」、還有「天涯明月刀」之後,還是覺得以李尋歡為主角的第一部多情劍客無情劍最好看。 在多情劍客無情劍裡面,所謂江湖上的名門正派幾乎無一例外都被描寫成道貌岸然的偽君子,古龍很喜歡使用這種背景設定。明顯的例子如第七章「誤傷故人子」裡,有名的秦重秦大俠為了救自己的兒子縱人行兇,李尋歡酸了兩句:「秦大俠倒也不必太謙,只不過,若在下殺了人,便是冷酷毒辣,閣下殺了人,便是替天行道了。」「今日這孩子若殺了在下,日後傳說出去,必然不會說他是為了要搶大夫而殺人的,必定要說他和秦大俠又為江湖除了一害,是麼?」剛剛好把此種表裡不一的兩面醜態揭的一清二楚。一片灰暗中,反而襯托出李尋歡的真誠率性。而例不虛發的小李飛刀,就儼然化為劃破黑暗的正義化身,出手一刀,必大快人心。 但是另一方面,李尋歡這個腳色本身卻有著矛盾,與林詩音、龍嘯雲理不清的關係,也註定李尋歡這人個性有點彆扭,看自己輕如鴻毛。背負著過去的深重罪惡。一切的悲劇,追溯到最後都是李尋歡自己年輕時犯下的錯,,又是個酒鬼跟浪子,所以李尋歡這腳色充滿衝突,讓人又愛又恨,第五十三章「騙局」龍嘯雲的心情剛好道盡了這種無奈。「人生本就充滿了矛盾,任何人都無可奈何。」 另外書中有個角色我想特別提出來講一講,書中這樣形容「她看來如仙子,卻專門帶男人下地獄。」據說古龍嗜酒嗜色,讀完小說後我完全相信這是事實。因為「傾國傾城」的林仙兒幾乎差不多要把整本書裡的英雄豪傑都要傾光了,而且如果真有女人這樣對待我,我保證一定自己乖乖跳進她的網子裡。古龍的確很了解什麼樣的女人最能令男人拜倒石榴裙下。...

讀書心得: 如何閱讀一本書

「如何閱讀一本書」就像書名一樣,一本關於讀書技巧的書,不過這裡的「閱讀」兩個字有特別的意義。 我打個譬喻,在台灣爬山是不錯的運動,全家大小一起去風景區走上一個早晨,呼吸呼吸新鮮空氣,是爬山。但是一位專業的登山者,經過周密規畫後,全副武裝的的去挑戰台灣百岳,也是爬山,兩個爬山名詞一樣,但是意思顯然不一樣呀。 這兒也是,閒暇時看看雜誌打發時間是閱讀,挑戰大部頭又難懂的磚頭書也是閱讀。作者開宗明義就寫『這本書是為了把讀書當作是增進理解能力的人而寫的』,用我的話來理解,就是一本讀書界的喜馬拉雅山登山技術指南吧。 作者把閱讀分成四個層次,由低而高分別叫做 -- 基礎閱讀,檢視閱讀,分析閱讀,綜合閱讀。不同的時機要用上不同的閱讀技巧。第一層的基礎閱讀就不必說了,總要先看懂句子才能說其他閱讀技巧吧。第二層的檢視閱讀,目的是教你使用很短的時間,判斷是一本書值不值得繼續深入的技巧。到了第三層的分析閱讀,就是我們俗稱的精讀了。而第四層綜合閱讀的技巧,已經超越單一本書的範圍,進入一整個主題領域的研究了。 我認為分析閱讀是全書最精華、最有價值的部分,分析閱讀裡作者總共提出了16條明確可執行的步驟,告訴你如何把書扒皮拆骨,再加上X光裡裡外外都看個透徹。 怎樣才算讀懂一本書呢? 這個問題不好回答,至少本書訂出了一個相當高的標準。看懂一本書必須抓住三個要點,第一個是從架構方面,能掌握整本書的骨架,第二個是詮釋,能清晰的了解論點的發展,還有支持論點的理由。最後是批判思考,能公正地說出書本好與不好的地方,有憑有據。 雖然本書的目的是教你征服超出理解範圍的書,但很不幸,本書自己也是一座必須征服的山頭。我第一次遇見這本書後,前後總共挑戰了三次,一直到最近這次才敢說從頭到尾看懂了。我覺得這本書難讀主要原因是例子太少,特別是分析閱讀後半部,論述完整,不厭其煩,但是就是例子不夠,空有原則卻無處施力。後來我只好一邊讀分析閱讀的原則,一邊就把原則應用在當下閱讀的段落本身,來回好幾次才抓到條理。這算不算是作者的陰謀阿? 以前的我是那種書看完之後心得永遠只有兩句,很精彩很好看,或,很有道理,但是要我說出更具體的理由就張口結舌的人。因為以前我習慣用海綿思考,把書的內容當知識一直往腦袋塞。但是現在我了解這不夠,做為一個負責任的讀者,要時時不斷的對書提出問題,為什麼作者要這樣寫? 這樣寫有什...