Xcode是如何誕生的?
大家都知道,Xcode是iOS、macOS程序的唯一開發(fā)工具,其強(qiáng)大的功能讓人嘆為觀止。那么,大家知道Xcode是如何誕生的呢?
1981年, 一個名叫Jean-Marie Hullot的人獲得巴黎第十一大學(xué)的計算機(jī)科學(xué)博士學(xué)位后,開始了在法國國家信息與自動化研究所(INRIA)的研究生活。
早在Jean-Marie Hullot還在學(xué)校的時候,Xerox PARC(施樂帕洛阿爾托研究中心)的 Alan Kay、Dan Ingalls、Ted Kaehler和Adele Goldberg等人,從1969年就開始研發(fā)一款面向?qū)ο蟮木幊陶Z言Smalltalk,并于1980年正式公布。雖然當(dāng)時的機(jī)器跑得非常的慢,但Smalltalk先進(jìn)的思想對其他眾多的程序設(shè)計語言的產(chǎn)生起到了極大的推動作用,對計算機(jī)工業(yè)界的發(fā)展也產(chǎn)生了非常深遠(yuǎn)的影響。
Smalltalk的發(fā)布給Jean-Marie Hullot的心靈帶來了巨大的震撼,他毫不猶豫地成為了面向?qū)ο缶幊棠J降脑缙诜劢z。那時,Jean-Marie Hullot使用早期的Macintosh電腦進(jìn)行開發(fā),但他很快發(fā)現(xiàn),雖然Mac的用戶界面做得不錯,但開發(fā)程序?qū)嵲谑呛茉愀?。因為每次開發(fā)人員需要一個窗口或者菜單,都要從零開始構(gòu)建。
于是乎,Jean-Marie Hullot開始動腦筋改進(jìn)Mac編寫用戶程序難的現(xiàn)狀。他開發(fā)了一個這樣的程序:一側(cè)的工具條是類似菜單這樣的大量可重用的對象,而另一側(cè)則是程序員想構(gòu)建的用戶程序界面。只要把工具條上的工具拖放到程序界面中,那么類似“打開”、“打印”等相關(guān)的功能,就可以被添加到用戶界面中。實際上,這個程序是最早的一批能通過鼠標(biāo)把控件拖入界面設(shè)計窗口實現(xiàn)相應(yīng)功能的商業(yè)程序,是用戶界面設(shè)計軟件的先驅(qū)。這個跨時代的發(fā)明被稱作SOS,用 Lisp語言編寫的。
有了這么厲害的東西,Hullot意識到如果他只在研究所窩著,那只能很少的人享受這一成果,而如果他把這個工具公開,那對所有的開發(fā)人員來說,都是一大福音。
經(jīng)過不斷努力,Hullot找到了一個值得推銷自己發(fā)明的好地方——劍橋的蘋果大學(xué)聯(lián)盟(Apple University Consortium)。這個蘋果和大學(xué)合作的組織看到 Hullot的創(chuàng)作后反響很好,就推薦他去見時任蘋果開發(fā)研究院主任Jean-Louis Gassee。后者見到SOS后也認(rèn)為這是個好東西,便說服他去美國闖一闖。
不過當(dāng)Jean-Marie Hullot來到美國加州蘋果總部時,他并沒有留在那兒,而是找到他用來寫SOS的Lisp解釋器的生產(chǎn)商,也就是軟件公司ExperTelligence,來推銷他的SOS。很巧的是,當(dāng)時的ExperTelligence正在尋找合作商賣自已的 Lisp,而Hullot也在找合作商賣自已的SOS,兩者一拍即合,隨即打電話給NeXT,共同推銷自家的產(chǎn)品。
絕頂聰明的NeXT的創(chuàng)始人Steve Jobs早就看中了SOS,但卻對ExperTelligence的Lisp一點興趣都沒有。他以三顧茅廬般的熱情,將Jean-Marie Hullot招致麾下。Jean-Marie最終在 NeXT 整整待了十年。在NeXT工作期間,他使用Objective-C和NeXTSTEP框架重寫了SOS,命名為Interface Builder。由此,Interface Builder成為NeXT集成開發(fā)環(huán)境Project Builder的標(biāo)準(zhǔn)套件之一。
Interface Builder和SOS一樣,提供了一個工具箱,包含一系列用戶控件對象。工具箱并不是官方定死的,而是可以任意擴(kuò)展的。開發(fā)者只要把控件拖入項目文件就能完成用戶界面設(shè)計,節(jié)省了幾乎所有和控件放置有關(guān)的代碼。同時,開發(fā)者拖拽鼠標(biāo),將控件可提供的動作(IBAction)和另一個對象的接口(IBOutlet)連在一起,則建立了一個綁定。這樣,一旦動作被激發(fā),接口中相應(yīng)的方法則會被執(zhí)行。所以,大量對象關(guān)聯(lián)的代碼也能被省去。
NeXT被Apple收購后,蘋果把下一代操作系統(tǒng)建立在NeXTSTEP的基礎(chǔ)上。Objective-C和Cocoa被作為主要框架,而Interface Builder和Project Builder也因此受到重用。值得一提得是,蘋果發(fā)布的***iPhone SDK的Cocoa Touch界面,是用Interface Builder設(shè)計的。
Jean-Marie Hullot是在NeXT被收購時進(jìn)入蘋果的,Steve Jobs令他率領(lǐng)在法國的一個小團(tuán)隊,秘密為Mac OS X 10.2開發(fā)一個辦公軟件iCal。***,在iCal小組功成名就的Jean-Marie Hullot榮升蘋果軟件開發(fā)部***技術(shù)官。
Project Builder在Mac OS X 10.3時被重命名為現(xiàn)在大家所熟知的Xcode。長期以來,Xcode環(huán)境和Interface Builder是兩個獨立工作但相互有聯(lián)系的程序,而2010年發(fā)布的Xcode 4預(yù)覽版中,Xcode和Interface Builder合二為一,成為一個一體化的編程環(huán)境。
“千里馬常有,而伯樂不常有”,Jean-Marie Hullot的經(jīng)歷驗證了這句古話。正是在“千里馬”和“伯樂”的共同努力之下,才有了今天的Xcode。感謝喬幫主和大神Hullot為我們弄出了這樣一個卓越的開發(fā)工具。
【本文是51CTO專欄作者周兆熊的原創(chuàng)文章,作者微信公眾號:周氏邏輯(logiczhou)】