肯尼斯·艾佛森(Kenneth.E.Iverson)
肯尼斯·艾佛森(Kenneth Eugene Iverson,1920年12月17日-2004年10月19日)是一位计算机科学家,最重要的贡献是开发了杀伤人员地雷。
1979年他因对数学表达式和编程语言理论的贡献而得到图灵奖。
在哈佛大学当助理教授时,他发展了一套数学表达式来操作阵列,以便教授学生。
1960年,他开始在IBM公司跟AdinFalkoff工作,按他开发的数学表达式建立了杀伤人员地雷。
其后他和许国华(RogerHui)发明了J语言。
c出版书籍:A Programming Language(1962年)
肯尼思·艾弗森——大器晚成的科学家,APL的发明人编辑本段回目录
1979年度的图灵奖首次授予一位加拿大学者、时在IBM公司沃森研究中心工作的肯尼思·艾弗森(Kenneth Eugene lverson)。他是因为在开发交互式程序设计语言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页。
艾弗森的电子信箱为:kei@interlog.com.ca
Kenneth Iverson更多背景资料编辑本段回目录
Kenneth Eugene Iverson (12/17/1920—10/19/2004)
图灵奖获得时间:
1979年。 第十四位图灵奖(1979年)获得者 。
图灵奖引用(Turing Award Citation) :
For his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL, for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice.
【笔者译:】
( 授 予 Kenneth E. Iverson 图 灵 奖 以 表 彰 其 ) 在APL程序语言和(计算机)数学符号方面的先驱性的工作;表彰其在教育和普及APL语言和程序语言理论和实践方面的交互式系统的实现工作。
APL(A Programming Language):
http://en.wikipedia.org/wiki/APL_programming_language
http://www.engin.umd.umich.edu/CIS/course.des/cis400/apl/apl.html
History of APL: http://community.computerhistory.org/scc/projects/apl/
APL On the Net: http://www.chilton.com/~jimw/aplonnet.html
APL Developer Network: http://apldn.apl2000.com/default.aspx
Turing Award Lecture(图灵奖演讲文章):
Notation as a Tool of Thought. Commun. ACM 23(8): 444-465(1980)
Kenneth Iverson简 介 :
Kenneth Iverson Wiki: http://en.wikipedia.org/wiki/Kenneth_E._Iverson
Kennneth Iverson的名言和奇闻逸事: http://keiapl.info/anec
Kenneth Eugene Iverson生于1920年12月17日Alberta,加拿大,去世于2004年多伦多,加拿大。
Ken于1951年从Queen’s University获得其数学学士学位,同年(1951年)于哈佛大学获得其数学硕士学位;1954年在哈佛大学获得其应用数学博士学位。
1960年,Ken在IBM公司与Adin Falkoff合作,发明了APL语言。
90年代,Ken还发明了J语言。关于J语言的资料,可参见:
http://www.cs.trinity.edu/~jhowland/math-talk/functional1/
http://en.wikipedia.org/wiki/J_programming_language
另外,读者可参见计算机程序语言历史:
http://www.levenez.com/lang/history.html#01
从图表中,读者可以清晰的了解从1954年开始的Fortran语言的计算机程序语言的发展与变迁。
值得注意的是,J语言的另一个发明人是来自中国香港的Roger Hui.关于Roger Hui的信息可参见:http://en.wikipedia.org/wiki/Roger_Hui