yy

擁有一部 Mac 電腦的其中一個好處,就是可以去下載蘋 果的 Xcode 程序。它是一個集成開發環境(Integrated Development Environment),簡稱 IDE。

這個程式很大,需要 2GB 以上,換成 DVD 畫質的影片大概有一小時長。但 Xcode 很重要,它是蘋果的 心臟。不只是蘋果寫軟體需要它,而是所有為 Mac 或 iPhone 寫軟體的程式設計師都要用到它。

Xcode 是一個完整的世界。比如其中有一個叫 iOS SDK(軟體開發工具包)的組件。你可以用它製作 iPhone 和 iPad 應用程式。SDK 由許許多多的 API(應用程式接口)組成,包括追蹤用戶所在位置的 API,用 於動畫圖片的 API,播放聲音的 API,還有許多在螢幕上渲染文字、收集用戶訊息的 API 等。

可能你看到這裡突然想到了什麼,還記得我們前面說過的那個會在一個螢幕上出現好幾個窗口的 Smalltalk 環境嗎? Xcode 就是一個有力的例子。 當然也有別的工作方式—我多數時候喜歡用一個黑色背景的文本編輯器寫代碼,看起來很簡單,但其實也是同樣複雜的—這可是正正經經的 coding。

你要填入一些字段,把一些東西連起來(真的,有時候就是把 一些虛擬的線接到虛擬的洞口),然後開始寫代碼。 每當蘋果公司的人站到台上,發佈某種以「Kit」結 尾的新產品的時候,比如 ResearchKit、HealthKit— 甚 至 WatchKit,也就是針對 Apple Watch 的程式 集—這些 Kit(工具包)都會存放在 Xcode 裡,有完 整的說明文檔,可以用來編輯軟體。 有些功能是特定留給製造商的。

蘋果在宣傳中說他 們可以用 Apple Watch 跟蹤一個人的心跳,但他們還沒有公開這方面的文檔資料,可能蘋果仍在擔心有人會把它用在不好的地方;也可能是心跳監聽功能需要額外注意電池管理和實用,而手錶本身已經有電池續航的問題出現了,蘋果不想讓外界去質疑這個部份,以免問題 惡化。不過,可能現在已經有人在想辦法獲取心跳 API 了,因為人都是這樣的。

蘋果在這方面很擅長引導生產商和用戶。他們會發佈介面指南,提供相應的工具,就是為了讓開發者把應用的介面做成千篇一律的樣子,讓用戶不會覺得陌生, 默默地控制設計的方向。比如我們要做一個 Podcast 應用程式,其 中播放音檔文件是這個程式的關鍵特點。 那麼,我們 需要創建一個 AVAudio 音檔播放器,首先在螢幕上添加一個按鍵,然後把按鍵和相應代碼連起來,這樣當我們按下按鍵後的時候,就會發出一個「播放」的訊號。

與此同時,後台還有很多其他內容要處理,所以你 需要把跟蹤窗口位置的任務交給作業系統。IDE 的職責是幫你把想法和這個浩瀚無涯的世界連接起來,這世界提供了不計其數的方法,讓你可以播放一首歌、回倒、記錄歌曲被播放的時間(這意味著你還要知道用戶身處 的時區)、記錄歌名(意味著你需要知道歌曲標題所用 的語言—知道應該是從左向右還是從右向左顯示)。

你還要知道這首歌曲的長度,就是說需要通過一種機制來從音樂文件裡提取長度訊息。有了這個訊息以後—假設它精確到毫秒—你需要把這個數字除以 1000,再除以 60,得到分鐘數。如果歌曲是一個 Podcast,有 90 分鐘長呢?你要再算出小時數嗎?啊,數著 數著發現原來有好多變量! 估計最後你還是得逐步去解決一些問題,因為 IDE 不可能包辦一切。

只要控制一個計算環境,你就可以改變市場,這 是一種對科技產業極具洞察力的解讀。你可以改變人的 行為方式,改變他們聽音樂、看影片的習慣和對廣告的反應。在科技公司工作的人理應把一種理念放大,推廣到萬千大眾中去,從而獲得巨大的利益。

把你的意圖用 API、SDK 和 IDE 包裝起來,就是放大理念的一種極佳手段。這就是為什麼很多 coding 軟體是免費的:這樣就可以刺激人們去開發更多的軟體。 有時候也是源於企業的抱負:Java 基本上是 Sun 公司的產品,包括它的類庫(Class Library);同理, C# 語言是微軟的產品。但很多代碼是免費的,幾十年 來,許多慷慨的人把這些根據自己的需求編寫的代碼共享出來,所以企業和程式語言之間存在一種複雜的施與 的關係,例如有的語言開發者其實是受僱開發他們的 開源語言的,Go 語言和 Python 語言的開發都得到了 Google 不同程度的資助,PHP 的創辦人當時也在 Etsy 工作。

至於蘋果、微軟、亞馬遜和 Google:代碼工廠中的工廠,它們的 API 是許多程式設計師辛勤工作幾千個小時的成果。想想這項工作是多麼繁瑣:要管理 SDK, 這就需要有數以百計的程式設計師去寫代碼;也要像普通公司那樣寫文檔、整理演示文案,還要努力爭取新功能獲得通過和完成新一輪融資,更要有人跟進德文版的翻譯工作,避免出現太丟人的錯誤,然後被人拿到 Twitter 上瘋轉,還要有人去真真切切地把軟體寫出 來,讓 IDE 環境能正常運轉。

現代作業系統聚集了許多賞心悅目的媒介:飛快的影片、音樂播放器,和大量的選擇按鈕。蘋果也許是人類歷史上最具想像力的按鈕工匠,單是 Bezel 按鈕 就讓人歎為觀止,從 NSThickSquareBezelStyle 到 NSSmallSquareBezelStyle,現在一共有 15 種風格。(某種程度上的自由吧,雖然它們依然只是按 鈕。)

一些以前需要花很多時間和精力的工作—比如展示一幅地圖,旋轉一個巨大的三維景觀—現在只需要幾行代碼就可以實現。 人們每年去三藩市參加蘋果全球開發者大會 (WWDC),狂熱地注視著台上那個襯衫價格不菲但又不喜歡塞到褲子裡的人,聽他說著「核心數據」之類的 話,這就是一個語境。

在台上宣佈推出新 Kit 的蘋果, 是在改變人們對抽象東西的理解,彷彿在說:看,我們定義了一種新的現象,一些困難的事情變得簡單了,單調的東西從此有了色彩。只要信任我們的平台,你在這上面所花的那麼多時間絕沒有白費。 30 年來,他們每年都會發佈這樣的變化。

在 Xcode 裡,你只需用一個命令就可編輯所有東西,得到可測試的軟體。你可以看到你做的按鈕。你想點一下它,它也渴望被點擊,它會發出一聲尖銳的提示音,就像一隻趴在籬笆上的微型小貓。電腦裡的一切都在期待得到關注和數據,網路世界十分喧嘩。 你不斷地點擊滑鼠,直到按鈕意為止,現在你終於 可以將電腦的音量調高、背景顏色恢復正常,或者把那個會說話的迴紋針調回出來。如此往覆數遍後,終於完成測試。 應用程式(Apps)開發完成後,你就要把它放到應用商店裡上架銷售。

如果用戶喜歡用你的 app,就會有 動力去購買更多其他的 app。就這樣水漲船高,耐心的軟體巨頭們可以張開口袋等著錢自己掉進來,這就是一 個生態系統(ecosystem)。「生態系統」也是個被用濫了的詞,尤其是每當我們想到我們在真實世界中已經有 一個如此複雜多樣的生態系統一直在運轉。不過,如果 有那麼幾萬人為自己的子女未來能夠生活得更好,而製作了這些供億萬民眾使用的 Apps,那的確該稱得上是一個生態系統。

(本文轉自彭博商業週刊中文版,未經授權不得轉載)