当前位置: 首页 > 科技观察

iOS为什么选择Object-C?

时间:2023-03-17 00:55:39 科技观察

地球人都知道iOS最初的开发语言是Object-C(当然现在Swift已经流行了),这个Object-C从哪里来?时间回到20世纪80年代初期。BradCox和TomLove就职于ITT(国际电报电话公司,而不是更出名的AT&T),他们都接触到了SmallTalk这一伟大的语言。SmallTalk可以说是世界上第一个真正面向对象的语言,第一个带垃圾回收的语言,第一个真正集成开发环境的语言,也是第一个将MVC的概念引入到软件中的语言。被开发。SmallTalk对后来的语言产生了巨大的影响,尤其是Java和Ruby,当然还有Objective-C。两人彻底震惊了。他们认为这是开发复杂软件的最佳选择。他们迫不及待地想在他们公司使用它,但是公司已经有很多基于C的产品,所以他们不能直接使用Smalltalk。那么为什么不增强C并添加一些像SmallTalk这样的面向对象的特性呢?Cox做到了,很快就想出了C的一个面向对象的扩展。他称之为面向对象的预编译器(Object-OrientedPre-Compiler)预编译器),其实就是一个预编译器,它生成的代码可以作为C编译器的输入,最后由C编译器转化为机器码。1983年,两人成立了一家名为PPI(后来称为StepStone)的公司,以将他们的产品商业化。1986年,考克斯出版了一本书《Object-Oriented Programming, An Evolutionary Approach》,描述了新语言Object-C。Object-C深受Smalltalk的影响。开发iOS的同学应该都知道,调用方法其实就是给对象发送消息,而iOS应用的框架就是MVC。这些其实都是来源于Smalltalk的思想。Object-C看起来不错,但是没有像Java那样引起轰动,只能说是生不逢时,运气造就了人。1985年,救世主终于出现。乔布斯被自己一手创办的苹果公司扫地出门,成立了一家名为NeXT的公司。这家公司的目的是建立一个集成了软件和硬件的计算机。1988年,NeXT选择了Objective-C作为应用开发语言,并扩展了著名的开源编译器GCC来支持Objective-C编译。AppKit和FoundationKit等库是使用Objective-C开发的,这些库成为了NeXTSTEP操作系统的UI基础。此外,著名的interfacebuilder也是基于这些库的。看过《Android为什么选择了Java》的同学可能会问,乔布斯为什么不选择Java呢?来吧,这是1988年,Java还没有诞生!再看NeXT的界面,这已经是1988年了,几年后它诞生了Windows3.1的几条街,充分展示了基于Object-C的图形界面的优势。但NeXT电脑并没有取得预期的成功,估计只卖出了大约50,000台。其中,一款NeXT非常有名。TimBerners-Lee用它在欧洲核子研究中心(CERN)发明了互联网。世界上第一个网络服务器和浏览器在这里运行。Enjoy:虽然在硬件上并不成功,但NeXT的软件,尤其是AppKit、FoundationKit赢得了广泛的赞誉。1996年,乔布斯的NeXT被苹果公司收购,乔帮主回归。他承诺将NeXT的软件与Apple的硬件结合起来,这就是后来的MACOS、iOS。Object-C作为原NeXTSTEP的***等公民,必须移植。于是当2007年iPhone诞生,重新定义了手机的时候,Object-C活了过来,全世界的程序员都开始了学习Object-C的狂潮。但是为什么iOS后来不支持Java呢?理论上,在iOS上搭建虚拟机即可。2007年,乔布斯在接受?记者JohnMarkoff的采访时说,“Java不值得嵌入到我们自己的产品中,人们不会再使用Java了,这是一个巨大的负担。”让乔布斯感到遗憾的是,Java并没有消失。相反,这种由Sun公司开发并被甲骨文公司继承的编程语言给苹果公司,尤其是Android造成了巨大的麻烦。我想最本质的原因还是源于苹果的DNA,从最早的Mactonish到后来的Mac、iPhone,一直以软硬件一体的封闭系统傲立于IT界。所以让嚣张的乔??布斯用一个开源的东西,还可能涉及到别人的专利,那是绝对不能接受的。【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号coderising】点此查看该作者更多好文