iOS開發-Interface Builder的前世今生

來源:互聯網
上載者:User

標籤:

Interface Builder,是用於蘋果公司Mac OS X作業系統的軟體開發程式,Xcode套件的一部分,於1988年創立。它的創造者Jean-Marie Hullot自稱是“一個熱愛旅行、充滿激情的攝影師”,本篇分享Hullot熱愛技術的那一面——創造Interface Builder的過程。

因勢而動

1981年, Jean-Marie Hullot拿到巴黎第十一大學的電腦科學博士資格後,開始了法國國家資訊與自動化研究所(INRIA)的研究生活。

Jean-Marie Hullot的名字似乎不為福士所熟知,但他設計的Interface Builder 卻深入人心,創造了一個個軟體神話。

20世紀70年代初,正是物件導向程式設計開始走上曆史舞台的時期。許多現代電腦技術的誕生地Xerox PARC(施樂帕洛阿爾托研究中心)的Alan Kay、Dan Ingalls、Ted Kaehler 、Adele Goldberg等人,從1969年開始研發一款物件導向的程式語言Smalltalk,並於1980年正式公布。這是一個完整地實現物件導向範型的編程套件,包含了一種物件導向的程式設計語言、一種程式設計庫和一個應用開發環境(ADE)。

雖然當時的機器跑得巨慢無比,但Smalltalk先進的思想對其他眾多的程式設計語言(Objective-C、Actor、Java和 Ruby)的產生起到了極大的推動作用,對電腦工業界的發展產生了非常深遠的影響。我們將會在今後介紹Objective-C時,詳細介紹Smalltalk及其對Objective-C的影響,這裡先一筆帶過。

Smalltalk的發布在業界一石激起千層浪,也給Jean-Marie Hullot幼小的心靈帶來了巨大的震撼。他立即明白了物件導向思想所代表的先進生產力,一定會改變今後數十年的程式設計流程,他毫不猶豫地成為物件導向編程模式的早期粉絲。

SOS的助力

那時,Jean-Marie Hullot使用早期的Macintosh電腦進行開發。不過他很快就和其他開發人員一樣,發現雖然Mac的使用者介面做得不錯,但開發程式實在是太糟糕了。他說:“當Macintosh被發明出來時,電腦和先前就大不一樣了,你至少需要花60%~70%的時間在使用者介面部分的代碼上。”在Macintosh被發明之前,使用者介面是相當簡單的,只需要在命令列下面打一串字元,電腦就會回應出一行行的資訊。所以在那個時代,開發人員完全不需要專註於使用者介面。而Mac一經發布,隨之而來的眾多的視窗和菜單,讓整個世界都不一樣了。雖然對於使用最終產品的使用者而言是簡單方便的,但對於碼工來說簡直是個噩夢。每次他們需要一個視窗或者菜單,都要從零開始構建。

聰明的Hullot開始動腦筋改進Mac編寫使用者程式難的現狀。他開發了一個程式,有點像現在Windows系統中的“畫板”。一側的工具條,是類似菜單這樣的大量可重用的對象;而另一側,則是程式員想構建的使用者程式介面。只要把工具條上的工具拖放到程式介面中,那麼類似“開啟”、“列印”等相關的功能,就可以被添加到使用者介面中。事實上,這個程式,是最早的一批能通過滑鼠把控制項拖入介面設計視窗實現相應功能的商業程式,是使用者介面設計軟體的先驅。

這個跨時代的發明被稱作SOS,用Lisp語言編寫【註:What are we going to called this thing中認為此時就是Interface Builder,但據The NeXTonian等多處資料表明,在Steve Jobs見到以前,該程式名為SOS】。當時,ExperTelligence開發了一種叫做ExperLisp的方言,SOS即用此語言寫成【註:http://en.wikipedia.org/wiki/Interface_Builder】。

此時Hullot忽然意識到,他設計的東西事實上很強大,其重要性簡直可以和Smalltalk這樣的發明相比——Smalltalk讓開發人員嘗到了物件導向語言的甜頭,而SOS則是直接把對象放到了開發人員手邊。有了這麼拽的東西,Hullot意識到如果他只在研究所窩著,那隻能讓十幾個人享受這一成果,而如果他跳槽,把這個工具公開,那對天下的碼工來說可是大福音。

誕生之源

經過不斷努力,Hullot找到了一個值得推銷自己發明的好地方——劍橋的蘋果大學聯盟(Apple University Consortium)。這個蘋果和大學合作的組織看到Hullot的創作後反響很好,就推薦他去見Jean-Louis Gassee。 Jean-Louis Gassee是個法國人,時任蘋果開發研究院主任,見到SOS後也認為這是個好東西,便說服他去美國闖一闖。經過幾次的鼓勵和推薦,加上美國對Hullot來說又不陌生,於是他就買了機票跳上飛機就奔赴美國。

不過當Jean-Marie Hullot來到美國加州蘋果總部時,他卻認為這不是一個工作的好地方——蘋果已經是一個很龐大的企業,很難再有所創新發展。他最終決定不留在那兒,轉而在美國尋找一個能把這個產品賣出去的人。四處推銷之後,找到他用來寫SOS的Lisp解譯器的生產商,就是剛才提到的位於Santa Barbara的軟體公司 ExperTelligence。

事實上,當時的ExperTelligence正在尋找合作商賣自已的Lisp,而Hullot也在找合作商賣自已的 SOS,兩者一拍即合,隨即打電話給 NeXT,共同推銷自家的產品。

NeXT在Palo Alto總部的產品市場部人員接待了Jean-Marie Hullot和兩位來自ExperTelligence的員工,被SOS的理念鎮住,遂打電話請Steve Jobs下來看。Jean-Marie Hullot像複讀機一樣又把自己的大作秀了一遍。老謀深算的Steve Jobs事實上早就看中了SOS,但他對ExperTelligence的Lisp一點興趣都沒有。所以他裝作對這場示範毫無興緻【註:這有很多引用該文的翻譯譯錯,原文說nonplussed,字面意思為驚異,但在美國非正式表述中,此字表毫無興緻】,揮揮手就把這三個人打發走了。

但當他們一行人走到停車場時,Steve Jobs讓他手下把Hullot追了回來,當他隻身回到NeXT總部時,發現Steve Jobs正恭敬地等著他。

“我想要你電腦上那個程式”【註:http://rixstep.com/2/0/people/】,Steve Jobs說道:“你大概什麼時候能開始給我們工作?”

Hullot回答說自己翌日就要離開去度假。

“好吧,我兩周后給你打電話,”Steve Jobs說。

“不行,老喬”,Hullot表示:“我不遊美國,我可要環遊歐洲,你七個禮拜後再打給我吧。”

Steve Jobs雖然一骨子傲氣,但他明白一個簡單的道理:21世紀最缺的是什麼——是人才!即使Jean-Marie Hullot玩起了大牌,這電話自然還是要打的。Hullot剛一度完假回來,Steve Jobs的電話就如期而至。

如此三顧茅廬般的熱情,把Jean-Marie Hullot感動得第二天就登上了去美國的飛機。合約簽了半年,但實際上他最終在NeXT整整待了十年。在NeXT工作期間,他使用Objective-C和NeXTSTEP架構重寫了SOS,命名為Interface Builder。由此,Interface Builder成為NeXT整合式開發環境 Project Builder標準套件之一。

進階與探索

Interface Builder和SOS一樣,提供了一個工具箱,包含一系列使用者控制項對象。工具箱並不是官方定死的,而是可以任意擴充的,比如如果使用者想使用類似Safari中的toolbar,而這不是官方提供的,則下載第三方的PSMTabBar即可實現,甚至連Cappuccino這樣的網頁架構也可以用Interface Builder來完成設計。開發人員只要把控制項比如菜單和文字框拖入專案檔就能完成使用者介面設計,節省了幾乎所有和控制項放置有關的代碼。

開發人員拖拽滑鼠,將控制項可提供的動作(IBAction)和另一個對象的介面(IBOutlet)連在一起, 則建立了一個綁定。這樣,一旦動作被激發(比如使用者點了按鈕),那介面中相應的方法則會被執行。所以,大量對象關聯的代碼也能被省去。

有了這樣的模式後,Interface Builder和Cocoa可以比後來出現的Microsoft Visual Studio或Qt Designer等軟體走得更遠——只要是對象,Interface Builder就能夠操控它們,不需要一定是一個介面的控制項。比如,資料庫的資料來源、隊列等,都可以在Interface Builder中串連起來,於是很多原本需要上千行的複雜應用(比如用來顯示、修改企業中職工姓名、部門、電話、地址、頭像等資訊SQL資料庫的使用者介面程式),數分鐘內就可以寫完,不用一行代碼。不信?讓1992年的Steve Jobs親自做給你看【註:http://www.youtube.com/watch?v=j02b8Fuz73A, 第23分鐘~第29分鐘】。

NeXT被Apple收購後,蘋果把下一代作業系統建立在NeXTSTEP的基礎上。Objective-C和Cocoa被作為主要架構,而Interface Builder和Project Builder也因此受到重用。就官方的工具箱而言,支援Objective-C/Cocoa、Carbon的HIToolbox和WebObject。

2008年3月27日,蘋果發布首個iPhone SDK,設計Cocoa Touch介面的,也正是Interface Builder。可以說,Interface Builder一直隨著公司產品的發展而不斷拓新。

Jean-Marie Hullot是在NeXT被收購時進入蘋果的。Steve Jobs令他率領在法國的一個小團隊,秘密為Mac OS X 10.2開發一個辦公軟體。以往這樣量級的程式,都是由蘋果加州總部的大班人馬完成。而這次,為了向世人表明他的Interface Builder有多強大,iCal橫空出世,展示複雜的介面元素(日曆、可拖拽的任務、五花八門的分類)和諸多功能(網路同步、Apple Script指令碼控制)可以用相當快速的時間內開發出來【註:http://www.appleinsider.com/articles/07/10/17/road_to_mac_os_x_leopard_ical_3_0.html&page=2】。

最後,在iCal小組打完醬油的Jean-Marie Hullot榮升蘋果軟體開發部首席技術官。

Project Builder在Mac OS X 10.3時被重新命名為現在大家所熟知的 Xcode。Xcode 3以前,Interface Builder使用一種名為nib格式的二進位檔案格式。不過由於nib不能用肉眼讀,也不方便使用版本管理工具來管理,所以Xcode 3開始新加入一種名為xib的文字檔格式,最後再在項目編譯階段輸出為nib格式。和產生靜態介面布局代碼的工具(如MSVC、QtDesigner、 Delphi等類似的軟體)很不同,nib是不被轉譯成相應Objective-C代碼的。使用者程式執行時,nib檔案被讀入,解包,並且喚醒【註:awake,即載入 nib 會自動調用程式中awakeFromNib方法】,所以nib檔案是在運行時動態載入的。

長期以來,Xcode環境和Interface Builder是兩個獨立但相互工作的程式。而2010年釋出的Xcode 4預覽版中,Xcode和Interface Builder合二為一,成為一個一體化的編程環境。所以現在,開發人員甚至可以只用滑鼠在使用者介面和代碼間來回拖拽就能完成,這樣一來Interface Builder對使用者代碼的解釋也比先前更正確。比早期分離的程式使用起來確實方便很多。

當然,一個負面的影響是,這樣用一體化整合式開發環境寫程式,往往會發現螢幕空間是不夠的,所以像我這樣用11寸Air或者13寸Macbook Pro的人,出去打招呼都不好意思說自己是做Mac開發的。

下一個海闊天空(彩蛋)

在而後的歲月裡,Interface Builder創造了一個又一個應用軟體神話,小到官方教程中的匯率計算機,大到蘋果所有的家用、專業軟體,都由Interface Builder完成。

在風起雲湧的1989年,歐洲核子研究組織(CERN)工作的科學家Emilio Pagiola忽悠經費,買來研究所的第一台NeXT電腦——當時NeXT電腦在CERN可是個新鮮事物——那裡的科學家們紛紛前來把玩,普通青年發現裡面有全本的韋氏詞典,並可自動檢查使用者輸入的拼字錯誤,技術青年發現它跑的是Unix系統,還有一個可讀寫的光碟機,文藝青年更是發現裡面居然預裝了莎翁全集。不過畢竟像Emilio Pagiola這樣忽悠巨款買NeXT機器的青年不多,所以大家圍觀完了,也就回去該幹嘛幹嘛了。

但Tim Berners-Lee和別人不一樣,他不僅圍觀了那台電腦,還看到了Jean-Marie Hullot設計的 Interface Builder,研究了Objective-C,發現了物件導向編程範式開發環境的最高成就。這情景讓他心中漾起了巨大的波瀾,最終化為激情澎湃的投入,匯成了一行行物件導向的代碼,一瀉千裡,奔向未來。

一年後,世界首個 HTTP 服務在CERN的NeXT電腦運行起來,而使用Objective-C和Interface Builder 所編寫的超文本語言編輯器兼瀏覽器同步發行。他給這個主從式架構起了個好聽的名字——World Wide Web(全球資訊網)。

原文連結:http://www.programmer.com.cn/9234/

部落格園連結:http://kb.cnblogs.com/page/114879

iOS開發-Interface Builder的前世今生

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.