Blog 遷移公告

我的BLOG已經遷移至 http://chchwy.github.io ,這裡不再更新。

2012年7月17日 星期二

讀書心得: 你以為你以為的就是你以為的嗎?


More about 你以為你以為的就是你以為的嗎?當初想要接觸哲學的時候,挑上的第一本書就是「你以為你以為就是你以為的嗎?」,因為書名太好玩了。讀完後發現內容也一樣好玩,整本書的形式有點像坊間流行的心理測驗小書,每章的開頭都要讀者先做一組題目,後面接著就對你的答案做一番分析。

我自己的讀後感是,恩,這些題目對一個以前從未接觸過哲學的人來說太過犀利,第一次作答的時候,每翻過一頁都好像在呼自己巴掌,臉頰很燙。

「你以為你以為就是你以為的嗎?」書名念起來很拗口,但是很貼切,因為這些題目為的是要檢查我們腦袋內的想法是否一致,在邏輯上有沒有BUG。

我舉個例子,書裡有道題目「只要不傷害他人,任何人都有權自由追求自己的目標」要讀者回答同不同意,我認為這句話聽起來相當合理,所以勾了同意。過了幾題後,出現另一道題目是「為個人吸食而持有毒品的行為應予除罪化」,這次我的直覺是毒品這麼危險,怎麼可以除罪化呢,馬上勾不同意。

但是,我沒有發現這是刻意安排的陷阱,因為這兩句話其實講的是同一回事。

單純個人持有毒品,不散佈也不販賣,就不算傷害他人,那他就應該有自由追求自己的「吸食毒品」目標的權利,畢竟他只有傷害自己呀。這敘述聽起來有點危險,不過我必須承認一開始的確想的不夠清楚,我以為第一句話是真理,但馬上被反例打了自己的臉。

再舉一個例子,首先是「對藝術品的評斷,純粹是個人品味的問題」,接著是「米開朗基羅是史上數一數二的偉大藝術家」,這牽涉到評斷藝術的標準,不過你只能認同兩句話的其中之一。

書中我最有興趣的是「神明DIY工作室」與「信仰殺戮戰場」,這兩章擺明了直衝基督徒而來。當中有些問題圍繞著以下的敘述,如果你同意「神是全知、全能、又全然慈愛」,那該怎麼解釋世界上發生的許多苦難呢? 比如說被南亞海嘯淹沒的小女孩? 如果神沒辦法消除這些苦難,祂就不是全能。如果神沒辦法事先知道創造出來的世界會有這些苦難,祂就不是全知。如果神明知道有苦難,也有能力去掉,但是卻故意不做,那祂就不是全然慈愛。

我思考後的結論是,全然慈愛的神並不等於神希望世上的苦難越少越好,這些苦難都是在祂的允許下發生的。

書裡指出了一個基督徒的通病,被問倒了之後就嚷嚷「你不知道神是超越人所理解的嗎 」,但回頭又馬上賦予神非常明確地人的屬性。後來我也理解到這些尖銳的問題並不是故意要為難我對神的看法,而是逼迫我去反思一些比較深層的宗教議題,就像我從神研班學到的經驗,不要害怕去質疑信仰,越去思辨,通常最後的結果會越清晰。就像本章的結論「只有信仰淺薄的人,才會覺得這是一項嚴厲的挑戰」。

另一個有趣的議題是道德,我們常常會認為某些事不對,比如說闖紅燈不對,偷東西不對,更激烈一點的例子像是「近親發生性行為」,這件事在一般社會中被認為是禁忌。本書就故意問了一個白爛問題: 一對已經成年的兄妹,妹妹已知不孕,在兩情相悅而且絕對沒有第三者知道的狀況下發生了性行為,那麼他們的作為仍舊違反道德嗎?

這個問題其實牽涉到道德的根源,我們說一件事情是對的(符合道德)或者不對(違反道德),依據的理由是什麼?

我們認為一件事之所以是錯的,往往是因為這件事做了會造成傷害。但是這對兄妹的例子既私密又無害,還有理由說近親性行為絕對是錯的嗎? 我並不是要支持近親性行為,而是書裡指出了一件事,道德上人們經常從心底先入為主的討厭某件事,然後才製造出各種「理由」支持自己的結論,而不是反過來以理由為基礎推出結論。很多被認為違反道德的事情,甚至沒有辦法說出經得起考驗的理由,而只是出於一種發自心裡的情感反應。

最後用書裡的兩句話來提醒自己,「推理完善的論證往往不易理解,漏洞百出的論證卻常因為訴諸情緒和一般人的偏見而效果奇佳」「未受教育的人用詞簡單,反倒比受過教育的人更容易打動聽眾」,也獻給理盲與濫情的台灣社會。

2012年4月28日 星期六

讀書心得: 明朝那些事兒

More about 明朝那些事兒這套「明朝那些事兒」我並不是讀完的,而是聽完的。我聽的是對岸劉繼同先生的有聲書,恰好這本書的形式也像極了說書的先生,講歷史故事,說傳奇英雄,講啊講的,每天睡覺前聽上一回當床前故事,剛好幫助入眠。但有時候講的太精采,會欲罷不能接連聽上兩三回,弄到三更半夜才睡覺。

「明朝那些事兒」講的就是明朝的事兒,從開國皇帝朱元璋開始,一直講到末代崇禎皇帝為止。但是作者當年明月先生並不僅僅滿足於講歷史故事,他還試圖要講出社會運作的規律,我讀完這套書後陡然發現,歷史滾滾過了幾百年,科技進步了,但人性仍然沒有改變,我開始有點兒明白為什麼社會上老是有狗屁倒灶的事情,那些事在明朝就發生過了,今天同樣在重演。

我看完書之後,發現鬥爭其實是正常的社會現象。這個道理也很簡單,因為官場是權力的遊戲場,想要把權,唯一的方法就是把上面的人鬥下來。看了明朝前前後後鬥了幾百年,再看現在所謂藍綠惡鬥竟然是驚人的相似,沒什麼新意。

鬥爭不單單是壞蛋的權利,我發現好人也要鬥,不只要鬥,還要比壞蛋更能鬥。因為你若鬥不倒壞蛋,就會被壞蛋鬥倒,匡世濟民的夢想也就等於付諸流水,有句話說『清官要比貪官更奸』就是在說這個道理。

書裏頭最著名的例子莫過於徐階與嚴嵩的戰爭,奸相嚴嵩把持朝政的時候,徐階還只是個憤青,這場戰爭從徐階年輕時期開始,持續鬥了將近二十年,詭詐橫行,智計迭生,最終徐階靠著一記黑狀,用現在話說就是抹黑誣告,終於鬥垮嚴嵩,為接下來的名臣時代鋪下浩浩坦途。我認為這是『明朝那些事兒』的一個高潮,每次看到這裡,我都不禁感嘆,徐階真的很不容易阿。一位名臣要實現濟世的夢想,單靠正直善良的心是不夠的,你得用自己的雙手去把壞蛋拉下來才行,即使這個手段不太光明。好像火鳳燎原中曹操說的:「弄權,只為把權,力壓奸臣。」

縱看明朝權臣,每個都是萬中選一的鬥爭好手,只是有人掌權了之後,就開始貪汙受賄,嚴嵩魏忠賢是也,有人掌權之後則開始努力幹活兒,張居正高拱是也。鬥完了,是好人抑或是壞人,最終還是存乎一心。

說到好人壞人,評價一位歷史人物並不容易,這不是道德上貼個賢愚忠奸的標籤就好。比如說,讀過『明朝那些事兒』之後,我才懂得「清官」跟「能臣」是兩碼子事。

書上有個兩位鮮明對比的人物,一位是海瑞,一位是張居正。

海瑞為官清廉,直言敢諫,但是死腦子不知變通,俗稱正義魔人。道德標準搬出來,所有看不順眼的人都罵。要知道明朝的官俸極低,官員大多會有些灰色收入,能達到海瑞的完美道德標準者幾希。海瑞面對這樣的官場,除了痛罵,還是痛罵,不惜與整個文官集團為敵,最終落得曲高和寡,勢單力孤。他是個清官,卻沒有什麼用。

相對的張居正就務實圓滑的多,他是個能臣,卻不是清官。一條鞭法改革,一方面增加了國庫收入,也沒有完全剝去官員們的油水。他很明白不可能要求所有的人都道德完美,想成事就必須有所妥協。張居正自己有生活奢侈的問題,也有專權獨斷的問題,但是張居正才真正扭轉了整個大明王朝的命運。

關於清廉與能力,還有個例子可以講。高拱擔任首輔時兩廣發生叛亂,我原文摘錄如下,高拱這樣說: 「我撥一百萬兩軍餉給殷正茂,他至少貪污一半,但以他的才能,足以平定叛亂,如果我派一個清廉的人去,或許他一兩也不貪,但是辦不成事,朝廷就要多加軍餉,這麼拖下去,幾百萬兩也解決不了問題。」這席話給我相當大的震撼,無能的官員的確比貪汙還要可怕。

其實『明朝那些事兒』這本書的內容非常豐富,短短一篇心得只能寫出一二。明朝三百年,皇帝、權臣、宦官一個換過一個,無數英雄競折腰,但是要論我最喜歡的內容,卻不是這些呼風喚雨的大人物,而是只佔少數篇幅的明朝的平民生活、科舉考試、李時珍的本草綱目、鄭和下西洋等等與政治無關的事。

另外有一點,是本書意外地用了很長的篇幅在講萬曆年間的對日戰爭,而且講沒三兩句就要酸一下日本,稱日本人就加個鬼子之類的,這是我比較不喜歡的部分。

2012年3月19日 星期一

讀書心得: 深入淺出設計模式

More about Head First Design Patterns
什麼是設計模式? 設計模式這個詞有點兒玄,因為設計模式不是一項具體技術,學會後可以寫出遊戲或者手機App等等。用我自己的話來說,設計模式是設計軟體架構的慣用手法,更精確地講,是設計物件導向程式架構的手法,目的是為了讓軟體在未來更有彈性,更容易擴充功能。

如果聽不懂上面那段話也沒關係,我學會設計模式之前,也聽不懂那些設計模式簡介在說什麼。

不過我還是分享一下我的經歷,回想我學 OOP 的過程中,有一段時間,不知怎麼好像有幾道閃電打進腦子裡,以前每念就忘的Java API呼叫,突然全都看明白了,腦子也靈光了,就差點考試都考一百分。原因很簡單,因為我念了設計模式,而 Java API 裡頭用了很多的設計模式。

要談設計模式,一定先要有設計上的難題。

假如你是一位遊戲引擎的開發人員。開發遊戲引擎呢,幾乎就像在寫一支真正的遊戲程式,該搞定的技術細節一個都不能少,只不過呢,寫的是空架子遊戲,最關鍵的地方要留白,因為這只是遊戲引擎,最終必須交給使用引擎的人來完成整個遊戲。

現在問題來囉,你並不知道這個引擎未來會被拿來寫什麼樣的遊戲,所以空架子一開始就要提供充足的彈性,即使不改寫原有引擎的任何一行源碼,也能讓人很容易的填充內容進去,同時為了適應各種類型的遊戲,引擎還要能輕鬆地擴充功能。

既不能改寫原有引擎的任何一行源碼,又有充足的彈性,輕鬆地擴充功能,這該怎麼做到阿?

舉比較實際的例子,Java Swing的開發者就遇見了這類彆扭的問題,他實作JButton按鈕元件時,他不知道按下按鈕後要執行什麼工作,他也不知道按下按鈕之後應該要通知哪個物件,因為這兩件事都應該交由使用Swing的人決定,而不是開發Swing的人,為了解決這個問題,就出現了傾聽者(Listener)的設計,背後的精神就是觀察者模式。如果你有研究過,應該知道JButton 與傾聽者之間的關係非常彈性,一個JButton可以擁有不只一個傾聽者,而傾聽者也可以同時聆聽許多個JButton事件。

所以要了解設計模式之前,必須要先有設計的難題,JButton的設計就是個難題,先有難題,才知道傾聽者為什麼是個好設計。這時去學習觀察者模式才有意義。

我認為這本「深入淺出設計模式」最令人激賞的地方就在它為每個設計模式精心打造的軟體設計難題。這個難題恰如其份地顯現出模式的威力,不會過於困難以至於失焦,也不會太過簡單以至於殺雞用牛刀。

書裡會有個老闆或是客戶一樣的人跑出來問你,嘿大哥,我們原本有支程式如何如何,現在我想要擴充一個新功能進去,該怎麼辦呢?

先有了明確可以付諸實踐的場景,接著你仔細的去思量這個難題,很快就會發現問題「沒有表面想的那麼簡單呢」,不用一些手段不行。而在思索如何解決設計難題時,模式也不是一下子就蹦的出現,而是逐一探討各種方法的優劣之後,依循物件導向設計原則,慢慢的封裝、演化,最後才出現模式。

因為模式是一種設計上的抽象經驗,所以沒有足夠實戰經驗,不曾對自己寫出的爛架構而傷腦筋的人,很難體會模式的好。這本「深入淺出設計模式」很努力地想要彌補這道鴻溝,我必須稱讚它做的相當成功,而且內容有深度又有趣,個人極度推薦。