【猿传奇 | 15】为什么是Brad Cox和他的Objective-C ?

20世纪70年代,面向对象程序设计思想兴起,很多实验室和研究中心都在研究面向对象程序设计的方法和理论。 其中就有美国施乐公司(Xerox)的帕洛阿尔托研究中心(PARC)开发的 Smalltalk 编程语言。

Smalltalk 是历史上的第二个面向对象的编程语言(很可惜由于编译速度慢的原因,它最后还是被抛弃)和第一个真正的集成开发环境。这门语言发展迅速,先后推出了 Smalltalk-72、Smalltalk-78、Smalltalk-80 等版本。 到 Smalltalk-80 已经成为了非常成熟的面向对象的语言。它受到了很多人的喜爱,同时也有很多人开始研究它。

到了80年代初,当时还是 C 语言的天下,绝大多数公司都在使用 C 语言进行开发,在 ITT 实验室工作的 Brad Cox 和 Tom Love 也是广大 C 语言程序员中其中的两名。

对于 Brad Cox 来说,他进入软件行业之前曾在美国国立卫生研究院和伍兹霍尔海洋研究所工作,在他职业生涯早起也曾表示自己对编程语言并没有什么兴趣,反而更愿意研究软件组件,他认为语言仅仅是构建和组合部分软件的工具而已。

 

命运改写的瞬间没有想象中的那么波澜壮阔,反而往往是某个普通的日子里不经意的发现,你的命运便因此踏入了不同的方向,而你却从未察觉。对于 Brad Cox 和 Tom Love 来说,那天发现的 Smalltalk-80 商业版本的拷贝便是他们命运的道岔。

为了能够使用面向对象的方法编程,又能兼容以前使用 C 语言写的程序, 他们自然而然的想法就是扩充 C 语言。在 C 语言的基础上,加入面向对象的东西,这样以前写的代码不用修改,以后就可以使用这门新语言编写软件了。

Brad Cox 在1983年修改了 C 语言编译器用于面向对象编程。他将 Smalltalk 的 object 和 message passing 分层构造在 C 语言之上,这点让程序员可以持续使用熟悉的 C 语言开发,又可以使用面向对象特性,Objective-C 就在这个基础上诞生了。

“ 

             其实我就想看看有什么还没使用过的,花括号有了,圆括号有了,最后就是方括号了,我希望人们使用时不会与C语言等类似的混淆。 
——Brad Cox

同年,Brad Cox 与 Tom Love 合伙成立了 Productivity Products International(PPI)公司,将 Objective-C 及其相关库商品化贩售,并在之后将公司改名为 StepStone。

当时 StepStone 公司的样子

Objective-C 看起来不错,但没有像后来者 Java 那样引发轰动,一直是不温不火的状态。

命运的天平这时又开始向 Brad Cox 倾斜:1985年,乔布斯被赶出苹果公司后,创立了 NeXT ,致力于开发强大且经济的工作站,NeXT 选择的开发语言,便是 Objective-C 。

但是 NeXT 工作站没有取得预料中的成功,估计只卖了5万台左右,但值得一提的是,Tim Berners-Lee 就是在这5万台其中的一台上发明了万维网,世界上第一个 Web 服务器和浏览器就运行于此。

虽然硬件并不是太受欢迎,但是 NeXT 使用 Objective-C 开发的 AppKit 与 FoundationKit 等库却获得了广泛的赞誉,这些库也成为了 NeXTStep 这个操作系统的UI基础 。

NeXTStep 3.3的界面

后来的事大家都知道了,苹果收购了 Next,乔布斯回归苹果,NeXTStep 也成了 Mac OS X 的基础。被收购后,Objective-C自然而然成为Mac平台的首选开发语言,并受到 Macintosh 编程人员的广泛认可。

Objective-C 成就了NeXT,成就了今天的苹果,但同样的,NeXT 和苹果也成就了 Objective-C 和 Brad Cox。

在2014年的一次采访中,记者问了 Brad Cox 这样一个问题:苹果 iPod 和 iPhone 的销量超过了3千万,看到如此多的手持设备运行在 Objective-C 之上,那感觉是怎么样的?

Brad Cox 的回答是:这感觉美妙极了。