No.440 第14届图灵奖、农民科学家、边种地边函授、战后去哈佛读博士、交互式编程的开创者:肯尼思·艾弗森

1979年,图灵奖授予了肯尼斯·艾佛森(Kenneth E. Iverson),他因发明了APL语言而获得这一奖项。APL(A Programming Language)是一种编程语言,以其独特的符号和强大的数组处理功能而著称。艾佛森在20世纪60年代初开发了APL,这种语言因其简洁和高效的矩阵运算能力,在数学、科学和工程等领域得到了广泛应用。

在交互式编程语言出现之前,编程主要是通过批处理系统进行的。程序员会把代码写在打孔卡或纸带上,提交给计算中心,由操作员输入到计算机中进行处理。程序运行后,结果通常会打印在纸上。如果有错误,程序员需要修改代码并重新提交,整个过程耗时长且调试困难。

交互式语言如APL的出现,彻底改变了这种方式。程序员可以直接在交互式环境中输入代码并立即看到结果,快速调试和修改。这种即时反馈大大提高了编程效率,缩短了开发和调试的周期。

在交互式编程语言出现之前,编程主要是通过批处理系统进行的。程序员会把代码写在打孔卡或纸带上,提交给计算中心,由操作员输入到计算机中进行处理。程序运行后,结果通常会打印在纸上。如果有错误,程序员需要修改代码并重新提交,整个过程耗时长且调试困难。

交互式语言如APL的出现,彻底改变了这种方式。程序员可以直接在交互式环境中输入代码并立即看到结果,快速调试和修改。这种即时反馈大大提高了编程效率,缩短了开发和调试的周期。

艾弗森出生于1920年12月17日的加拿大艾伯塔省卡姆罗斯。 艾弗森于1926年4月1日在一所单间学校开始上学,最初进入一年级,三个月后升入二年级,并于1927年6月末升入四年级。在完成九年级后,由于大萧条的影响,他离开了学校。当时家庭农场需要劳动力,而且他认为继续上学只会让他成为一名教师,而他并不想从事这个职业。

在17岁时,艾弗森虽然不再上学,但参加了芝加哥De Forest Training的无线电函授课程,并通过课本自学了微积分。在第二次世界大战期间,他服役于加拿大皇家空军,并通过函授课程获得了高中文凭。

二战期间,他参军服役,学业中断。1946年退伍后,他进入安大略湖畔的金斯敦市昆士大学学习,主修数学和物理。30岁时,他获得了学士学位。

艾弗森并没有止步于此,他立志继续深造,前往美国哈佛大学攻读研究生。 1951年,他获得了应用数学硕士学位;1954年,他获得了应用数学博士学位。他的博士导师是著名的数学家和计算机科学家霍华德·艾肯教授。艾肯教授在20世纪30年代末40年代初设计了世界上第一台现代自动计算机 Mark I。

正是因为支持了艾肯的Mark I计划,当时的IBM总裁托马斯·沃森将IBM从一家制造商业机器的公司带入了计算机产业,最终发展成为“蓝色巨人”。 艾弗森的博士论文课题是研究如何使用计算机求解线性微分方程,并建立经济的 I/O 模型。这个课题最终引导他设计并实现了著名的程序设计语言 APL(A Programming Language)。APL 语言以现有的成熟数学符号为基础,并加入了许多基于数组的基本运算符(数组是 APL 中唯一的数据类型)。因此,只需使用极少、极紧凑的语句,就可以定义非常复杂的表达式。

APL 语言有两大与众不同的特点:

1. 变量类型自动推断:

与其他编程语言不同,APL 中的变量无需显式定义类型。变量的类型会根据其在程序中的实际用途自动推断。这使得 APL 更加灵活易用,也体现了其 “弹性数据结构”(elastic data structure)的特点。

2. 简洁的控制流程:

APL 中没有通常意义上的控制结构,例如 while 循环、for 循环、if-then-else 语句等。取而代之的是递归函数、数组操作和控制转移符 “→”(相当于其他语言中的 goto)。此外,APL 中的所有运算符都具有相同的优先级,并遵循从右到左的计算顺序,这也是其与其他语言的重要区别。

APL 的诞生并非一帆风顺,经历了一个漫长的曲折过程。 艾弗森在攻读博士学位期间就提出了 APL 的雏形,最初只是为了在书写和教学中更清晰、更精确地表达问题。博士论文答辩后,艾弗森留校工作,致力于完善和发展 APL,并试图在计算机上实现,但苦于缺乏支持和客观条件。1960 年,艾弗森离开哈佛,加入了 IBM 的沃森研究中心。艾弗森在哈佛呆了五年,但未能获得终身教职,原因是他不出版任何东西。

在IBM沃森研究中心里,他终于与同事们合作,在 IBM 的大型主机上实现了 APL,这已经是 APL 诞生后的十年了。有趣的是,艾弗森实现 APL 的经历与他的导师艾肯实现 Mark I 的经历颇为相似:艾肯设计出 Mark I 后,也因在哈佛无法获得足够的支持,最终转向私人企业寻求帮助,并与 IBM 签订了合作协议。

最早的 APL 版本采用解释方式而非编译方式, 类似于台式的袖珍计算器,具有便捷的人机交互功能。因此,它在科学与工程计算、统计分析、财会等领域深受用户喜爱。

1969 年,IBM 在纽约州阿尔蒙克举行了一场 APL 大会。 大会原本预计只来几百人,但最终竟吸引了 500 多名热情的参与者。他们强烈要求 IBM 发布 APL 的副本,令 IBM 措手不及。这件轰动一时的事件后来被人们称为“进军阿尔蒙克”(march to Armonk)。

虽然 APL 作为通用编程语言的普及程度不如 Fortran、Pascal、C 等语言,但它在早期程序设计语言的发展中发挥了重要作用。 此外,APL 具有强大的向量处理能力,为后来 Fortran 语言的扩充奠定了基础,使其成为具有向量和矩阵处理能力的语言 VECTRAN。而 Fortran 90 则是 VECTRAN 的进一步发展。由此可见,APL 在计算机程序设计语言发展史上的地位和功劳不容忽视。

艾弗森是在1979年10月29日于密歇根州的底特律召开的ACM年会上接受图灵奖的。艾弗森发表了题为“作为思维工具的符号”(Notation as a Tool of Thought)的长篇图灵奖演说,详细论述了APL的设计思想与特点,还给出了许多例子。

2004 年 10 月 16 日,艾弗森在实验室的电脑前工作时中风 ,并于 2004 年 10 月 19 日在多伦多去世,享年 83 岁。

0 0 投票数
文章评分
订阅评论
提醒

2 评论
最旧
最新 最多投票
内联反馈
查看所有评论
pix
6 月 前

栋哥,你发布的视频可不可以在这个在这个网站也同时发布个连接,或者汇总链接贴子,这样大家只看你这一个站点就知道你又发布了哪些内容。比如b站的视频,我也经常刷到你更新

2
0
希望看到您的想法,请您发表评论x
滚动至顶部