编程珠玑番外篇-K.高级语言是怎么来的-7
编程珠玑番外篇 -K.高级语言是怎么来的-7« 4G spaces
www.1mpi.com
6 comments September 27, 2011编程珠玑番外篇 -K.高级语言是怎么来的-7
LISP语言前传 Lisp的主要设计者 John McCarthy曾经就 Lisp的发展史,专门写过一篇 History of Lisp的文章。这里介绍的历史,基本史实部分参照了 John McCarthy的这篇文章,以及同时期 MIT的关于 Lisp的技术报告。 Lisp的历史要从 IBM的神奇机器 704说起。此时是 1954年,尽管距离 1946年第一台计算机 ENIAC的出现已经八年了,商用计算机市场还仅仅起步。很早就进入计算机市场的 IBM做出了一个影响深远的决定:发布一台可以进行浮点计算的,面向科学和工程的电子计算机。这台计算机,很朴素地跟着 IBM之前发布的 701,702后,被编号成 704(不知为什么 IBM从来没公布过 703)。说 704是神奇机器,是因为这台机器在计算机科学发展史上意义重大:世界上最早的语音合成程序就是由 Bell实验室的科学家在 IBM 704上完成的。 Fortran,Lisp也是最早在 IBM 704上实现的。和当年的所有计算机一样,IBM 704是个百万美元级别的大玩具,不是一般人甚至一般大学能够买得起的。好在 IBM和大学的关系一向很紧密,在 1957年的时候,决定捐一台 704给 MIT。当时在 Dartmouth教书的 John McCarthy和在 MIT教书的 Marvin Minsky关系很好,因此这台即将到达的 704,即将成为 McCarthy的新玩具。当年部署一台计算机的周期很长,为了不让自己闲着,McCarthy决定一边等机器部署,一边研究一下如果有了这台机器,可以做点什么。当时 Minsky手里有一个 IBM的项目,内容是使用计算机证明平面几何问题。既然计算机没来不能写程序,他们就只能从抽象的层面思考问题的解决方法。这个思考的结果,是开发一套支持符号计算的 Fortran子系统。他们的基本想法是,用一系列的 FORTRAN子程序,来做逻辑推理和符号演绎。回头看,这条路的确绕开了没有 704就写不了程序的路障。因为我们只需要大致了解 Fortran能够做什么,不能做什么,无需实际 Fortran编程,就可以假想我们已经有了一系列未来可以实现的子程序,然后只要在数学上证明这些通过子程序的组合,加上自动逻辑推理,就可以证明平面几何定理。这就把一个计算机工程学问题,抽象成了一个数学问题(日后这个领域被正式划归到人工智能的学科中,但在当时这还是属于数学问题)这样,计算机没来之前,McCarthy的最终结果,是一个用 Fortran子程序做列表处理的简单系统。McCarthy的这条路很现实的做法——如果不用 Fortran而是自己写一个新的语言的编译器话,
可能需要好几年的时间。而 McCarthy当年还不是终身教授,投入到写作新语言这样旷日持久且不能保证成果的项目中去,不会对他的职业生涯有太大的正面作用。 704送到 MIT后, McCarthy带着两个研究生,将之前计划的 Fortran列表处理子程序实现了,并命名为 Fortran列表处理语言 (FLPL)。然而,因为 Fortran语言本身的限制,McCarthy对 FLPL并不满意。他在写作自动求函数导数的程序时[a],发现 FLPL的弱点集中体现在两个地方。
2 of 8
03/25/2012 09:54 AM

你可能喜欢
- 编程珠玑
- 数据结构算法面试题
- 华为笔试题
- 程序员面试题
- 算法导论
- 编程之美
- 猜数字游戏
- ASP.NET
- 算法大全-面试题-链表-栈-二叉树-数据结构166页
- 微软等公司数据结构+算法面试100题29页
- 精选微软数据结构+算法面试100题前20题43页
- 微软等数据结构+算法面试100题全部答案集锦46页
- 数据结构算法设计笔试面试题5105页
- 数据结构算法设计笔试面试题112页
- java程序员面试题基础部分3页
- java程序员面试题(基础部分)4页
- 程序员面试逻辑题解析218页
- java程序员面试题及解答9页
- C程序员面试题7页
- 程序员面试题精选59页
- 算法分析与导论37页
- 算法分析与导论27页
- 《算法导论2版》课后答案_加强版222页
- 计算机算法导论 前言3页
- 计算机算法导论 第13章58页
- 计算机算法导论 第11章60页
- 《编程之美》读书笔记(七):数独游戏解析4页
- 编程之美——微软技术面试心得》背后的故事5页
- 编程之美 1的数目13页
- 编程之美 让CPU占用率曲线听你指挥8页
- 编程之美--微软技术面试心得 瓷砖覆盖地板3页
- 编程之美练习2页
- 猜数字游戏代码(c语言)4页
- 猜数字游戏3页
- 猜数字游戏课程设计24页
- 猜数字游戏程序设计18页
- 猜数字游戏1页
- 经典猜数字游戏C代码1页
- ASP.NET网站建设实战217页
- ASP.NET开发典型模块大全(修订版)728页
- ASP.NET从入门到精通554页
- ASP.NET和AJAX简洁教程15页
- ASP.NET 常用笔试题5页
- ASP.NET常用的26个优化性能方法13页


