机器之心报道
机器之心编辑部
组过乐队,创建过编程语言,Brad J. Cox 的一生精彩而圆满。
近日,讣告网站 Legacy.com 发布消息:Objective-C 之父 Brad J. Cox 博士于 2021 年 1 月 2 日在自己的家中逝世,享年 77 岁。
如果你是苹果生态的一位开发者,那你对 Objective-C 一定不会陌生。这门语言成就了苹果强大的软件生态,也因为苹果硬件的畅销而一路高歌猛进,挺进各大编程语言排行榜的前几名。作为一位计算机科学家,Brad Cox 的主要成就是和 Tom Love 一起创建了 Objective–C。此外,他还以在软件工程(特别是软件重用)和软件组件方面的工作而闻名。
在 Brad J. Cox 去世的消息发布之后,很多人在 Hacker News 上发帖悼念,缅怀他对编程语言演进做出的贡献。其中一位网友写道:
我喜欢 Objective-C,它是一门优美的语言。学习这门语言让我重新发现了自己对于编程的热爱。 当时我还在 Java 的世界里,想要利用业余时间写一个 Objective-C 的无人机程序。虽然后来我放弃了这个想法,但我还是把代码发到了 GitHub 上。用 Objective-C 写东西让我觉得很愉悦,这也是我最有意思的一个业余项目。 最近,我的工作 / 业余爱好主要集中于 Python 和 Go,但我依然庆幸自己曾花时间钻研 Objective-C。回想起来,如果当时没这么做,我今天可能不会成为一名程序员。 感谢 Brad Cox 的工作及其产生的积极影响。
还有人表示,Brad Cox 为自己职业生涯的黄金 20 年开辟了道路,甚至还帮一些人创建了自己的公司。
在悼念的帖子里,也有人曾经有机会和 Brad Cox 共事,ta 表示:「Brad Cox 从不宣扬自己是一个举世闻名的计算机科学家,而是和我们这些普通码农一起肩并肩敲代码。他是一个正直、受人尊敬的人(Mensch)。」
奶牛场长大的程序员
Brad Cox 于 1944 年 5 月 2 日出生于美国佐治亚州的班宁堡。他在一家奶牛场长大,渐渐地他发现自己对科学最感兴趣。求学期间,他拿到了弗曼大学理学学士学位和芝加哥大学数学生物系的博士学位,还从事过神经网络早期形式的研究。
很快,他发现自己对计算机更感兴趣,并在国际电话和电报公司(ITT)获得了一份工作。后来,他加入了 Schlumbeger – Doll Research Labs,并最终组建了自己在康涅狄格州的初创公司,即 Productivity Products International(PPI),后来命名为 Stepstone。在 Brad Cox 的第一个知名软件项目中,他编写了 PDP-8 程序来模拟神经元簇。在进入软件行业之前,他曾在美国国立卫生研究院和伍兹霍尔海洋研究所工作。
Brad Cox 的在线课程「Taming the Electronic Frontier」曾获得 1998 年的 Paul Allen Distance Education 奖。1991 年,Brad Cox 出版了他的书《Object Oriented Programming: an Evolutionary Approach》,1996 年出版了《Superdistribution: Objects as Property on the Electronic Frontier》,这本书被翻译成十种不同的语言。
Brad Cox 曾加入乔治梅森大学的社会与机构学习计划,致力于通过互联网开发早期的线上课程。离开学术界之后,Brad Cox 从事过政府咨询工作,包括与波音公司和五角大楼相关的业务。最终,Brad Cox 回到了神经网络领域,致力于将机器学习和数据科学应用于网络安全。
Cox 博士有很多粉丝,他曾在欧洲开展讲座,在演讲中他演示了如何对软件进行编程。他和他的妻子 Etta 喜欢休闲旅行和潜水,经常一起去加勒比海,伯利兹有他们美好的回忆。在一次潜水之旅的午餐中,Brad 与一对德国夫妇进行了交谈。Brad 问同行旅行者的职业,发现他是一名程序员,旅行者同样询问了 Brad 的工作,他说我也是程序员。于是他们展开了一段有趣的对话:
旅行者问 Brad:「你是做什么的?」 「我写了 Objective-C。」 对方惊讶地说:「不,那是 Brad Cox 写的。」 Brad 回应道:「Brad Cox 正是在下。」
当然,这次潜水之旅后他们又讨论了更多事情。在 Brad 的人生中,这样有趣的事发生过无数次。
Brad 喜欢音乐,会弹钢琴和吉他。早些年,他还是一支乐队的成员,主要演奏蓝草音乐(乡村音乐的一个分支)。他喜欢长时间在林子里散步。此外,他也是一个有幽默感的人。
2017 年,Brad 曾接受过「Computer History Museum」的采访,感兴趣的同学可以点击以下链接观看:https://www.youtube.com/watch?v=1xrL2d5omuA
Objective-C 的历史使命
Objective-C 是一种通用、高级、面向对象的编程语言,顾名思义,Objective-C 的原意就是在 C 语言主体上加入面向对象的特性。任何 C 语言程序不经修改就可以直接通过 Objective-C 编译器,在 Objective-C 中使用 C 语言代码也是完全合法的。它扩展了标准的 ANSI C 编程语言,将 Smalltalk 式的消息传递机制加入到 ANSI C 中。目前主要支持的编译器有 GCC 和 Clang(采用 LLVM 作为后端)。
它的两位共同发明者是 Brad Cox 和 Tom Love,二人在 ITT 公司任职期间,对 SmallTalk 语言产生了浓厚的兴趣。但当时 ITT 公司更加重视 C 语言,因此 Brad Cox 撰写了一个 C 语言的预处理器,打算使 C 语言具备些许 Smalltalk 的本领。很快,一个可用的 C 语言扩展诞生了,这就是 Objective-C 语言的前身。
Tom Love。
1983 年,Cox 与 Love 合伙成立了 Productivity Products International(PPI)公司,将 Objective-C 及其相关库商品化贩售,并在之后将公司改名为 StepStone。
1986 年,Cox 出版了一本关于 Objective-C 的重要著作《Object-Oriented Programming, An Evolutionary Approach》,详细阐述了 Objective-C 的设计理念。
目前,Objective-C 的商标权属于苹果公司,苹果公司也是这个编程语言的主要开发者。1988 年,乔布斯被赶出苹果公司后,其创办的 NeXT Computer 公司买下了 Objective-C 语言的授权。随后在 1996 年,苹果收购了 NeXT 公司,旗下的操作系统 NeXTSTEP 被重命名为 Cocoa,WebObjects 则集成到 Mac OS Server 和 Xcode 中。Objective-C 自然而然成为 Mac 平台的首选开发语言,并受到 Macintosh 编程人员的广泛认可;Cocoa 成为苹果免费提供的开发工具,提供 Mac 平台应用开发的环境。
苹果在开发 NeXTSTEP 操作系统时使用了 Objective-C,之后被 OS X 和 iOS 继承下来。现在 Objective-C 与 Swift 是 OS X 和 iOS 操作系统、及与其相关的 API、Cocoa 和 Cocoa Touch 的主要编程语言。Objective-C 的流行也要归功于 iPhone 的成功。
Objective-C 用一个很小的、用 C 写成的运行库,使得应用程序的大小增加很少,与此相比,大部分 OO 系统需要极大的运行时虚拟机来执行。Objective-C 是讲究实用和效率的语言,使用过 C 或者 Java 的开发者会惊叹于 Objective-C 的程序如此简短,尤其是,Objective-C 写成的程序通常不会比其源代码和库(通常无需包含在软件发行版本中)大太多。它可以在现存 C 编译器基础上实现,而不需要编写一个全新的编译器,使得 Objective-C 能利用大量现存的 C 代码、库、工具和编程思想等资源。这些特性都大幅降低了 Objective-C 的进入门槛。
但随着编程语言的不断演进,Objective-C 的缺点也逐渐暴露出来,比如不支持命名空间;不支持运算符重载;不支持多重继承;使用动态运行时类型,所有的方法都是函数点用,很多编译时的优化方法都用不到等。因此,近年来,苹果一直想让开发者放弃 Objective-C,转向 Swift。在开发语言排行榜 TIOBE 榜单中,Objective-C 的流行程度指数一路下滑,替代者 Swift 的位次逐渐上升。
早在 2015 年,就有人预言 Objective-C 将在五年内被 Swift 取代。在这五年的时间里,我们的确见证了 Swift 的崛起和 Objective-C 的没落,但由于代码规模依然庞大,前者彻底取代后者还有很长一段距离。
去年,海外知名自由职业平台 Upwork 调查显示,在众多编程语言中,Objective-C 成为该网站时薪最高的语言(加链接:这门「没落」语言时薪 451 元,自由职业平台 Upwork 公布兼职语言薪资排行),掌握该语言的程序员每小时可以赚 66 美元(约合 451 元人民币)。
有人曾评价说,与 Windows 平台下的应用开发技术和编程语言的繁盛景象相比,Objective-C 更像是孤独盛开在 Mac 平台上的技术奇葩。
参考链接:
https://zh.wikipedia.org/wiki/Objective-C
http://tech.it168.com/a2010/0209/8504/000000850459_all.shtml
https://www.legacy.com/us/obituaries/scnow/name/brad-cox-obituary?pid=197454225