蘋果平台最強計算器 PCalc 的前世今生
引用本文譯自 PCalc 開發者 James Thomson 的博客中 Forty Two Minus Twenty 一文,略有改動。歷經 23 年,PCalc 由當年開發者一時興起的「練手」之作,成為了如今覆蓋蘋果四大系統[1]的最具代表性的計算器應用。這篇文章便講述了 PCalc 背後的故事以及 James Thomson 在此期間的開發歷程。
原文鏈接:http://www.pcalc.com/english/twenty.html
如今很多人在他們的各種蘋果設備上使用 PCalc,卻沒有意識到這個 app 的年齡比他們想象中要長得多,有時甚至比他們「想象」的時間還要長。
PCalc 在 2012 年十二月時迎來了它的二十歲生日,所以我想我應該趁這個機會回顧一下它在過去二十年裏的進化之路[2]。
PCalc 於 1992 年誕生,但事實上,它最初只是一箇中心加熱控制板的設計模型。
當時我在格拉斯哥大學的計算機科學系讀書,報名了一個人機交互課程,來學習如何打造優秀的用户界面。這個課程的研究課題之一就是為中心加熱系統設計一個模擬控制板,可以用來設置温度,分別控制加熱和水量等等。
我認為用户界面看上去必須要真實,所以自制了一套黑白的 1-bit 模擬 LCD 數字和一些可以「按下去」的小按鈕,其實擬物風在那個時候就已經存在了呢。
大概在同一時期,我們開始用 THINK Pascal 來編程,我也在業餘時間踏上了 Macintosh 程序接口的探索之路。
漸漸我得出了一個結論:我並不會成為下一個 Jean Michel Jarre[3], 不過與老舊的 Atari 電腦相比,我卻非常喜歡 Mac 的用户界面。所以我賣掉所有的音樂合成器和 Atari ST 電腦,入手了最新款的 Mac Classics ——配備有 4 meg 的 RAM,40 meg 的硬盤 和 512*342 分辨率的 1-bit 顯示屏。
於是我開始尋找一個小項目來學習如何在這台新的 Mac 上編程,那時我想到了之前為控制板設計的圖形界面:或許那作為一個計算器界面來説也同樣合適。
當時 Mac OS 自帶的計算器可以説相當簡陋,所以我決定做一個可以進行二進制和八進制運算的計算器來幫助我進行編程,而這也就是 PCalc 誕生的緣由。我買來 Inside Macintosh 這本書的前三冊,開始仔細鑽研。
那時並沒有互聯網,所以這幾本書便是我所能依靠的全部。最終我明白了其中的內部原理,並以此為核心製作了一套用户界面。由於第七代系統剛推出不久,所以我還是買了書的第四冊來了解系統上有哪些改變,開發期間這些外部資源對我來説便已然足夠了。
這個應用程序(當時還沒有 Apps 這個概念)還缺少一個名字,最後我選用了「PCalc」,也就是 Programmers’ Calculator 的縮寫。講真它也確實是給程序員的計算器,而那個程序員就是我,畢竟我也只是為了自己的需求而編程。
一開始我把 PCalc 分享給了課上的幾個朋友,而在六個月的迭代更新後,它變得更加強大,做到的事情也比僅僅「幫助編程」要多得多了。另外儘管我的 Mac 還不能顯示顏色,我依然為 PCalc 製作了一套彩色界面。
你可以點擊這裏來瀏覽更多初始版本的截圖,第一份説明文檔則可以在這裏查看。
在 1992 年 12 月 23 日,我決定免費發佈 PCalc,作為送給這個美好世界的禮物。
再説一遍,那是 1992 年,FTP 站點還是個新興的熱點。當時我們班發現的一個叫做 Fetch 的應用迅速傳播開來,只需要運行這樣一個應用,它就可以帶給你更多的應用。
我迅速想起來有一個叫做 Info-Mac Archive 的全球鏡像站點,我可以把我的應用發送給它,之後便能自動被傳播到世界各地供人們下載。所以我仔細讀了它的傳送指南並將 PCalc 打包上傳成功。
後來我收到了非常多不錯的反饋,這也驅使我在之後的一年裏不斷更新優化 PCalc,1993 年的 1.0.2 那一版中我在更新內容加上了這樣一段話:
確實,我應該在 Inside Mac 絕版之前買下里面處理顏色的那幾冊的。
至於上面説到的彩蛋,其中之一就是如果你輸入 42 到三個特定的內存寄存器,然後點擊屏幕,你就會聽到道格拉斯·亞當斯説的「Don’t Panic!」,屏幕上也會顯示一句出自我的最愛——銀河系漫遊指南中的台詞:
多説一句,不久之後道格拉斯就成為了我另一個應用——Dragthing 的內測用户,不過我從來沒問過他對於那個彩蛋的看法(如果他看到了的話)。
PCalc 的圖標上總有個 42,每次截圖時我也總試圖把 42 這個數字擺在屏幕上。在一次 WWDC 大會上,我有幸見到了道格拉斯並與他握了手,他也認出了我並示以微笑。
我本來計劃在下一次的 WWDC 中再次與他見面,但他卻在這之前便匆匆離世了。而就在他去世的幾周前,我們還互發過郵件,這件事帶給了我深深的震撼。
總而言之,這就是 PCalc 現在還在圖標上保留 42 的原因——作為對他的致敬。儘管我與他並不算深交,但他卻一直熱心支持我的工作,而這對於他的一個忠實粉絲來説,可謂意義非凡。
不管怎麼説,在我攻讀學位入世未深的時候,PCalc 就已經在世界範圍內取得了不小的成功,不過在這之後我卻有些分心了。首先是編寫 Dragthing,之後我又在 Apple 找到了一份工作,負責 OS X 的 Finder 和 Dock 部分,這又是另外一個故事了。
2000 年辭職再次回到格拉斯哥之後,我又開始尋找另一個小項目來學習新的 Metrowerks CodeWarrior 開發環境以及 PowerPlant 應用框架。儘管 PCalc 已經七年未曾更新,但我仍然會收到 PCalc 的反饋郵件,並且舊版 PCalc 的大小對於快速打造一個有用之物來説堪稱完美。
所以,PCalc 2 就此誕生。我將核心的 Pascal 運算代碼手動翻譯成 C 語言,新的用户界面則是用 C++ 寫成。老 68K 設備上仍然能運行 PCalc 2,而它不僅能在 PowerPC 電腦上運行,更同時支持 Mac OS 以及最新的 OS X,它的用户界面對於二者也都頗為合適。
鑑於 Dragthing 的備受好評,我決定或許也該為 PCalc 收點費用了,我之所以在過去整整七年裏都未曾更新過它 ,原因之一就是 PCalc 初始版本的免費性質,採取收費策略也將是對我不斷更新 PCalc 的激勵吧。
在 2001 年的 WWDC 上,我把名片遞給了當時的一個新面孔——Phil Schiller,並跟他談了談 PCalc。在這之後,我記得他的祕書向我發郵件為 Phil 索要一個 PCalc 的序列號,我當然很高興地發給了她。之後我才聽説 Steve Jobs 也在用 PCalc 並據稱「沒有徹頭徹尾地討厭它」,而 Steve Wozniak 當年也購買了很多份 PCalc。
直到 2002 一月,Apple 還是沒有在 OS X 配備一個像樣的計算器(有些人可能會説直到現在也是如此),而在新的 iMac G4 發佈之際,Apple 聯繫到了我並徵求將 PCalc 內置於一些發往美國的 iMac 中。雖然最後同意每賣出一台我只能獲得一小筆費用,但是哪怕再小的數目乘以近百萬份也是非常可觀的!
傷感的是,合作並未持續下去。隨着 Mac OS 10.2 的發佈,Apple 在其中加入了自己開發的科學計算器。關於此事我也聽到了種種傳言,但不管怎樣,PCalc 不再捆綁在 Mac 中,這件事也就告一段落了。
2005 年我再一次用全新的 Carbon HIToolbox API 重寫了 PCalc。PCalc 3 採用了精緻有愛的金屬質感的界面,不過這一改變也激起了不少民憤。此外全新的 Dashboard Widget 部件也隨之發佈,雖然代碼核心相同,不過它的用户界面則是用 HTML 和 javascript 寫成。Widget 在那個年代可是代表着未來。
對於這次更新我並沒有重複收費,因為這麼多年來都沒能完成過一次更新還是讓我有些心存愧疚的。
2006 年 ,PCalc 的大小能使其完美移植到 Intel 機型中,你要知道當時我擁有一台搭載 Intel 的 Mac 原型機以及在一月中旬準備推出的通用二進制代碼。在這之後 Mac 版 PCalc 開始更新得愈發頻繁,也加入了越來越多的新特性。
而隨着 2007 年 iPhone 的誕生,2008 年 App Store 的來臨,我也在思索對於移植到這個全新平台上的應用而言,到底怎樣才算是理想呢?
我取出了 PCalc Dashboard Widget 版的代碼,花了一兩天的時間使其在 iPhone 上運行。以此為起點,這一次我又用 Cocoa 編寫了一套全新的界面。
PCalc 對於觸屏設備來説無疑是完美的,它也從屏幕上用鼠標點擊按鈕來操作的模擬計算器,變成了在你手中的一台近乎真實的計算器。
PCalc 在 App Store 上架的第一天就同其他 400 餘應用存在於此,而它也確實幹得漂亮。最終我們的大多數收入都來自 PCalc 而不是 Dragthing,並且來自 PCalc 的 iOS 版而不是 Mac 版,我也將大多數的精力率先投入於 iOS 版,之後才將所得的成果轉移至 Mac 版中。
我甚至在 iPhone 版的 PCalc 中加入了 Dragthing 的主題引擎,可以讓 Mac Pro 中一個相當複雜的繪圖引擎在一個手掌大小的設備上運行,這在當時似乎是一件不可思議的事情。
後來又有 iPad 和 Retina display 面世,再後來又湧現出更多的 iPad,更高的 iPhone……而即便是保險起見,我也會説:只要我還在編程,我就會一遍又一遍地重寫 PCalc。我也希望你會像我一樣享受於使用它的過程,在今後的又幾個十年裏。
資料來源:愛範兒(ifanr)
作者/編輯:劉志鵬