导读:从捡垃圾的少年到技术先驱,詹姆斯·高斯林的务实天才塑造了三十年的 Java 和现代计算。
Java编程语言已经迎来 30 岁生日,这要感谢它的主要创始人詹姆斯·高斯林(James Gosling),这种高级、通用、内存安全、 面向对象的编程语言如今仍然为各种规模的软件系统提供底层支持。
自从 Java 让程序员能够“编写一次、随处运行”的理念彻底改变了软件开发以来,这些年来我一直有幸采访并了解这位大师。
詹姆斯·高斯林 (James Gosling) 从足智多谋的加拿大少年成长为世界级程序员先驱,这段经历为了解过去几十年计算技术的演变提供了宝贵的见解。他为 Java 所做的贡献,创造了一个赋能无数开发者的平台。
在他的整个职业生涯中,高斯林始终在技术卓越性、乐于助人的精神和清晰的道德界限之间寻求平衡——这种平衡帮助塑造了现代计算格局。
高斯林不仅仅是“Java 之父”,他亦是一位谦逊的天才,拥有将复杂概念简化的非凡能力。在最近的一次对话中,高斯林分享了他精彩的科技之旅,并回顾了他和他的团队将 Java 带入生活 30 年后 Java 的演变。
詹姆斯·高斯林和 DKT
高斯林的编程之路,展现了他后来成为创新者的特质。
他小时的家庭“几乎一贫如洗”,但他却将生活必需品转化为创作灵感。“玩具都是从人们的垃圾桶里翻出来的,还有从旧电视机里翻出来的,”他后来回忆道。
他曾经自己组装成功的第一台电脑,实际上是用从一家电话公司废弃物中回收的继电器架做成的,这一成就展现了他早期的技术天赋。
一个关键时刻到来了,当时高斯林的父亲的朋友带他参观了卡尔加里大学的计算机中心。“我完全被迷住了,”他回忆道。“屏幕、闪烁的灯光、磁带——各种各样的东西。”
这种好奇心成为他下一步职业生涯中一个显著的特征。
到了十几岁,高斯林开始显得足智多谋,他通过非常规的方式自学编程:翻垃圾箱寻找带有密码的穿孔卡片。当时很多青少年都在从事零售业,而高斯林高中时就在大学物理系找到了一份工作,开发一款处理卫星数据的软件。谈到这段成长经历时,他说道:“他们居然愿意付钱,这让我玩得很开心。”
他早期的编程经验涵盖了 IBM 大型机上的 PL/1 和Fortran 语言、PDP-8 汇编语言以及 CDC 6400 代码。他以自己一贯低调的作风,随意地提到自己“在暑期从事了编写 COBOL 编译器的工作”——这对于许多经验丰富的程序员来说,无疑仍是一项艰巨的任务。
高斯林对学术的务实态度在他的职场故事中也是“熠熠生辉”。
他将卡内基梅隆大学享有盛誉的计算机科学博士项目描述为“本质上就是一个把研究生当作廉价劳动力的研究机构”,这体现了他直截了当的性格。他一贯务实,在学习期间曾休假到湾区一家初创公司工作,之后才回到匹兹堡完成学业。
离开卡内基梅隆大学后,他第一份工作是在 IBM 研究院,多年后他对 IBM 的评价依然尖锐。他将 IBM 描述为“一心想搬起石头砸自己的脚”,这番话既透彻又幽默。这些早期经历影响了他下一步在Sun Microsystems 的工作方式,他的大部分职业生涯都在这里蓬勃发展。
提起高斯林在Sun最喜欢的时光,话题总是绕不开那个传奇的愚人节恶作剧。他回忆说,这些恶作剧“工作量很大”,但“乐趣无穷”——这让开发者们得以一窥Sun鼓励创新和创造力的公司文化。
这些并不是简单的恶作剧。高斯林回忆说,他曾把一辆法拉利放在池塘里的平台上(“从概念上来说,这是最壮观的”),让它看起来像是漂浮在那里。这辆车属于Sun联合创始人比尔·乔伊(Bill Joy),但最初的计划是把Sun软件主管埃里克·施密特(Eric Schmidt )的法拉利放进池塘里,但团队担心施密特(后来成为谷歌首席执行官)可能会对这个恶作剧感到“不安”——尽管施密特也受到了恶作剧的惩罚。
另一项是在Sun首席执行官斯科特·麦克尼利的办公室里建造一个精心设计的单洞高尔夫球场,球场内设有草坪、水障碍和沙坑。这些工程挑战需要与推动Sun技术创新的创造性解决问题的能力相同。
在 Sun,高斯林找到了一种罕见的环境,在这里,卓越的技术可以与有趣的创造力一起蓬勃发展——这种氛围明显塑造了他整个职业生涯中对技术和解决问题的方法。
Java 诞生迄今已有 30 年,是高斯林的标志性成就。当被问及创造出如此具有影响力的作品有何感受时,他分享了一个谦逊的视角说:“时不时地,有人在街上拦住我,说:‘哦,你是 James Gosling 吗?谢谢你给了我一份职业。我写 Java 代码已经 20 年了,这是一份很棒的职业。’这给了我一种无比的满足感,”他如此说道。
回顾 Java 的演变历程,Gosling 提到像 Lambda 表达式(JDK 8 新增)这样的特性,他希望这些元素从一开始就存在。然而,他解释了自己谨慎的语言设计方法:“我从不想添加任何不合适的东西。” 泛型和 Lambda 表达式等特性的挑战在于确定最佳的实现方式——“前 90% 很容易搞清楚,而后 10% 则非常难,”他说道。
对于甲骨文收购 Sun 以来对 Java 的管理,James 做出了慎重的评价:“他们的表现超出了预期,但我也必须承认,我的期望值相当低。”他认为社区在 Java 的持续发展和创新中发挥了至关重要的作用。
“时不时地,有人会在街上拦住我,说:‘哦,你是詹姆斯·高斯林吗?谢谢你给了我一份职业。我写 Java 代码已经 20 年了,这是一份很棒的职业。’这让我感到非常满足。”
—Java 之父 James Gosling
Gosling 指出,Java 已经非常适合云计算环境,他观察到“过去 30 年发生的大部分变化都使 Java 在云领域变得非常非常稳固。” 他强调了多核处理器处理、内存管理,尤其是垃圾收集方面的改进,他将其描述为最新版本中“非凡的”改进。
2010年甲骨文收购Sun后,高斯林休息了一段时间,随后短暂加入谷歌。这段时间持续了“整整六个月”,之后他转投Liquid Robotics,负责自主海洋机器人的控制系统研发。这份工作既有技术挑战,也有独特的福利:“你必须掌握的技能之一是浮潜”,而且“工作的一部分就是要在夏威夷待上一周或一个月。”
Liquid Robotics 的工作涉及环境监测,其中包括研究北极和南极地区海洋温度的项目。然而,正如 Gosling 所指出的,“研究这些项目的人根本就没有任何资金”,这给一家由风险投资公司资助的公司带来了挑战。随着投资者推动公司向国防应用领域发展,Gosling 对此方向感到了不安,最终离开了公司。
随后,他加入了亚马逊网络服务公司 (Amazon Web Services),在那里他参与了 Greengrass 项目和其他开发工具的开发工作,直到去年退休。在职业生涯的起伏中,Gosling 不仅始终关注技术兴趣,也始终关注职业道德规范。
关于开源的演变,Gosling 观察到“很多人已经找到了如何让开源为自己服务的方法”,并且针对不同的情况出现了不同的模式。在 Sun,开源“一部分关乎协作,一部分关乎开发者关系,一部分关乎市场营销”,提供了一种自下而上的采用方式,与传统的自上而下的企业销售方式截然不同。
当被问及“低代码、无代码”的技术趋势时,Gosling 表达了基于历史背景的怀疑:“几十年来,人们一直在说低代码、无代码。这其实就是 COBOL 的宣传口号。” 他指出,这种方法通常在狭窄领域表现出色,但在特定重点领域之外的复杂性方面却举步维艰。
关于人工智能和机器学习 (ML),Gosling 主要对术语亦存有异议:“我对人工智能和机器学习最大的问题就是它们的名称。” 他认为,“高级统计方法”比那些容易让人误以为自己是人类推理的术语更准确。在他看来,这些技术就像“极其复杂的锤子和螺丝刀”:是人类使用的工具,而并不是威胁就业的自主型系统。
Gosling 主要使用NetBeans IDE进行开发,并对其开源、Apache 许可的特性以及专注的社区表示赞赏。他对那些坚持使用过时工具的开发人员感到沮丧:“最让我抓狂的是那些疯狂追随 80 年代或 70 年代的人——他们仍然想使用Vi,而 Vi 在 70 年代可是高科技。”
虽然他承认偶尔会使用 Vi“因为 Vi 无处不在”,但 Gosling 提倡使用现代开发环境来进行大量的编码工作。
有趣的是, Java 虚拟机(JVM)的概念起源于 Gosling 的研究生时期。他曾探索过“架构中立的分发格式”相关的想法,并尝试过在不同机器架构之间进行跨指令转换。
早期的探索促成了 JVM 的开发,JVM 后来成为一项基础技术,不仅使 Java 能够运行,也使许多其他语言能够在各种硬件平台上运行。“一次编写,随处运行”的愿景最初被认为缺乏足够的数学基础来支撑博士论文,但最终却改变了全球的软件开发实践。
去年从AWS退休之前,Gosling 一直致力于Greengrass 的开发,这是一个用于构建物联网 (IoT) 应用程序的 AWS 框架。这完美体现了 Gosling 的技术理念:以优雅简洁的方式解决复杂而普遍的问题。
“从‘我有一个能用的玩具’到真正可以大规模部署的东西,这其中很大一部分本质上都是样板,”Gosling 解释道,他拥有独特的能力,能够让复杂的想法一下子变得触手可及。Greengrass 处理了所有这些繁琐的元素——无线更新、远程命令和控制、遥测、网络可靠性、安全性、凭证管理——让开发人员能够专注于打造其特定应用程序的独特之处。
Greengrass 的设备端部分是开源的,体现了 Gosling 长期以来对社区贡献的赞赏。这种方法带来了好处,用户可以创建移植到亚马逊之前未优先考虑的平台,例如 RISC-V——这显然让他感到很满意。
继 Greengrass 之后,Gosling 加入了另一个与软件开发工具相关的 AWS 项目,但它“陷入了人工智能末日”。
与此同时,在最近接受采访时,Gosling 对席卷科技行业的人工智能革命持更加怀疑的态度。
“这基本上是一场骗局,”他直言不讳地将人工智能描述为“一个自带一桶有毒废物的营销术语”。尽管 Gosling 承认这些系统背后有着令人印象深刻的数学原理,但他也担心人工智能的标签会掩盖其作为高级统计技术的本质。
“科技行业的骗子和炒作者的数量令人难以置信。”
—Java 之父 James Gosling
他尤其批评了那些炒作人工智能的风险投资家,指出“科技行业的骗子和炒作者数量多得令人发指”,而且风险投资家“只关心成功退出”,而不是打造真正有用的技术。他预测,“绝大多数人工智能投资将被卷入黑洞”。
谈到生成式人工智能编程助手,Gosling 承认它们最初令人印象深刻,但也强调了其显著的局限性。“一开始进行氛围编程,其实会很酷,”他说道,但他警告说,“一旦你的项目变得稍微复杂一点,它们几乎总是会变得非常疯狂。”
Gosling 认为,根本问题在于这些工具的工作原理是抓取现有的代码示例,并且只能复制之前见过的内容。这与专业软件开发存在本质性的不匹配,因为专业的软件开发“有趣的东西永远不会被重复”,因为好的解决方案都被打包成人人都在用的库。
“你开始进行氛围编码会议,这实际上可能非常酷,但一旦你的项目变得稍微复杂一点,他们几乎总是会绞尽脑汁。”
—Java 之父 James Gosling
高斯林还认为,人工智能最有价值的编码应用不是取代程序员,而是“没人愿意写的文档”——现在的AI本质上是一个智能搜索引擎,可以理解代码的工作原理,并能解释如何使用特定的 API 或功能。
当被问及 Java 的最新进展时,Gosling 承认了一些有价值的语言增强:“类型推断带来的很多功能都非常棒。你知道,数组声明的演变方式也非常棒。我认为这方面还可以进一步改进。”
不过,他强调,Java 近期最令人印象深刻的进步体现在其运行时环境和库方面。“如今 JVM 的代码质量非常好。现代 JVM 版本中的垃圾收集器简直令人惊叹。线程性能也非常出色,”他解释道。
他特别赞扬了内存管理和性能可预测性的改进:“Java 存储管理长期以来一直比malloc和 C 存储管理更高效,但现在它的表现令人惊叹。”垃圾收集暂停曾经需要“10 或 20 秒”,现在通过仔细调整可以减少到几毫秒,“如果你不小心,它仍然会在一秒之内。” JVM 现在还能以令人印象深刻的效率处理“任意、大得离谱的内存空间”。
当被问及应该使用哪种编程语言来重建FAA的空中交通管制系统时,Gosling驳斥了这个问题的前提。“这就像设计房子,但一开始要考虑买什么牌子的锤子,”他这样说。
相反,他主张首先了解问题领域——包括通信系统、国际法规、飞机跟踪、防撞和飞行路径规划——然后再为不同的组件选择合适的技术。“根据你想要实现的目标的特性来做决定,”他建议道,但他也指出, Java 在可靠性至关重要的大型系统中会表现出色。
尽管人工智能取得了长足进步,但高斯林坚信编程仍然是一项必不可少的技能。“如果我现在有一个小孩,我绝对会教他们编程,”他说道,并解释说,“即使人工智能接管了一切,人们也必须了解他们的系统是如何运作的。”
他驳斥了马克·扎克伯格和马克·贝尼奥夫等科技高管关于人工智能将减少对工程师的需求的说法,称其“完全是自私自利的胡说八道”,认为这些言论是一种定位策略,是一种不加掩饰的威胁,目的是从员工身上榨取更多的工作。
“如果我现在有个小孩,我绝对会教他们编程。即使人工智能接管了一切,人们也必须了解他们的系统是如何运作的。”
—Java 之父 James Gosling
当被问及为什么 Java 能屹立三十年而其他语言却逐渐衰落时,Gosling 列举了几个因素:解决实际问题、尊重用户、保持向后兼容性、提高开发人员的工作效率以及优先考虑可靠性。
“它从来都不是追求时尚,”他解释道,“它始终致力于高效完成工作,帮助工程师完成他们的工作。” 这种对实用性而非潮流的关注让 Java 受益匪浅,尤其是在软件“每次都必须正常工作”的企业环境中。
此外,Gosling 还为 Oracle 自收购 Sun Microsystems 以来对 Java 的管理打了“B+”分。“我真的很害怕他们会做什么,因为他们的过往记录就是掠夺,”他承认,“他们的表现真是让我震惊。”
虽然他希望 Java 团队能够获得更多的资金支持,但 Gosling 称赞 Oracle 使团队免受企业干预 — — “Oracle 没有惹他们” — — 这超出了他最初对失败的预期。
“我真的很害怕他们会做什么,因为他们的记录就是强奸和掠夺。他们的所作所为真是让我震惊。”
—Java 之父 James Gosling
高斯林喜欢和乐于共进晚餐的人一起工作,尤其喜欢吃螃蟹。
作者:场长
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。