2008年2月28日 星期四

引爆趨勢

書藉基本資料: 引爆趨勢 (The Tipping Point)

前陣子在研究 social network,想說應該要了解一下社會學者的觀點,找了些書來看。網路上找了一下,以《社會學的想像》和《見樹不見林》較為有名,可是前者太硬了些,借回來兩個月還是看不完,後者資料少,不知道是不是絕版了,圖書館也沒進。後來意外找到《引爆趨勢》這本,易讀許多,如同導讀所言,時下大量的科普書中,這本是少數和社會人文相關的科普書,好處是易讀,壞處是不夠嚴謹。反正是科普書,入門和推廣比較重要,嚴僅的事就留給那些難啃的論文吧。

本書透過眾多個案研究,跨越不同時空背景,強調一個簡化的觀念:「什麼情況下才會造成流行?」流行的對象可能是一句話、商品、節目、疾病。作者假設流行與否,取決於三個要素:少數原則 (The Law of the Few)、定著因素 (The Stickiness Factor)、環境力量 (The Power of Context)。只要三個條件滿足後,趨勢就會以指數方式廣散,一發不可收拾。後兩者滿容易理解的,作者提了很多案例,藉此說服讀者,它們的重要性比我們想得還高。像環境力量部份,最有名的例子是紐約地鐵的復興,還有犯罪率的下降,起因是全力洗刷地鐵裡的塗鴉,以及抓搭車逃票的人。心理學上對應的原理稱為「破窗效應」,相信這已是耳熟能詳的名詞,有興趣的人不妨google一下,很有意思。除了抓逃票犯意外抓到通輯犯的比率意外的高外,它傳達了另一個訊息:警察連逃票這種小事都慎重地查緝,你還敢犯比這嚴重的罪嗎?若用中國文化的說法,紐約市的作法可視為「勿以惡小而為之」的實戰版。

少數原則則是我認為全書最精彩之處,像如今 Web 2.0 網站興起,每個起步網站都面臨湊不到初期會員 (First 1000),無法發揮分享的好處就倒站,如何行銷獲得初期會員是關鍵之處。本書借用少數原則告訴我們,行銷的錢不必多,初期會員不用多,而是要找到關鍵人物。Small World 為例,作者藉用一則實驗結果,認為我們能透過五位人士找到全世界的人,不是隨機找到的,而是先找到關鍵人士,由他們當轉接者,才找到全世界的人。

備註:引用 Small world experiment, 2.2 Results 對實驗的描述:

In an experiment where 160 letters were mailed out, 24 reached the target in his Sharon, MA home. Of those 24, 16 were given to the target person by the same person Milgram calls “Mr. Jacobs”, a clothing merchant. Of those that reached him at his office, more than half came from two other men.

作者稱這些關鍵人士為連結者 (Connector),他們的特色是認識的人很雜,分佈的社群很廣。不仿回想一下自己認識各個人的起因,也許會意外發現自己身邊的連結者,自己是透過他加入了其他社群。書中同時引用許多有趣的實驗數據,說明任何人一生中能認識的人差異不會太大,挺多一百多位。然而,認識的社群差異,就是他們影響力的主要差別,只有連結者可以跨社群影響,帶起社群之間的聯繫。還有,藉由找工作的問卷調查,書中提出泛泛之交的重要性 (the strength of weak ties),說明朋友社群分佈廣度的重要性。另兩種關鍵人士為專家和推銷員,前者用專業知識說服人,後者用個人魅力,也可說成前者是理性手段,後者是感性手段。

備註:引用 Interpersonal ties 內對 weak ties 的描述:

Specifically, more novel information flows to individuals through weak rather than strong ties. Because our close friends tend to move in the same circles that we do, the information they receive overlaps considerably with what we already know.

本書後半有些觀點滿有趣的,像是一個團體最多只能有150人,超過的話會使同儕間相處的完美合協度破裂,因為人類似乎最多只能和這麼多人熟悉,若希望一個單位能同心協力發揮團隊力量,最好的做法就是不要讓他們人數超過150人,這個神祕數字在不同的個案裡被重覆發現,像是軍方或公司。其它有趣的例子,還有以吸煙為例,討論如何逆用少數原則和定著因素,來降低青少年吸煙的方法。

現今網際網路大為流行,許多社交方式將興起改變。比方書中以問卷調查數據說明,我們交往的朋友,大多是因為所處的地理位置相近,而不是興趣相投;或是前述提到的最多認識且有維持連繫的人數只有一百多位。這些現象都有可能因為線上社交網站的興起而有變化,比方說透過網路,我們更容易找到興趣相投的人,也不見得要和對方長期碰面亦能連繫;透過 FaceBook,我們可以更簡單地記下一百位朋友並和他們連繫, FaceBook 也提供一個更方便進行 Small World 或 Six Degrees of Separation 的實驗。就像飛機和船發明後,改變人類生活方式,網路的發達亦會如此,不知道有沒有社會學家進行相關的研究。

2008年2月21日 星期四

與成功有約

書藉基本資料: 與成功有約(The seven habits of highly effective people : restoring the character ethic)

中文譯名有點鳥,英文的書名可能不會那麼排斥。

講大道理的書滿街都是,偶而經過書攤我會挑個一兩本翻一下目錄,若目錄裡列的道理看一眼沒能體會又有興趣的話,就翻到該段掃一遍內文,領會到背後精神後就把書合起。印象中這類書小故事一堆,廢話也多,可能不用半小時就能掌握80%有用的內容,或是不看也沒差。

《與成功有約》到是出乎意料之外,第一章我愈看愈仔細,到後來變成用讀一般書的方式來看。作者舉了許多好例子,規則也整理得很清析,打破我以前對這類人生道理書的偏見,這本書值得花多一點時間看,反而是看個幾頁,合起書來想想,去忙別的事,改天再回來翻後幾頁。

作者強調要以和別人分享書中心得的方式來讀此書,如此才能達到讀書的最大功效,我相當認同這個觀點,寫心得文除了和大家分享外,一方面也是讓自己整理思緒,確認是否真的領會到書中的觀念。俗話說得好,「唯有用自己的話說出來時,你才真的懂了」,我完全同意這個觀點,光憑作者的這項要求,就能明白作者不是普通的大道理作家,只會說些空泛的言辭,而懂得如何實踐。

還有一些有趣的例子,前面提到要由內而外全面造就自己,像是父母管教孩子,有時不是管不好孩子,而是以為為孩子好,其實是為自己的面子。當孩子成績不如意時,真的是擔心他未來前途,還是擔心和親友聊天時的負擔?唯有看清自己,才能放下自己的成見來教導孩子,也唯有這樣,孩子才會接受父母的協助,而不是認為被管教。

提到時間管理時,作者請讀者先想想,不管是個人生活還是工作方面,有那些事是認為重要,但遲遲沒有執行的事?接著,作者依重要和緊急分成四種類型的事,即:重要且緊急、重要卻不緊急、不重要但緊急、不重要也不緊急。回想一下日常生活,會發現不論重要與否,自己卻被緊急的事搞得精疲力盡。於是,剛才想到的重要卻不緊急的事,就一直都沒有執行,直到有天發現不做不行,或是做了也來不及時,才來後悔。對我來說,我高一時就明白數學和英文很重要,應該一天各花一小時學習。遺憾的是,我一直沒落實這想法,偶而落實一陣子,也感受到它的成效,卻又被其它緊急事情打破,最後不了了之。

另外像主動積極的觀念,描述的很清楚,這個想法是相當重要的第一步。關於主動積極部份,可以參考《李開復給中國學生的信:做個積極主動的你》,李開復文中的說法和本書很像,印象中李開復演講時提到的參考書藉好像有本書。可以觀察一下身邊的朋友,找出符合這想法的人,透過身教更能感受到主動積極的優點。大學前我只能算普通積極的人,後來認識skylight、會長這些人,從他們身上學了不少,漸漸地改變自己,做事的成果也確實改善許多。

總結來說,本書強調「依賴 -> 獨立 -> 互賴」的成長過程,言簡易駭。用例子來說,想要有可靠的同伴,唯有自己先成為可靠的同伴;想要別人尊重自己,唯有自己先尊重別人。類似的例子俯拾皆是,配合親身經歷後,感受更深。

2008年2月16日 星期六

研究科學的第一步 - 初步心得

書藉基本資料: 研究科學的第一步-給年輕探索的建議

有趣的是,一開始作者提到,天才不用人教,我們只能教一般人,而且做研究的方法千百種,每個人自成一格推論方式,除了大家都懂的大原則外,學一堆方法沒有用。那麼,寫這種教人家做研究的書有啥用?作者在搬石頭砸自腳後,說明教理論方法是沒用的,但勸告是有用的。導讀裡也提到這本書的重點在培養各種個性(如耐性),而非研究理論。網路上也可找不到不少大師分享培養個性的文章,不知是否時機成熟,現在看這本感覺特別受用

這本書意外的好讀,沒太多障礙就讀了不少內容,收獲不少。目前剛看完第二章提到坑殺新手的陷阱,對我來說意外的受用,剛好自己進行研究一段時間後才來看,感受更深;第三章提到需要何種心智能力也是鞭辟入裡。作者強調做研究只需要平凡的智能,加上培養好個性即可,書裡有詳細的說明,作者的諸多譬喻相當生動易懂,值得一看。像說明專注時,作者以長期曝光拍攝原本看不見的星星為例,說明專注帶來的效果。原本想寫些什麼心得,可是重點太多了,寫起來又很像一般廢話,大家還是自己看書吧。

Java Puzzlers

書藉基本資料: Java Puzzler中文版-陷阱、錯誤與死角

《Effective Java》類似,這本在講Java的特性。不同的是,這本著重在以易犯的錯誤例子來說明正確的準則,而《Effective Java》是直述守則。本書在說明錯誤時,常引用別處文獻說明進一步資訊上那找,其中大部份的參考文獻出自《Effective Java》。另外不同的一點,本書的述說語氣比較風趣,偶而還有有趣的爛解答。哦,還有附一堆相當傷眼的錯覺圖,我時常用手遮住它們,以方便我能舒服地閱讀文字。然而兩本相較之一下,《Effective Java》較值得看。

不過相較於《Effective Java》直接說怎麼做較好,這本書到是相當成功地說服讀者,為什麼不要那麼做,例子舉得相當漂亮,帶來不少衝擊。本書不宜長時間連續閱讀,讀起來相當傷腦,一堆看似正常的程式碼,卻常發生不可思議的結果,或是不知所云的編譯錯誤訊息。或許,當Java寫到一定程度時,看這本書可以協助除錯。以下簡單直述部份心得,若對解謎有興趣的話,就別看下面的心得,自己慢慢翻書也是種樂趣。

  1. final對於method和field的含意不同,field的final是指只能設值一次,所以
    final int a;
    a = 3;

    是合法的。但也因這個特性,會有些潛在問題,例如:物件因為初始化順序不同,而讀到未初始化的final field。解法:lazy initialization。

  2. 除非之前有執行 System.exit(),finally一定會被執行到,這意味著在finally之前的return和throws exception會被finally給蓋過!
  3. constructor內不要呼叫被覆寫的method,有可能因物件初始順序而讀到未初始化的欄位。可用lazy initialization解決。
  4. 一些計算機組織的知識,像是 IEEE 754對浮點數的定義,使得太小的小數無法加進去,例如:

    float a = 2.0E20f;
    a += 1.0; // 結果仍是2.0E20f

    還有因為負數用二補數表示,負的MIN_VALUE不存在對應的正數,abs(MIN_VALUE)結果仍是負的MIN_VALUE。

  5. 要分清楚overriding、overloading、hiding、shadowing、obscuring。Java 5.0後,override時記得加 @override 避免 method 寫錯宣告時變成 overloading。還有別用參數數同一樣且有父子關係的 overloading,例如下面是個不好的 overloading,由於 JVM 會找最接近型態的,而可能呼叫到非你想要的:

    public boolean equals(Object o) {return true; }
    public boolean equals(String o) {return true; }

  6. method的覆寫 (override)不能變得更限制(例如public不能變protected),但field可以,此時稱為 hiding(亦有其它情況會發生 hiding),例如下面的例子是合法的:

    class A { public static String s = “A”; }
    class B extends A { private static String s = “B”; }
    A o = new B();
    System.out.println(o.s); // 結果為:A

  7. 用class method時,使用class名稱呼叫,避免呼叫錯誤。注意:((Math)null).PI 是合法的,JVM不會理會object,而會直接找它的class。
  8. Java 5.0支援泛型後,盡量不要使用原始類型(例如 List),那是向下相容的必要之惡;改使用參數化類型(例如 List<T>)。千萬不要混用原始類型和參數化類型,#88會給你滿意的理由,為何不要這麼做。
  9. 不要在一個運算式裡改變一個變數多次,這牽涉到實作細節,比方 x^=y^=x^=y 這個有名的例子,在 Java 裡不會成功的 swap。
  10. 不要在一個運算式裡將型態自動向上向下轉型(例如 int 變 long或反過來),這之間有很多潛在問題,詳情參閱前面的puzzles。
  11. char是無號型態,其它byte、int等都是有號的;16進位沒有正負號,它直接以二補數解讀;< <、>>等只看最低的5 bits數,a < < 31和a << 63意思一樣(小心負數的情況)。

2008年2月11日 星期一

重看心靈補手有感

剛才重看一次《心靈補手》,忽然有些感觸,特別是主角在賣弄完他的聰明才智後,卻回答不出一句”What do you want”;還有MIT教授和心理醫生兩位老友吵架那段,提到自己認定的成功,被別人「可憐」的失敗;還有主角的好友說他已獲得了百萬元獎卷,卻窩囊的不敢兌現。想到我小時候嚮往的學院生活,想到自己的缺點。對於自己適合做什麼,將來想做什麼,似乎又更明確了些,剩下的就是實踐計畫,再看看是否真的如此吧。

現階段我唯一確定的是,我不如自己想像般地了解自己想做什麼。先能承認自己的缺失,才有改正的可能。我明白我老是想太多,太害怕而不敢踏大步一點。想要的太多,卻沒耐性一步步執行,或著是不明白自己最想要的為何。比較可取之處,則是跌倒了爬得起來,而且敢再嘗試。接下來我得先學會的,是慎重緊密的思考後,從容地放下,一鼓做氣大膽地執行到底。首先,我得再多花點時間,繞個小圈,來看看我想做什麼。

勇闖資訊新未來:打造資訊科技的幕後英雄

書藉基本資料: 勇闖資訊新未來:打造資訊科技的幕後英雄 (Out of their minds : the lives and discoveries of 15 great computer scientists)

前幾個月對於是否要讀博班、是否要從事研究工作感到困惑,就找了這本書來看,看看大師們怎麼說。中譯名稱不太好,這本書收錄了15位Computer Science 界大師的傳記,並穿插和大師們的訪談。從軟體到硬體;從計算機結構、演算法到人工智慧,包含諸多CS子領域。最後的後記分析大師們成功原因的異同。這本書的中譯相當不順,如果可以的話,或許讀原文較好。

總結來說,大師們相似部份很少,令我驚呀的是,包含發明BNF的John Backus在內,有幾位大師是年輕時不知做什麼好,先去當個幾年兵回來,才找到人生方向。遺憾的是,究竟是什麼讓他們找到目標,書裡沒有進一步的說明,似乎男人當個兵回來就能發現方向。仔細地分析,演算法、學術型的大師,大多是學生時代就表現過人,可能不是在CS領域發光發熱,總之就是優於一般水平的學生。至於對研究的看法,看法差異很大,Dijkstra說找最難的做;提出planar graph快速解法、network maximum flow的Robert E. Tarjan說要挑對問題,從實際應用面下手;然而對分散性系統有深入研究的Leslie Lamport(提出bakery algorithm)說要找有興趣的問題,他甚至這麼說:

我也很懷疑別人會因為某項問題非常重要,覺得此項研究非常有趣。好的研究來自於你認為某項研究是有趣的,然後想要好好和它玩一玩。

其它像讀到Fred Brooks的故事滿高興的,我很喜歡他寫的《人月神話》,這本大概是我做筆記最認真的一本書。還有Douglas Lenat提的Automated Mathematician和Cyc也很有趣。沒有絕對的正確,我們有許多認知相互衝突,現實世界不如數學,能用一個完美式子推衍含蓋,人工智慧的研究也該接受現實的亂象,才有可能實現。人類在判斷時會依自己的認知,潛意識地在不同的前提做出正確的判斷,比方書中提的例子,「德古拉是誰?我們會回答「吸血鬼」;世上有吸血鬼嗎?我們會回答「沒有」。即使上述兩個問句和答案,邏輯上令機器感到困惑,卻不會造成我們任何困擾,因為問答時的背景不同。

若對研究感到一些疑問,讀這本書只會得到更分歧的答案。不過就像讀個案研究一般,讀到一個程度後,會對於整個時代背景有些感覺,而明白一件事,我所處的時代和他們不同,他們的故事無法給我明確的指引,我得自己走一遍,才知道自己的路在那。之前問一些教授他們當時要出國讀博士,才發現他們的環境和現在不同,所以老教授們的回答差不多:他們是不得不出國。現在學校的選擇變多,工作的可能性也變雜,使自己過於煩惱要怎麼選。經過這些談話,以及讀過這本書後,我體驗到時代背景差異的重要性,事前準備已夠了,我得多花點時間在自己的嘗試上。