1. 程式人生 > >【轉】為什麼我認為每個程式設計師都應該用Mac OS X?

【轉】為什麼我認為每個程式設計師都應該用Mac OS X?

原文:http://tiny4.org/blog/2010/02/why-programmers-should-use-mac-os-x/

查爾斯·狄更斯老師的《雙城記》裡有句非常著名的話,我每次看到都心潮澎湃,所以看了無數次《雙城記》總是在那兩句話前後打轉。心說,開頭就這麼 好,正文無論如何也無法讓你覺得精彩了吧?

原文是,“It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way–in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only. ”

譯做:“那是最美好的時代,那是最糟糕的時代;那是智慧的年頭,那是愚昧的年頭;那是信仰的時期,那是懷疑的時期;那是光明的季節,那是黑暗的季 節;那是希望的春天,那是失望的冬天;我們擁有一切,我們一無所有;我們全都在直奔天堂,我們全都在直奔相反的方向–簡而言之,那時跟現在非常相象,某些 最喧囂的權威堅持要用形容詞的最高階來形容它。說它好,是最高階的;說它不好,也是最高階的。”

我認為對於程式設計師來說,我們正在經歷最美好的時代,當然也是最糟糕的時代。

美好的原因在於,這是一個充滿機會的年代,近十年每次我們以為世界一切塵埃落定的時候,就會出現新的驚喜。如youtube、facebook、 twitter等等,甚至包括了iPhone以及即將上市的iPad。世界上無數聰明和勤奮的人們正在努力,告訴我們一切還早,我們還活在一個迅速發展著 的世界。只要世界還在迅速發展,誰知道你會不會就是下一個twitter、下一個iPhone的發明者?甚至是下一個馬化騰,雖然現在騰訊如日中天,但是 如果時間倒流到99年,甚至01年,大多數心中可能還是會覺得那只是個玩物吧?

然而,糟糕其實也正在於此,前面的機會多,陷阱就多。人們天生就是風險躲避者(某個名人或者是名著裡面說的,可惜記不清了,無法拿來掉書袋了),這 也許就是獨裁百試百靈的原因。人們總害怕錯誤的選擇,所以變得猶豫起來。現在這樣的時代,你就有無數可以猶豫的事情,因為很多事情還在發展中,不知道誰會 笑到最後。最近仍在膠著的戰鬥很多,如,Wifi和3G(我認為賭局還沒開場),微軟和Google,微軟和蘋果,蘋果和Google,蘋果和Nokia 等等等等。

這些戰鬥的結果,對普通使用者來說,只是買什麼產品,用什麼產品的問題。對開發者來說則是抱誰的的大腿,跟誰混的大事兒。

所以我們這些久經沙場而沒有發達的傢伙,總是對面前的選擇感到膽戰心驚,甚至養成了父母問你吃什麼都會大發雷霆,大喊“不知道”的選擇恐懼症(我的 症狀非常嚴重,出去吃,絕不點菜,在家裡一律隨便。但也有可能是看Monk看多了鬧的)。

現在,我已經遠離了Windows陣營,做Web開發用Php,做客戶端只做Mac客戶端軟體,還做一些iPhone開發。我認為每個程式設計師都應該 至少用一用Mac OS X。

原因如下:

1、作業系統的競爭到了一個新的階段

Windows雖然仍舊是實質上的老大,但是作業系統的戰爭早已不是10年前的樣子。隨著Web應用的大行其道,很多人的電腦,都已經成了名符其實 的上網本或者上網機。

Window/Mac OS X/Linux/Unix幾大主流平臺上都有了流行的Web瀏覽器,只要你不是一個執著的IE粉絲,那麼如果你的主要任務是Web瀏覽,現在幾大作業系統 的體驗已經非常接近了。其他的基於網際網路的流行軟體,一般也都有比較好的跨平臺支援。例如,聊天工具,Gtalk全平臺覆蓋,Msn全平臺覆蓋,現在甚至 連一向被人看作很封閉的QQ,實際上也有Linux版本(雖然口碑很大,但是還有lumaQQ這樣的替代產品),Mac版本(口碑不錯),iPhone版 本了(最近剛更新過,很不錯)。

我們甚至看到了上網本這一硬體類別的產生。網際網路成了計算機的中心,這很大程度上降低了微軟的壟斷優勢。

3-4年前,我切換到Mac OS X的時候,除了招商銀行等少數應用以外,我沒有覺得任何的痛苦。那時候,我主要開發伺服器端程式,程式的執行環境是Linux,在Mac OS X這個Unix上面開發,其實很方便。

程式設計師可以在不同平臺切換並不重要,重要的是,我們這些程式設計師的衣食父母已經可以自由的在各種平臺上切換了。這就給了我們去嘗試Windows以外 平臺的可能性。

很多人在比較Windows和Mac OS X的時候,有一個誤區。因為他們自己是長期的Windows使用者,對很多Mac OS X的細節很不喜歡(右鍵、按鈕位置等等)。但是作為一個開發者,你要注意的是使用者。我希望你們設想一個場景,一個從來沒有用過電腦的人,他們學習 Windows和Mac OS X,他們會更喜歡什麼。我想更多人會喜歡Mac OS X,如果我的設想是對的,那麼未來是屬於Mac OS X的。

2、iPhone以及未來的iPad

iPhone是近10年來,我看到的最革命性的硬體產品。雖然他的功能,除了多點觸控、加速度感測器以外,大多數我們都在Nokia和其他競爭者的 產品中見到過。我用過Nokia2002年的產品7650,iPhone的所有功能它幾乎都有(沒有wifi,但是有gprs),但是用起來跟 iPhone就是不一樣。

那麼區別在哪裡呢?05年我買iPod Nano的時候,看到盒子的時候,我吃了一驚,因為盒子最顯眼的地方寫的不是“容量:4G”,而是“可以容納1000首歌,xxx張照片”。這家賣水果的 公司突然讓我明白,使用者其實關心的是那個叫mp3的東西可以容納多少歌,而不是從位元的角度,從儲存的角度他的容量是多少G。多少G多少M的容量,是實現 “容納多少多少歌”這個目的的一種手段。我們總是太過care手段,忘了我們的目的是什麼。

做產品的時候,很多人也是這樣。如果你是第一次看電視購物賣手機,也許你就會想把手裡面的iPhone扔掉,去買那些垃圾。因為你聽介紹的時候,你 會覺得全世界最好的手機就在那電視裡,叫做“XX全能王”。從功能列表來看,它們簡直是世界上最好的產品,但是如果你真的拿到手,你也許會發現那東西3分 鍾宕機,也許什麼操作都很慢,也許摔了一下就壞了。那個時候,我估計你會領悟到,功能多當然好。但是功能列表不會包括“不會3分鐘宕機”,“操作不會很 慢”,“摔一下不會壞”。手機,或者任何產品對你最重要的不是功能多,而是好用。

iPhone讓我發現原來手機上也可以有這麼好用的瀏覽器。這是個純技術問題麼?不是,要知道Nokia很多手機用的瀏覽器核心和iPhone毫無 二致,都是Webkit。但是操作起來看看,大家知道iPhone出來沒有多久,所有網站手機流量最大的就是iPhone了,這不是靠運氣啊。我有個 Nokia E61i歐版手機,可以用wifi,但是用它的瀏覽器,實在是不方便,每次都要重新選擇wifi,開啟網站也很慢,打開了以後,放大縮小也很不方便。

好的體驗僅是其一。更重要的是水果公司在iPhone這個產品上開發了AppStore,這是近10年來,我認為在軟體行業最重要的一個東西。1976年2月3日比爾蓋茨發表了著名的《An Open Letter to hobbyists》(給愛好者們的一封信) ,事實上開啟了商業軟體的道路。然而,商業軟體從誕生起,就受到盜版 的詛咒。從全球看,表面上微軟是盜版的最大受害者。沒錯,從金額上看,是這樣的。但是實際上所有的第三方開發者,才是盜版的最大受害者,他們中的很多人因 為盜版而喪失了成長為微軟這樣企業的機會。

AppStore不能完全杜絕盜版,但是它從發行和支付渠道出發(跟iTune Store如出一轍),很大程度降低了盜版對第三方開發者成長帶來的風險。很多單槍匹馬的第三方開發者,憑藉做iPhone軟體發家(當然一個市場是有容 量的,你不能指望它超越自己的機極限)。很多開發Mac軟體多年的人,沒因為開發Mac軟體發家,但是因為移植了一個簡單版本到iPhone發了家。據 說,因為開發iPhone只能用Mac OS X,這成了近兩年對Mac電腦銷售最大的拉動。很多人為了開發iPhone程式而購買Mac電腦。

就在這時iPad來了。價格在2000-3000之間的上網本,應該是最近和未來,電腦市場一個很重要的增長點。這個價位可以吸引很多買不起電腦 (可能更多是不捨得買電腦)的人。另外,關注上網這個概念簡化操作,也可以讓很多覺得電腦太難用的人們,來購買電腦。可惜,基於Windows的上網本在 使用者體驗上實在是乏善可陳,往往僅僅是一個螢幕更小的Windows而已。

Windows在PC上面的優勢本來有機會拓展到其他平臺。在WinCE和Palm,微軟實際上獲勝了。但是之後就固步自封了,現在iPhone出 來了,WinCE實際上已經沒有什麼大機會了。上網本和觸控裝置,本來也是Windows有巨大優勢的,但是微軟實在缺乏在使用者體驗方面的努力(你去看看 各種基於Windows的觸控查詢裝置吧,居然需要點一下然後滑鼠游標蹦過來,然後才能點!!!!!!!)。

iPad的釋出會,並不讓人多麼驚喜。這是因為iPad和iPhone戰略在水果公司是緊密結合的,iPad包含了iPhone的所有革命性,然後 把尺寸放大。釋出會開到結尾,說到電池時間和價格的時候,我才開始興奮。

iPad意味著什麼?意味著一臺便宜的上網本;有電腦的使用者也不介意購買一個,買不起或者不捨得買電腦的人可能會買;因為便宜,所以醫院和餐館等可 能會購買作為內部管理系統(醫院資訊系統,點餐系統);學校可以買做教育用途(電子書包)。意味著,我們可以在電腦上面寫文件累了的時候,躺在床上抱著它 聽歌,看看書,玩個遊戲。

這個產品如果操作的好的話,可以造就一個比iPhone更大更好的軟體市場。

3、Mac OS X是Unix

對於大多數做伺服器端開發的開發者,伺服器端開發也許就意味著Linux下的C/C++和Java。Mac OS X是真正的Unix(符合標準,有授權,合法的可以用Unix商標)。大多數這類開發,你可以在Mac OS X下做,在Linux下執行。少數涉及到Linux和BSD核心不同的應用,稍微麻煩一點。但是如果你做到這個級別的話,我想你也不在乎了。

大多數基於Linux的開源軟體,大多數為Unix架構設計的程式,都可以在Mac OS X下正常工作。雖然有很多軟體編譯起來,會遇到很多稀奇古怪的問題,但是放心,你在不同的Linux版本間編譯的時候遇到的會更多。雖然Mac OS X下面的自動軟體安裝工具也會有各種各樣的問題,但是放心,Linux下的也是。

Unix文化最經典的管道和指令碼,Mac OS X也支援的很好。

Mac OS X是一個非常好的平衡,Unix式的命令列、指令碼能力它全部具備,而且帶有一個非常好用高效的GUI。所以不管你是CLI(命令列介面)控,還是GUI 控,你都應該可以玩的很好。

有人問我Mac OS X是不是一個很好的學習Linux的途徑。我不得不說,你要是真的玩轉了Mac OS X(CLI+GUI)的話,你真的無需去學習Linux,用就是了。尤其是,學習Linux是為了學習伺服器管理的人們,真玩轉了Mac OS X,Linux有什麼區別?

4、開拓你的視野

只是每經一個階段,一旦我發現自己長期沒有什麼進步的時候,就會發現原因就是我已經不知道前面的路在哪裡了。在.net出現之前,我已經是一個微軟 幾乎所有產品的專家(但我不是MVP ), 我可以不借助ATL自己寫Com元件,我寫過IE和Outlook外掛,等等。但是到了.net時代,我的心疲憊了,我決心不再跟隨微軟的腳步。

這兩年,尤其是09年,做了一些iPhone開發,Cocoa開發 (Tiny4Reader) ,做了些伺服器端開發(GinkgoTek.com),我又開始像剛開始接觸電腦那樣的激情澎湃了。

對大多數純Windows程式設計師,Mac OS X的GUI和基於Unix的CLI都是新的天地,哪怕你不真的從事這兩方面的開發。在這些領域看到的東西對你的開發都是有利的。

騰訊是一個大家印象中很不注重使用者體驗的公司(老程式設計師視角)吧?但是現在QQ已經有了Mac版,iPhone版,而且iPhone版本已經多次打 磨,已經是一個相當好用的iPhone應用了。年前我去了趟深圳,見了他們的iPhone開發team,他們很重視使用者體驗,也做了很多的嘗試。而騰訊更 多其他平臺開發的工程師,也開始更加關注使用者體驗了。

對絕大多數Windows程式設計師,關注使用者體驗的經驗和意識都不足,使用Mac OS X有利於提高這些方面的素養。

最近我在參與翻譯《Cocoa® Programming Developer’s Handbook》,從中知道,我最崇拜的Tim Berners-Lee爵士 , 就是在Mac OS X的前身,NeXTSTEP作業系統(NeXT公司產品,喬布斯建立的公司,後來被買回水果公司,這個作業系統和原有MacOS一起,成了Mac OS X的前身)下開發的人類第一個瀏覽器WorldWideWeb的,打開了人類的Web時代的。

附,本文引發的一些相關的討論:

不盡同意原文觀點,但是比較欣賞作者對水果的熱愛