自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS為什么選擇了Object-C?

開(kāi)發(fā) 開(kāi)發(fā)工具
Object-C 深受 Smalltalk的影響, 開(kāi)發(fā)iOS的同學(xué)應(yīng)該知道,調(diào)用方法其實(shí)就是給對(duì)象發(fā)送消息, iOS應(yīng)用的框架就是MVC, 這些其實(shí)都來(lái)源于SmallTalk的思想。

地球人都知道,iOS 最初的開(kāi)發(fā)語(yǔ)言是Object-C (當(dāng)然現(xiàn)在Swift流行起來(lái)了), 這個(gè)Object-C是從哪里來(lái)的呢?

時(shí)間得回到上個(gè)世紀(jì)80年代初。

Brad Cox and Tom Love 兩個(gè)人在ITT(國(guó)際電報(bào)電話公司, 不是更加著名的AT&T)工作, 他們倆接觸到了SmallTalk 這門(mén)偉大的語(yǔ)言。

SmallTalk 可以說(shuō)是世界上***個(gè)真正的面向?qū)ο蟮恼Z(yǔ)言,***個(gè)具備垃圾回收的語(yǔ)言, ***個(gè)擁有真正的集成開(kāi)發(fā)環(huán)境的語(yǔ)言, ***次引入了MVC的概念來(lái)開(kāi)發(fā)軟件的語(yǔ)言。

SmallTalk 對(duì)后來(lái)的語(yǔ)言產(chǎn)生了極大的影響, 尤其是對(duì)Java 和Ruby , 當(dāng)然還有Object-C。

兩個(gè)人被徹底的震撼了, 他們覺(jué)得這才是開(kāi)發(fā)復(fù)雜軟件的不二之選, 他們迫不及待的想在自己的公司用起來(lái), 但是公司已經(jīng)有很多基于C的產(chǎn)品了, 不能直接用Smalltalk。

那為什么不增強(qiáng)一下C, 添加一點(diǎn)像SmallTalk那樣的面向?qū)ο筇匦阅?

Cox說(shuō)干就干 ,很快就搞出一個(gè)C的面向?qū)ο髷U(kuò)展, 他把它稱為Object-Oriented Pre-Compiler (面向?qū)ο蟮念A(yù)編譯器), 實(shí)際上它就是個(gè)預(yù)編譯器, 它產(chǎn)生的代碼恰恰可以作為C編譯器的輸入, 最終被C編譯器變成機(jī)器碼。

1983 ,兩人成立了一個(gè)叫PPI ,后來(lái)叫StepStone的公司來(lái)商業(yè)化他們的產(chǎn)品。

1986年, Cox 出版了一本書(shū)《Object-Oriented Programming, An Evolutionary Approach》來(lái)描述Object-C 這門(mén)新的語(yǔ)言。

Object-C 深受 Smalltalk的影響, 開(kāi)發(fā)iOS的同學(xué)應(yīng)該知道,調(diào)用方法其實(shí)就是給對(duì)象發(fā)送消息, iOS應(yīng)用的框架就是MVC, 這些其實(shí)都來(lái)源于SmallTalk的思想。

Object-C 看起來(lái)不錯(cuò), 但沒(méi)有引發(fā)像Java 那樣引發(fā)轟動(dòng),只能說(shuō)生不逢時(shí), 造化弄人啊。

1985, 救世主終于出現(xiàn)了。 喬布斯被自己親手創(chuàng)辦的蘋(píng)果公司掃地出門(mén), 建立了一個(gè)叫NeXT的公司,這家公司的目的就是建立軟件硬件于一體的計(jì)算機(jī)。

1988年,NeXT選擇了Object-C作為應(yīng)用程序的開(kāi)發(fā)語(yǔ)言, 并且擴(kuò)展了著名的開(kāi)源編譯器GCC 使之支持 Objective-C 的編譯。

使用 Objective-C 開(kāi)發(fā)了 AppKit 與 Foundation Kit 等庫(kù),這些庫(kù)成為了NeXTSTEP 這個(gè)操作系統(tǒng)的UI基礎(chǔ) 。 另外大名鼎鼎的interface builder 也是基于這些庫(kù)建立的。

看過(guò)《Android為什么選擇了Java》的同學(xué)可能會(huì)問(wèn), 喬布斯為啥不選Java 呢?

拜托,這是1988年, Java還沒(méi)有誕生呢!

看看NeXT的界面, 這是1988年, 絕對(duì)甩幾年后才出世的Windows 3.1 好幾條街, 充分展示出了基于Object-C的圖形界面的優(yōu)勢(shì)。

但是NeXT計(jì)算機(jī)沒(méi)有取得預(yù)料中的成功,估計(jì)只賣(mài)了5萬(wàn)臺(tái)左右。

其中有一臺(tái)NeXT非常著名, Tim Berners-Lee 在歐洲核子研究中心(CERN) 使用它發(fā)明了互聯(lián)網(wǎng), 世界上***個(gè)Web服務(wù)器和瀏覽器就運(yùn)行于此, 欣賞一下:

[[184255]]

雖然硬件不成功, 但是NeXT的軟件尤其是AppKit, Foundation Kit卻獲得了廣泛的贊譽(yù)。

1996年, 喬布斯的NeXT被Apple收購(gòu), 喬幫主王者歸來(lái), 他承諾一定要把NeXT的軟件和Apple的硬件結(jié)合到一起, 這就是后來(lái)的MAC OS, iOS。

Object-C 作為原來(lái)NeXTSTEP的***等公民, 肯定要被移植過(guò)去了。

所以當(dāng)iPhone 2007年橫空出世, 重新定義手機(jī)的時(shí)候 , Object-C 也就活了, 全世界的程序員就開(kāi)始了學(xué)習(xí)Object-C的狂潮。

但是后來(lái)iOS為什么還不支持Java呢? 理論上只要在iOS上搞個(gè)虛擬機(jī)就行。

2007年,喬布斯在接受《紐約時(shí)報(bào)》記者約翰·馬爾科夫(John Markoff)采訪時(shí)說(shuō),“Java不值得我們嵌入到自家產(chǎn)品。人們不會(huì)再去使用Java,它就是一個(gè)巨大的累贅。”

讓喬布斯遺憾的是,Java并未消失,相反,這個(gè)由Sun開(kāi)發(fā)、甲骨文繼承的編程語(yǔ)言,給蘋(píng)果制造了巨大的麻煩, 尤其是Android。

我想本質(zhì)原因還是由于蘋(píng)果公司的基因, 一直以來(lái)都以軟硬一體,封閉的系統(tǒng)而傲然站立于IT界, 從最早的Mactonish到后來(lái)的Mac, iPhone都是如此。

所以讓心高氣傲的喬布斯去用一個(gè)開(kāi)源的東西, 還可能會(huì)牽扯到別人的專利, 那是萬(wàn)萬(wàn)不行的。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2017-08-04 17:44:02

2020-06-10 09:06:48

MongoDB架構(gòu)高可用

2017-02-27 15:19:04

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2015-06-11 11:10:02

Object-C省略參數(shù)

2015-04-17 16:07:11

swiftOC

2018-12-21 11:26:49

MySQLMongoDB數(shù)據(jù)庫(kù)

2021-08-23 13:25:25

Vue3CSS前端

2021-01-20 14:25:53

Vue3CSS前端

2024-02-05 21:48:25

VueReactHooks

2011-11-28 10:21:52

Nginx特性

2022-06-14 11:01:48

SpringBootTomcatUndertow

2020-02-13 17:49:55

SpringBoot放棄選擇

2021-12-14 07:40:07

企業(yè)內(nèi)部開(kāi)源

2020-09-28 15:45:23

數(shù)據(jù)

2019-11-20 10:39:35

iPhone緩存清理

2012-02-28 09:11:51

語(yǔ)言Lua

2009-12-21 17:11:38

Linux認(rèn)證

2009-06-25 15:09:34

選擇JSFESRI

2012-07-13 13:51:57

AndroidiOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)