

APL/360 编辑本段回目录

肯尼思·艾弗森——大器晚成的科学家,APL的发明人编辑本段回目录
艾弗森1920年12月17日生于加拿大艾伯塔省的卡姆罗斯(Camrose,Alberta)。第二次世界大战期间他被应征入伍而中断学业。1946年退伍后艾弗森进入位于安大略湖畔的城市金斯顿(Kingstown)的昆士大学(Queen’s University)学习,兼修数学和物理,1950年大学毕业获得学士学位时艾弗森年已30。但他立志继续深造,进了美国哈佛大学研究生院,先后于1951年和1954年拿下了应用数学的硕士学位和博士学位。他攻读博士学位时的导师是著名的数学家和计算机科学家、在20世纪30年代末40年代初设计了世界上第一台现代的自动计算机Mark I的艾肯教授(Howard Aiken,1900—1973)。当时的IBM总裁托马斯·沃森(Thomas Watson)正是由于支持艾肯的Mark I计划而把IBM从制造商业机器的公司引向计算机产业而发展成为“蓝色巨人”的。艾弗森的博士论文课题是用计算机求解线性微分方程时如何建立经济的I/0模型,这个论文课题诱导他设计与实现了著名的程序设计语言APL(A Programming Language)。APL以现有的成熟的数学符号为基础,加入许多基于数组(array,这是APL中唯一的数据类型)的基本运算符,就可以用极少、极紧凑的语句定义非常复杂的表达式。APL的两大与众不同的特点是:
1.变量没有显式定义的类型。变量类型是由变量的具体用途确
定的,这就是APL首创的所谓“弹性数据结构”(elastic data structure)。
2.没有一般语言所常用的控制结构,如while,for,if-then-else等。这类控制结构在APL中被递归函数、数组操作及控制转移符“→”所代替(APL中的“一”相当于其他语言中的goto)。此外,APL中所有的运算符都具有相同的优先级,一律按从右到左的顺序进行计算,这也是同一般语言很不一样的。
APL从构思到实现经历了一个比较曲折和长期的过程。艾弗森在完成其博土论文的过程中就提出了APL的初稿,最初仅是为了清晰而精确地表达问题以利于书写和教学而提出的。博土论文答辩以后艾弗森留校工作,对APL进行完善与发展,并试图在计算机上实现,但一直缺乏支持和客观条件。因此艾弗森于1960年离开哈佛到IBM的沃森研究中心,在这里他说服了他的一些同事和他一起在IBM的主机上实现了APL,这已经是他提出APL以后约10年的事了。有趣的是,艾弗森实现APL的经历和他的导师艾肯实现Mark I的经历十分相似:艾肯设计出Mark工以后,也是由于在哈佛没有得到足够的支持而转向私人企业寻求支持最后与IBM签订合作协议的。
最早的APL版本采用解释方式而非编译方式,有人机交互功能,类似于台式的袖珍计算器,用起来很方便,因此在科学与工程计算,统计分析,财会等人员中很受欢迎。在程序设计语言发展的历史上,曾经出现这样一件轰动一时的大事:1969年,IBM在其总部纽约州阿尔蒙克(Armonk)举行APL大会,出乎组织者意料来了500多人,而且群情激昂,要求IBM分发APL的拷贝,使IBM措手不及。这件事后来被人们称为“进军Armonk'(march to Armonk)。虽然作为一种通用程序设计语言,总的来说它不像Fortran、Pascal、C等那样获得广泛采用,但它在早期程序设计语言的发展中起了积极的作用;此外,作为具有向量处理能力的一种语言,它也是后来对Fortran语言进行扩充,使之成为具有向量和矩阵处理能力的语言——VECTRAN(VECTORFORTRAN)的重要基础。而Fortran 90则是VECTRAN的进一步发展。由此可见APL在计算机程序设计语言发展史上的地位和功劳。
在开发APL的过程中,艾弗森还发明了一组特殊的符号以描述计算机语言的形式结构,这组特殊的符号就被叫做“艾弗森记号”(Iverson notation)。艾弗森记号中运算符特别多,能对整个数组直接进行各种各样的运算。
艾弗森在接受图灵奖后的第二年,即1980年就离开IBM,返回他的祖国,加盟多伦多的I.P.Sharp Associates公司,这家公司主要提供APL的产品和服务。1987年艾弗森从I.P.Sharp公司退休。
艾弗森的主要著作有:
《程序设计语言APL》(A programming Language,John Wiley & Sons,1962)
《初等函数》(Elementary Functions,SRA,1966)
《代数的算法处理》(Algebra:An Algorithmic Treatment,APL Pr.,1972)
《初等分析》(Elementary Analysis,APL Pr.,1976)
《自动数据处理》(Automatic Data Processing,John Wiley & Sons,1963,1969。本书是他与1999年图灵奖获得者布鲁克斯合著的)
《科学家和工程师用的APL导论》(An Introduction to APL for Sci Entists and Engineers,APL Pr.,1966)
艾弗森是在1979年10月29日于密歇根州的底特律召开的ACM年会上接受图灵奖的。艾弗森发表了题为“作为思维工具的符号”(Notation as a Tool of Thought)的长篇图灵奖演说,详细论述了APL的设计思想与特点,还给出了许多例子。演说全文刊载于Communications of ACM,1980年8月,444-465页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures The First 20 Years:1966—1985,ACM Pr.),339-390页。
