Category Archives: 書評

知識看過很容易忘記﹐要寫出來才會留下深刻印象。我希望能夠把知識與讀者分享﹐刺激他們閱讀那些書的興趣。

Antifragile – Nassim Nicholas Taleb

憑《黑天鵝》預測零八年金融海嘯一舉成名的Nassim Nicholas Taleb,很多讀者理所當然地把他的新書《反脆弱》歸類為經濟學書藉,其實這是一本關於哲學的書。Taleb除了是基金經理外,他的另一份正職是哲學教授。這是一本很特別的書,若果你只想雞精速成地一覽書中有什麼有用的東西,不妨看網絡上的書評或閱讀心得,甚至什麼也不用看,只需要看看封面書名下方的副標題就夠了。這本書的內容一句講完:脆弱的相反,不是堅固,而是反脆弱。脆弱者不堪動蕩的一擊,堅固者也只是延遲被動蕩擊破的時間,反脆弱則越亂越好,一個以生物進化為籃本的有機系統。

雖然全書重點一句講完,Taleb可不是騙稿費,才寫這部五百多頁的鉅著。若果說他的前作《黑天鵝》和《隨機致富的傻瓜》是外功招式,這部《反脆弱》則是內功心法,把他畢生的投資和做人哲學,對隨機律的深入理解,整理記錄下來的思想寶典。「反脆弱」這一個慨念,若果你明白的話,書中講的一切十分理所當然,甚至有點「阿媽係女人」的感覺。不過剛開始讀這本書時,「反脆弱」的慨念顯得非常不合常識,作者需要花費不少篇幅,層層漸進地用不同例子,逐點逐點去啟蒙讀者。這是一本你明白就明白,不明白就不明白的書,明白了便一理通百理明。在閱讀的過程中,會有「叮」一聲突然開竅的剎那。開竅前,你會覺得這本書是癈話,書中的理論是毫無根據的亂說;開竅後,你會覺得這本書是癈話,這麼淺的東西,那需要如此長篇大論。

若果看完這本書的得著,只停留在「反脆弱」的應用層面(外功招式),如要擁抱改變,不要害怕失敗,慎防「贏粒糖,輸間廠」,如何利用「脆弱性」的不對稱,把風險轉移到他人身上等等,恐怕錯誤解讀作者的原意。看這本書的得著,是改變我對世界的看法,從新認識風險的定義(其實只是延續兩部前作的主題)。在理論知識至上的現代社會中,不論是科學還是社會政治,人類有一種全知全能的傲慢,彷忽能看透世事因果,足以預測隨機事件,而對於自已無知的無知,卻是最危險不過的事。

書中第六卷是作者的生活健康指南,推祟傳統自然療法,有些觀點一針見血指出現代醫學制度的問題,不過有些內容缺乏科學根據。詭異的是,現代人迷信科學根據,正正是「反脆弱」批擊的對像之一。書中第七卷是建基於「反脆弱」慨念的政治和道德哲學,經濟學上的「代理人難題」,現代資本主義產生貧富懸殊的問題,作者把問題核心歸咎於「脆弱性」的不對稱性上,並以此為基礎提出如何改善社會制度的機制。這一章的哲學理論,正好為我提供另一個角度去解釋右翼「新自由主義」比左翼「社會主對」正確的理據,不過還需要時間去消化整理,作者指出「公司法人」風險上不對稱的這個關鍵。

這本書不容易讀,不能只單方面吸收書本的內容,最重要是反思然後把思想內在化,大慨哲學書通常都是比較難讀吧。

Mobile Unleashed – Daniel Nenni and Don Dingee

mu

考考你,你知道你手機入面的CPU是那間公司製造的嗎?多得Intel多年來咚咚棟冬的廣告,一般人都知道電腦的CPU主要由Intel製造,但說起手機,只會聯想起蘋果和三叔,完全沒有聽過ARM這間公司。現今的智能手機,甚至早年的2G手機,手機CPU市場佔有率,ARM差不多是百份百,可說是獨市生意。《Mobile Unleashed》這本書,講述ARM的發跡史,如何從十二人的小團隊,三十年間發展至二百億市值的高科技王國。這本書不單是ARM的歷史,更加是整個手機業界的歷史。

ARM全名Advanced RISC Machine,原本個A字代表Acron電腦公司,ARM只是其研發部的一個實驗項目。當年IBM如日中天雄霸整個電腦市場,其他電腦公司一邊抄考IBM電腦賣錢,另一邊則希望開發新產品打破IBM的壟斷。RISC就是這樣的環境下開發出來的CPU架構,與Intel的x86系列CISC CPU完全不同的設計概念,犧牲複雜的功能換取精簡的指令架構。當Intel搶佔商用家用電腦市場,其他RISC晶片廠商如SUN和MIPS,則憑著RISC架構的高運算速度,在server市場開拓出另一片天空。而ARM的RISC晶片,論功能不夠x86強,論速度不及其他RISC廠商,只有一項優點就省電。

不過當年電腦不能移動,反正都是插著電源,省電完全不是賣點,ARM晶片完全沒有生意。Acron準備解散團隊止蝕,這時命中註定的救星出現,蘋果要開發平板手提電腦(還不是iPad,二十年前那個叫Newton),需要開發更省電的CPU,於是找上門來。商討後ARM從Acron獨立出來,蘋果佔一半股權,Acron和VLSI佔另一半。雖然新公司有蘋果這個大客支持,可是實際上還是窮得要命,相傳ARM的初代CEO上任第一個工作,就是四出尋找平價二手家俱。Newton是蘋果第一次後教主時代的滑鐵盧,走得太前技術完全未成熟,功能未如人意成本天價,最終全球只賣出六萬部。

Newton雖然失敗了,但為ARM爭取多幾年的時間,繼續改良CPU的技術,終於等到流動電話時代的來臨。最初1G電話用Analog技術,上了年紀的都記得當年大大舊的水壺電話。2G GSM改用Digital技術,對於CPU的需求增加了,但手機的電池容量有效,省電便成為最重要的決定性因素。ARM的第一個大客是Nokia,雖然Nokia現在執了笠,當年可是手機的一哥,比今天蘋果還厲害,高達過半的市場佔有率。之後ARM逐一攻陷其他手機廠商,差不多所有手機都是用ARM。與Intel自已生產CPU不同,ARM其實是一個IP智識產權公司,ARM開發CPU的程式,然後授權給其他公司生產,每台電話都收取專利稅。每粒CPU的利潤雖然不如Intel多,但與廠商共同建立開發生態環境eco-system,在有錢齊齊搵的大前提下,各手機廠商都樂於和ARM合作。雖然人人都用ARM,但有不少生產商可供選擇,不怕有像Intel壟斷市場後,獨市生意抬高價值的問題。

蘋果今日貴為全球最有錢公司,但當年教主第一次出走後幾乎破產。教主回歸蘋果重新掌舵,展開救忙大行動,賣掉了ARM的全部股份,把資金投放在iPod開發上。當年蘋果出手救了ARM,現在輪到ARM救蘋果。蘋果手提開發部早對ARM十分熟悉,iPod很自然源用ARM的晶片。iPod取很空前成功,然後就是Newton的終極完全版,遲來了二十年的iPhone,從此改寫了手提電話的歷史。三星與ARM亦很有淵源,早在2G手機年代便已用ARM,更把ARM用自家mp3機和DVD機上,從低能手機過渡至智能手機,很自然繼續便用ARM。有玩開Andriod旗艦機的朋友,都聽過Qualcomm的Snapdragon晶片,裏面的程式都是ARM授權生產。當年Qualcomm發明CDMA通訊技術,是整個3G/4G手提通訊的理論基礎,它從radio晶片做起,一路從外至內把radio與CPU整合。

說來諷刺,最初Qualcomm是原本與Intel合作,不過Intel嫌手機市場太細,賺不到錢索性退出市場,把Qualcomm拱相讓給ARM。當年蘋果整初代iPhone,同樣也是打算和Intel合作,Intel亦用同一個理由推掉,結果Intel白白錯過整個手機市場。不過看ARM的歷史,學懂了一件事,在高科技行業的世界中,技術實力固然是必要的本錢,但一間公司最後能否成功,最重要還是要講運氣。ARM轉捩點的幾單大生意,不論是蘋果還是Nokia,基本上ARM都不是首選。可是首選交不出貨,ARM冷手執過熱煎堆,然後一切才成為歷史。今年九月日本軟銀集團,宣告全面收購ARM,目前還等候政府批準合併,不知道ARM的未來會如何,一代手機王朝會否從此衰落?

Prototypical: The Emergence of FPGA-Based Prototyping for SoC Design – Daniel Nenni & Don Dingee

Prototypical cover front

高科技與歷史,兩樣風馬牛不相及的事情,今次竟然放在同一個句子上。這是一本關於高科技行業歷史的書,作者Dan Neenni是半導體業界的老行尊,他建立的semiwiki.com網站,是矽谷業界重要的資訊來源。這本書是去年我去Design Automation Conference(DAC)免費拿回來,還有作者親筆簽名。剛好今個project要做FPGA prototyping,這本書正好有用,短短一百頁,半晚便看完。

FPGA Prototyping是什麼?在半導體中,最為人熟識是CPU,即是電腦的運算核心,汎用處理器,只要寫軟件,什麼程式也可以執行。不過由於CPU行軟體,不論在速度和耗電,遠遠不及把程式寫在硬體的ASIC。不過ASIC有一個大問題,就是程式寫了入硬體就不能更改。軟體出錯要修正行簡單,下載新的軟體版本就行了,但ASIC有錯要修正就要重製,還未計算要回收市面上有問題晶片的成本。大慨就如古代要刻石板寫字,寫錯一個字要成塊石板重寫一般麻煩。FPGA是集CPU和ASIC兩家之長,執行速度比媲ASIC,程式相對容易地修正,不過價錢卻十分昂貴。一般而言,如果產品講求靈活彈性,用CPU。如果產品的件數夠多,重視執行速度和耗電,而程式可以寫死不用更改,就用ASIC,兩頭唔到岸的就用FPGA。

設計ASIC由於不能出錯,投產前的測試十分重要,一般用CPU軟體去模擬程式,缺點是運行速度非常慢,FPGA的運行速度和可以重寫的特性,正好適合用來測試ASIC。當然不是買一顆FPGA回來自已砌,FPGA prototyping已是一個完整的eco-system,發展出不同的設計工具和流程,讓工程師很輕鬆的把ASIC放入FPGA上測試。詳細的內容十分技術性,說了也沒有人看得明白,從略。

這本書外行人完全看不懂,一大堆公司名稱和產品號碼,對一般人更加是丈八金剛摸不著頭腦,不過我倒覺得十分有趣味。那些歷史或多或少也有所聞,畢竟我在行內也混了十多年。這本書很有系統地,把我零碎的記憶串連起來,道出半導體工業中,一個小小領域的興衰史。看這本書才驚覺有些公司,當年曾經是業界龍頭,今日已被對手收購,品牌從市場消失,沒有留下一點痕跡。

Thinking, Fast and Slow – Daniel Kahneman

71wvKXWfcML

 《快思慢想》早幾年十分流行,真假知識份子差不多人手一本,報章雜誌網媒不停吹捧,彷彿不說說系統一二,就會顯得自已見識淺薄。我不知道這本書大受歡迎,當中有多少「光環效應」,作者Daniel Kahneman被譽為「行為經濟學」之父,他的心理學研究人類的非理性行為,並因而榮獲諾貝爾經濟學獎。這本書是他多年研究的總結,以(相對)淺白文字寫的科普書藉。老實說,眾多大力推薦這本書的名人,我懷疑有幾多人真的從頭到尾把全書看完。這本書厚達500多頁,以作者的心理實驗為主軸,內容頗為枯燥。若果要介紹「行為經濟學」,我不會推薦這本書作入門,其他性質相近書藉,如Stumbling on Happiness,Predictably Irrational,Superforcasting或Nudge等,比較有趣易讀。行為經濟學的理論由Kahneman首先提出來,不計他發表的學術論文,這本書是最接近原文的第一手歷史資料。儘管出版商推廣此書為科普消閒書藉,內容深淺其實與大學的心理學課本相若,讀者要有心理準備。

書中提出的心理學理論,兩個相輔相成的思考系統,善於理性思考的慢系統,依靠直覺思考的快系統,在不同的環境因素下,人類腦袋天生的因果迴路,如何誤導快系統作出錯誤的判斷。作者當年初提出之時,無擬是極具震撼性的創新突破,推翻傳統經濟學理性人的假設,不然他也不會拿諾貝爾獎。今時今日再看,這些理論已經是常識的一部份,心理學課本指定的內容。若果只是想知道那些理論,花時間看這本書倒不如看Ted Talk,來得更有時間效率。打個比喻說,數學科教微積分,絕大部份學生只是背熟公式,懂得考試如何應用來計算答案便足夠,很少學生有興趣從first principle去證明那些公式,這本書就是「行為經濟學」的first principle論證。

每個人都應該學習「行為經濟學」,正如讀哲學入門認識邏輯謬誤一樣,認清楚心理因素導至的思考錯誤同樣重要。理性的「慢想」十分懶躲,當你肚餓,疲累,精神不集中時,便很容易讓直覺「快思」主導決策,墮入虛構的因果關係直跳結論,轉移視線回答容易答的問題,「船輜效應」思想被框框定格,太多資訊花多眼亂,錯誤的統計學直覺等等思考陷阱。有些情況無何避免要作出即時決定,只好儘量減少依賴「快思」的速度,把決策權外判給思考公式,讓「慢想」可以事先從詳計劃。對自己要多訓練多用「慢想」,但對付別人則要令他「快思」,控制他獲取你想要的回應。應用上好的方面,政府使用心理因素手段,鼓勵人民多點退休儲蓄,登記器官捐贈,戒煙等等。壞的方面,大公司應用在銷售手法上,讓我們乖乖地從荷包,掏錢出來買那些沒有用的東西。不想作出錯誤的決定,首先要認識「快思」的陷阱,才能有效警剔自己不要誤墮其中。

題外話,《快思慢想》中文版的翻釋水平,在網絡上掀起了軒然大波,譯者洪蘭在台灣是著名教授,可是她的翻譯水準實在叫人不敢恭維。不只是手民之誤等級的不小心譯錯,而是她完全錯誤理解原文,甚至無中生有亂加新意思。有興趣的朋友,可以看以下幾篇文章,自行定斷誰是誰非(懶人包洪蘭事件不要臉的劣譯)。看中文版的朋友要小心了,若果英語能力許可,建議看英文版為佳。(我自已是聽有聲書版,前前後後聽了好幾個月,因為內容真的很悶,最後要1.5x倍速播放,才有耐心聽完全書。)

作者簡介:Daniel Kahneman,美藉猶太心理學家,2002年諾貝爾經濟學獎得主,行為經濟學(Behavioral Economics)之父。

SQL Clearly Explained 3rd Edition – Jan L. Harrington

sqlclearlyexplained

學習架設網站,要一步步慢學,不要妄想一步登天。原本學完Ruby後,打算直接學寫RAILS,然後發現自已不懂SQL。沒有SQL的基本功夫,不能有效地架設網站,任何網站都要用database來儲存資料啊。說起database程式,很多年前我學過dBase III,在中學電腦科被迫學了一個學期。當年覺得學一個過時的軟件很浪費時間,想不到database程式設計的最基本慨念,廿幾年後會從封塵的記憶中找出來有用。

我挑選了好幾本學習SQL的書,思前想後到底用那一本好,最後決定用這本SQL Clearly Explained為主幹,再用兩本O’Reilly的書為輔助參考。很多SQL的書只會教某一個SQL server的應用,很容易見樹不見林,分不清到底那些是SQL語言本身,那些是某一個server的syntax。這本書從SQL標準入手,第一章不是教你安裝軟件,而是很有系統地講解relational database的理論。只要基本知識清楚明白,學syntax很簡單,可以邊用邊學,查document摸摸下就上手。那兩本O’Reilly的書,一本教SQLite,另一本教MySQL,兩大常用的database。那兩本書不是好的入門書,內容太著重講syntax,不過卻是十分有用的reference書。

51vowxhiiul learning_sql_2nd_ed

Relational database的理論,說難不難,說易不易,領悟到就一理通百理明。Database是什麼,不外乎一堆table。Table就好似Excel的spreadsheet咁,打橫打直一行行,每格就是一項資料。每一行有一格係primary key,用來look up那一行。一行之又可以有foriegn key,連結另外一個table的primary key,表明table與table之間行與行的關係,謂之relation是也。檢查搜尋database只有6個基本操作,所有都只是萬變不離其中。6個操作包括,filter行(WHERE)或filter列(SELECT),把兩組行的行加起來(UNION),找出相同的行(INTERSECT),找出不同的行(EXCEPT),而最重要的操作是JOIN,即係連結起primary key同foreign key既relation。

此書的第二部份教SQL Syntax,實習第一部份的SQL理論。這本書的另一個優點,是書中附帶現成的database,一間二手書店的存貨買賣資料,不似其他書只講空談syntax。我把書中的例子輸入了SQLite檔案,並附上各table的csv檔案,有興趣的朋友可以在此下載SQL Clearly Explained Sample Database。學習SQL的次序,最先學搜查,如何在database中找出你想要的資料,其次學如何更新資料,最後才學如何建立設計database的table。所以有一個現成的database,再跟著書中的不同應用例子,學搜查很方便,事半功部。更新資料的syntax很簡單,有很輔助function讓你可以寫少幾行code,最重要的慨念是ACID transaction,說穿了就是multi-threads的synchronization problem,只是改了個好聽的acronym。設計table那一章教CREATE的syntax,不過我想沒有人會用SQL去直接起table,不是有其他GUI工具更好用嗎。起一個有效率的table是門很高深的學問,入門書教syntax只是教了table design的皮毛。

餘下的第三部份和第四部份,我只是快速略讀。SQL本身是一個turing-complete的程式語言,第三部份教SQL寫一般程式的syntax,只是我不明白有什麼人會用,SQL的PROCEDURE和TRIGGER只是search filter的輔助工具,真正要做heavy lifting資料運算,為什麼不把資料讀出來後,用host功能更強大的programming langauge去process。第四部份教SQL中XML的功能和Object Relational Data Model,不過除了Oracle或Microsft那些商用級的server,SQLite和MySQL都不支援這些功能,不過要搜查更新XML,用DOM不是更方便嗎?我想不到有什麼理由,要把XML直接當數據儲存在database中,為什麼不先解讀了XML中的資料,再有系統地儲放入table中呢?Open Source的server中,只有PostgreSQL支援Object Relational Data Model,簡單來說就是把OOP中的object儲存在database中,懂OOP的人學Object Model很簡單。Object Relation就在table的一格內,可以儲存一個object,或array,set等等,原本table的一格只可以儲存一個數值。另外一行可以用pointer直接link去另一行度,比用foreign key更有效率,因為不用做search。

學完SQL,忽然引起我對database的興趣,暫時放下RAILS,(反正要等RAILS-5的新書出版,沒有理由走去學RAILS-4),決定先學其他No-SQL database,看看還有什麼其他儲存資料的其他方法,才決定網站該採用那種database最好。