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

乔布斯:我比这里的每个人都更了解面向对象!

时间:2023-03-12 08:14:29 科技观察

1985年,乔布斯被赶出他自己创立的苹果公司。不甘心,他成立了一家新的电脑公司NeXT,制造下一代个人电脑,漂亮、强大、优秀的机器,让苹果感到遗憾和羞愧。遗憾的是,NeXT并没有取得预期的成功,6500美元的高价只让它卖出了5万台。1993年,NeXT被迫退出硬件业务。失去的就是得到的。NeXT机器虽然不好,但其操作系统NeXTSTEP以其优秀的GUI和面向对象的编程环境,对业界产生了极大的影响。TimBerners-Lee用它开发了世界上第一个WWW服务器,编程语言是Objective-C。idsoftware在其上开发了开创性的PC游戏Doom、DoomII和Quake。NeXTSTEP后来成为MacOSX的基础,支持Apple的所有平台,包括iOS、iPadOS、watchOS和tvOS。简单来说,NeXTSTEP提供了三个突出的功能:1.Objective-C,一种面向对象的语言和运行时2.面向对象的应用层3.面向对象层的开发工具。请注意,这三个函数都与面向对象有关。1994年,39岁的乔布斯接受了《滚石》杂志的采访。他首先批评苹果的Mac电脑,说Mac没有进取心,10年变化不到10%,就像一只坐着的鸭子。而微软,花了10年时间才复制了一些“坐鸭”的东西!然后他开始宣传他的NeXTSTEP的面向对象:“我认为在未来的某一天,所有的软件都将使用面向对象的技术编写……”面向对象?这样的技术名词要是从公司的CEO口中说出来,大家一定觉得有些奇怪,因为面向对象现在已经是沉淀到底层的技术了,CEO根本不会提。他们应该在谈论时髦的微服务、云计算、人工智能……但是在20世纪80年代后期、90年代初期,面向对象是一个非常时髦的词。记者不懂技术,问:“能解释一下什么是面向对象软件吗?”乔布斯开始了精彩的演讲:物体就像人一样,它们是有生命的,它们呼吸着空气,它们内部储存着什么?做事的知识,他们也有记事的记忆力,你可以在非常高的抽象层次上与他们互动,而无需使用低层次的细节。比如我是你的洗衣师,你可以把脏衣服给我,然后发信息给我说:“请帮我洗衣服”,剩下的你不用管了。我知道旧金山最好的自助洗衣店在哪里,我会说英语,而且我口袋里有钱,我会叫一辆出租车去那家自助洗衣店,当我完成后,我会回到这里给你干净的衣服,还告诉你'这是你的干净衣服'。你不知道我是怎么做到的,你对洗衣一无所知,你不知道如何叫出租车或付钱。所有的复杂性都隐藏在我的内心。我们都在高层交流。这就是Object,它封装了复杂性并为外界提供了一个高级接口。这是我看到的对面向对象的非常好的描述!乔布斯不是技术天才。他最大的优势在于他对用户体验和品味的感知,然后“聚集”了一群天才,将最酷的技术原型转化为面向消费者的产品。这种面向对象的叙述,可能是他自己实现的,也可能是向他的天才请教的。不管怎样,他形象地展示了Object的两个特点:1.封装复杂的操作2.对外提供一个高层接口,通过消息传递进行交互。你可能会说我学的面向对象就是封装、继承和多态!是的,由于面向对象,存在重大分歧。漫画中的两人都是高手。左边是发明面向对象和Smalltalk编程语言的AlanKay,右边是C++之父BjarneStroustrup。正如乔布斯所说,在AlanKay的OO世界中,对象更像是一个自主的“进程”,它有自己的状态,可以通过消息与其他对象进行通信。这些物体各司其职,就像细胞一样,无数的细胞组成了一个有机体。不管有机体有多大,它的基本思想都是一样的。也就是说,一个大的系统是由对象通过递归组合一个一个建立起来的。这个想法可能过于超前了,其代表语言Smalltalk在一段时间后被Java、C#、Python、C++等所取代。后来只能在Actor模型和Erlang中找到一些痕迹。BjarneStroustrup发明的C++是“新面向对象”的代表。这里的对象成为数据类型(类)的实例。没有类,对象就根本不存在。程序的重点也变成了接口、继承、多态。因为更接近于程序=数据结构+算法,加上大公司的推广,已经占据了更多程序员的心智,成为了主流。