讀書: 精通 Objective-C 2.0 程式設計

· 5min · chchwy
Table of Contents

原文書名: Programming in Objective-C (4th Edition)

以一本程式語言教學的書來說,我給這本書的評價是:水準以上,但是差了那麼一點醍醐味兒。

整體的寫作的風格就是平實八穩的依照語言的各種特性,一個個清楚而且詳細的解釋。總共分為三大塊主題: Objetive-C語言、Foundation Framework (objc的標準函式庫) 以及 Cocoa and iPhone SDK。第三部分 Cocoa 只能算淺嘗性質的示範了一個小巧的 iPhone 程式,全書大部分專注於闡述 Objective-C 這個"程序語言"的基礎,沒有特定侷限於某個平台。所以如果你期望在裡面看到更多關於 iPhone/iPad 開發的介紹,那可能要失望了。

全書以數個範例貫穿頭尾,藉由不斷添加功能於其上,引出各式各樣的 Objc 語言特性,我認為相當好。但是這本書對 Objc 2.0 新增的 property 特性並沒有說得很清楚。必須去網路上搜尋其他資料輔助。

本書把 Objc 當作一個全新的語言來講,而不是 C 語言的延伸,這對沒學過 C 的人算是好消息。我個人是已經學了 C 好多年了,所以這本書到底適不適合完全的新手,我也說不個準。書完全以 OO 的方式來介紹 objc,對於一些舊式C語言的東西如 top-level function、pointer 並不鼓勵使用。所以全書只留有一章把傳統C語言的特性收集起來做個介紹,算是選讀的章節,沒唸也無傷大雅。這章揭露了一些objc底層的實做,對於熟悉C的人倒是相當有趣的一段。

差了一點醍醐味兒

我說差了點醍醐味兒的原因是我掃完本書第一遍後,心中有個聲音響起:又一個程式語言!我學的程式語言還不夠多嗎?其實從本書我對 Objective-C 的第一印象並不太好,對 API 函數的命名尤其反感,比如說 Foundation Framework 裡的字串的比對 [str1 isEqualToString str2]; 見到這個方法我差點沒把口中的咖啡噴出來,哎喲,我真的得說服自己在寫程式語言而不是英文作文。

扯遠了,吐槽 Objective-C 的話題就此打住。總之我認為本書並沒有寫出 Objective-C 的靈魂來。 圖靈獎得主 Alan Perlis 說:「如果一門語言不能影響你寫程式的思維,那它就不值得你去學。」 各種語言形形色色,總有它們優秀獨特的地方。從這本書我看不見 Objective-C 為什麼選擇這樣子的語言設計,或者說這樣的特性有什麼好處,比如書裡第九章標題是 Dynamic Typing、Dynamic Biding 書裡寫道『這使它成為很有威力的程式語言,以及辨別它與其他程式語言(如C++)不同之處』,但章節內容舉的例子有如玩具,完全感受不到威力何在。

直到我讀了維基百科的 Objective-C 條目,才知道原來 objc 留著 Smalltalk 的血液,這個程式語言史上赫赫有名的老古董。 Objective-C 採用了 smalltalk 的訊息傳遞(message passing)模型,所以 Objective-C 帶著一些今日動態語言才有的特性。這樣來看,本書教會了我大部分 Objective-C 的語法,但維基百科才畫龍點睛般的讓我抓住 Objective-C 的風格。

相關連結: Wiki條目 Objective-C