← 返回故事列表

两个叛逆者与一门语言:Objective-C如何从废墟中崛起,最终拯救了苹果

时代:1984
阅读时间:9 分钟
浏览:6
点赞:0

1984年,一家名为Stepstone的小公司里,Brad Cox和Tom Love正在做一件在当时看来毫无意义的事情:他们把Smalltalk的“消息传递”塞进了C语言。没有人看好这个组合——UNIX世界嘲笑它太慢,Smalltalk信徒鄙视它不够纯粹。但谁也没想到,这个妥协的产物,会在十年后成为

# 两个叛逆者与一门语言:Objective-C如何从废墟中崛起,最终拯救了苹果 1984年,一家名为Stepstone的小公司里,Brad Cox和Tom Love正在做一件在当时看来毫无意义的事情:他们把Smalltalk的“消息传递”塞进了C语言。没有人看好这个组合——UNIX世界嘲笑它太慢,Smalltalk信徒鄙视它不够纯粹。但谁也没想到,这个妥协的产物,会在十年后成为史蒂夫·乔布斯东山再起的武器,并在更远的未来,成为全球市值最高公司的技术基石。这是一场关于“实用主义”如何战胜“完美主义”的战争,也是两个程序员在商业漩涡中孤注一掷的故事。 ## 两个世界的裂缝:C语言的效率困境与Smalltalk的优雅诅咒 20世纪80年代初,软件世界正经历一场痛苦的青春期分裂。一边是C语言统治的系统编程世界——它高效、接近硬件、能写操作系统,但构建大型应用时,代码像一团缠绕的荆棘。另一边是施乐帕克研究中心诞生的Smalltalk——它优雅、纯粹,一切皆对象,消息传递让代码像对话一样自然,但它运行在昂贵的专用机器上,速度慢得令人发指。 Brad Cox,一个拥有物理学博士学位的程序员,曾在IBM和一家AI公司工作,亲身体验了这种分裂的痛苦。他在1982年的一篇笔记中写道:“我们需要一种语言,既能像C一样跑得飞快,又能像Smalltalk一样让代码活起来。”但当时,没有人愿意听这种“既要又要”的异端邪说。 真正的转折发生在1983年。Cox和Tom Love——一位曾在贝尔实验室与C语言之父Dennis Ritchie共事的程序员——在Stepstone公司相遇。Love带来了一项关键洞察:C语言的预处理器可以成为“特洛伊木马”。他们不需要重写编译器,只需要在C的语法上覆盖一层“语法糖”,让程序员能用C的语法写出Smalltalk风格的消息传递。 1984年的一个深夜,在Stepstone位于康涅狄格州的小办公室里,Cox写下了Objective-C的第一行代码。他回忆道:“我们只是给C语言加了一个小小的`[`和`]`——发送消息的语法。但就是这对括号,改变了历史。”然而,市场反应冷淡。开发者们问:“为什么不用C++?”——Bjarne Stroustrup的C++几乎在同一时间诞生,并且有AT&T的背书。Cox的回答是:“C++试图让C看起来像Simula,我们想让C看起来像Smalltalk。这是两种哲学——控制与对话的区别。” 但商业世界不关心哲学。Stepstone试图将Objective-C作为商业产品出售,定价500美元一份许可证,附带一个名为“ICpak”的类库。他们卖出了几百份,主要卖给那些尝试面向对象编程的大学和边缘项目。到1987年,公司濒临破产。Love后来承认:“我们以为技术会自己说话,但市场需要的是一个故事,而不仅仅是代码。” ## 乔布斯的赌注:NeXT的绝境与Objective-C的救赎 1988年,一封来自NeXT公司的信件改变了这一切。Steve Jobs,刚刚被他亲手创建的苹果公司驱逐,正在打造“下一代计算机”——一台为高等教育设计的强大工作站。他需要一个操作系统,一个开发环境,以及一门语言,来支撑他的野心。 NeXT的软件负责人Bud Tribble面临着艰难抉择。他考察了C++,但发现其对象模型“过于复杂,像一辆设计过度的坦克”。他考察了Smalltalk,但性能无法满足图形界面的需求。最终,他翻到了Stepstone的产品手册。Objective-C的核心理念——一个“动态运行时”系统,允许在程序运行时修改对象的行为——让Tribble眼前一亮。这正是NeXT需要的:一个既能高性能运行,又能支持高度动态用户界面的语言。 但交易几乎告吹。Stepstone开出的许可证费用是10万美元,外加每份NeXTSTEP系统拷贝的版税。NeXT的财务团队认为这是敲诈。Cox和Love飞往加州,在NeXT总部与乔布斯进行了三小时的谈判。Love回忆道:“乔布斯穿着他的标志性黑色高领毛衣,在房间里踱步。他说,‘你们这门语言很好,但你们的定价是在扼杀它。’”最终,NeXT以5万美元买断了Objective-C的永久使用权,并且不支付版税。Stepstone几乎没有选择——公司已经撑不了多久了,这可能是最后一根稻草。 这一决定彻底改变了Objective-C的命运。NeXTSTEP操作系统用Objective-C重写了大部分核心API,包括那个后来统治世界的图形界面框架——AppKit。乔布斯对这门语言有一个著名的评价:“它让编程变得像写作一样流畅。”但背后的代价是:Objective-C的语法被嘲笑为“方括号地狱”,它的内存管理机制(引用计数)让无数开发者抓狂。 1996年,苹果公司以4.29亿美元收购NeXT。乔布斯回归,Objective-C随之成为Mac OS X的官方语言。2007年,当iPhone发布时,iOS的整个生态系统——从UIKit到Core Animation——全部建立在Objective-C之上。讽刺的是,这门诞生于1984年的语言,在它20多岁的时候,终于成为了地球上最重要技术的核心。但它的胜利也意味着它的终结:因为它的复杂性,苹果必须尽快创造一门更现代的语言来取代它。 ## 遗产与告别:从方括号到Swift,以及技术债务的永恒教训 2014年,苹果发布了Swift,一门由Chris Lattner设计的新语言,目标明确:取代Objective-C。在WWDC大会上,当Swift的演示开始时,台下的苹果开发者们爆发出一阵复杂的掌声——那是解脱,也是告别。 但Objective-C的遗产远比它本身更持久。它教会了苹果和整个行业一个重要教训:**动态运行时是最强大的武器,也是最危险的陷阱。** Objective-C的“消息传递”机制允许开发者做C++永远做不到的事——例如Method Swizzling(在运行时交换方法实现),这成为了无数iOS黑科技的根基。但同时,它的动态性也导致了难以追踪的崩溃和性能瓶颈。 从商业角度看,Objective-C的故事是一个典型的“技术赌注”案例。NeXT选择它,不是因为它是完美的,而是因为它在“足够好”的范围内解决了最紧迫的问题。乔布斯后来在自传中说:“好的艺术家模仿,伟大的艺术家偷窃。”Objective-C正是从Smalltalk那里“偷”来了核心思想,然后用C语言的躯壳让它变得可用。 这门语言也印证了“网络效应”的残酷:即使技术平庸,只要绑定了正确的平台和时机,就能创造历史。如果1988年NeXT选择了C++,今天的iOS开发可能会完全不同——或许会更安全,或许会更僵硬。但我们永远不会知道。 今天,Objective-C仍然活在无数老旧iOS和macOS应用的深层代码中。它像一座古老的桥梁,连接着C语言的过去和面向对象的未来。每一个使用iPhone的人,都在间接使用Brad Cox和Tom Love在1984年那个深夜写下的代码。他们当时并不知道,他们正在建造的不是一个产品,而是一块基石。 ## 评论 Objective-C的兴衰揭示了软件史上一个残酷的真理:**技术成功的关键往往不在于技术本身的完美,而在于它能否在正确的时间解决正确的问题。** Brad Cox和Tom Love创造了Objective-C,但真正让它改变世界的,是史蒂夫·乔布斯的赌徒式决策。这让它成为了一门“被平台绑架的语言”——它的巅峰和衰落都完全依赖于苹果的兴衰。对于今天的软件创业者而言,Objective-C的故事是一个警示:如果你在创造一门语言或一个框架,要么让它成为平台本身(像JavaScript之于Web),要么接受自己将成为平台的一部分(像Objective-C之于苹果)。它同时也证明了,即使是“丑陋”的技术,只要拥有强大的生态系统,就能活得很久。到今天,仍有无数iOS开发者在使用Swift时,不得不深入Objective-C的遗留代码——这是技术债务最深刻的象征:你永远无法真正杀死一门曾经统治过世界的语言。 ## 参考资料 - [Brad Cox - Wikipedia](https://en.wikipedia.org/wiki/Brad_Cox) — Objective-C创始人的生平与贡献 - [Objective-C - Wikipedia](https://en.wikipedia.org/wiki/Objective-C) — 语言的技术演进与历史背景 - [The Story of NeXT](https://www.folklore.org/ProjectView.py?project=NeXT) — Folklore.org上关于NeXT公司创立与Objective-C选择的轶事 - [Steve Jobs by Walter Isaacson](https://en.wikipedia.org/wiki/Steve_Jobs_(book)) — 乔布斯传记中关于NeXT技术决策的章节 - [Stepstone - The Company That Created Objective-C](https://www.stepstone.com/about/) — Stepstone公司官方历史页面 - [Swift Programming Language - Apple Developer](https://developer.apple.com/swift/) — Swift发布公告,标志着Objective-C时代的终结

发布于 2026/7/4