寫 iPhone App 相信應該是大多數程式師躍躍欲試的領域,而如果有天能寫出像 Angry Bird 那樣的軟體,那名利雙收不在話下。但,問題是:該從何開始?
首先你要有個開發環境。過去坊間有教人用黑蘋果來開發。黑蘋果顧名思義就是紅透發黑的蘋果,而這樣的蘋果能吃嗎?也就是在一般 Intel i5/i7 的 PC 上,先安裝 Mac OS,然後在安裝開發環境 Xcode。這工程非常浩大,縱然安裝好了,但 Apple 的 OS,Xcode 改新版本的數度超快。例如:今年才剛拿到的新書 Xcode 版本是 6.x,且以 Swift 開發,而目前 2015/9 月 Xcode 已進化到 7.0,且OS 更新為 iOS 9。以這樣的速度,紙本的書籍根本無法跟上 Apple 的野心。我就碰過照著書一字不漏敲打,就是無法編譯。後來追根究底才發現 Swift 演化到 Swift 2.0,在呼叫函數 function 時,新增加類似 Java 的 throws,這屬於 Exception 報錯誤訊息的功能。
既然書籍還沒上架就註定會滯銷 (?),那有心成為 iPhone App 的開發者不得不養成耐性,將 Apple Dedeveloper 的開發者網站當成尋寶迷宮。這網站要什麼有什麼 (廢話),但由於是五臟俱全,所以開發者頭髮還沒有變白,那寶物依然安然躺在雲深不知處。這種焦慮對從未開發程式的初學者更明顯。初學者必須藉由書本,良師的指引才能登堂入室。然而,既使 Swift 與 Objective-C 相較之下,已降低相當的學習門檻,但不可諱言 Swift 的彈性與豐富簡約的語法的功能,常會令開發老手歎為觀止,更別提新手了。最著名的範例就是 Closure 閉包。有誰會想到以 { $0 > $1 } 來表示兩個變數的比較?這概念非要有歷經 Unix / Dos 使用命令式 command line 處理資料,才能有感覺與想像。
學習好 Swift 這 Apple 去年才發表的新程式語言之後,你可能會沾沾自喜,認為自己可以拜別師父,自立門戶了。然而,等下了山才發現即將面對的是成堆的 類別 Class 組成的程式庫 Library。這 Library 從物件導向的觀念來看,就把它們當成工具箱,等需要時再拿出適當工具。我們不會拿蓋房子的磚塊去煮飯吧?!煮飯自己有自己的工具。這工具 Library 若以 Apple 的術語,就叫做 Framework。這 Framework 換湯不換藥,就是很貼心早已為我們準備套裝的工具,然後為我們建立一個粗毛胚,好讓我們不必從頭由無到有建立一個 App。它好比量販店賣的微波食品,有快炒,有湯點,各有各的配料。接下來,開發員整日在這堆 Framework 鑽來鑽去,而這是不得不然啊!剛才說過,Apple 更新開發程式的環境如此快速,新的功能只會在 Apple 的開發者網站找得到,其他免談。乍聽之下,有野心的開發者更是見獵心喜,但苦的是,在鑽入這大黑洞後,開發者除了了解 Frameworks 所提供的功能外,也必須像是做實驗般,不斷地 try and error,有時不僅 App 要能動,若力求美感,還要講求程式碼 Code 的可讀性,效率,預留方便除錯等。
拉雜寫了一堆,會不會玻璃心就如此碎了?有時更糟糕的是你得面對殘酷的現實,就是寫程式的人並非人人是口袋滿滿,尤其在台灣這個只會講究做麵包,不注重食譜的短視近利企業心態。所以適合寫程式的人仔細觀察真有那人格特質,即能夠做得住,捱得住,既使荷包不比業務,但能從寫程式的除錯過程中“享受”那唯我獨一的快樂。這樣的人很適合寫程式,也足夠強壯去接受 Apple 層出不窮翻新的挑戰。但,繞了一大圈,我們又該如何買入門票呢? 我個人認為先要有寫程式的整體概念,再來寫程式就相對容易些。例如:若不知道物件導向 Object-Oriented,能把 App 寫的精妙,那我也很佩服。問題是:可能嗎?有了程式的概念,再去猜猜怎麼寫,要找什麼樣的工具,這樣建構一個 App 就容易些,不會像是大海撈針。對毫無經驗的初學者而言,雄心壯志固然重要,但好的師傅,好的武功祕笈更能讓你早點練好九陽神功,早日下山除害啊!
PS. 以上這些對想入門 iOS App 的人有幫助嗎?個人學淺,僅就個人的經驗提出看法,希望能拋“柱”引玉,獲得更多的迴響,好讓百家爭鳴,那有福的是苦思無法入寶山的慕道者啊!一笑!
大大舉的生活例子總是令人會心一笑,真的很受用,謝謝!
回覆刪除