第二章 历史

2.1 早期历史:第一位程序员

早在19世纪初,Jacquard 的纺织机器就可以将卡片模式自动转换成布料的花样设计。
20世纪40年代末, 冯 · 诺依曼 领导的小组发明了第一台计算机,它包含  存储程序 和  能执行用户指令 的  中央处理器
完全用于计算的第一台计算机是 巴贝奇(Babbage)于1830年到1840年发明的。 数据操作的一系列 卡片构成了巴贝奇分析机的程序。
虽然该机器没有完全建成,但它却能执行由诗人拜伦的女儿   Ada 设计的数个计算实例,因此Ada被公认是 第一个程序员
Ada对计算机概念的理解:
“通过把通用符号组织成序列,可建立事物上的操作与数学中的抽象思维过程间的紧密联系,由此可研制出一种新的、大型的、强有力的语言供分析机使用,通过掌握其原理可使这一切更快捷、更精确、更实用,因此可向人类提供一种通用工具而不是给出已知的局限方法。”
“不熟悉数学的人会认为由于运行机器所产生的结果是数值结果,因此处理机的最终特征应归于算术和数值,而不是代数和分析,其实这是个错误的理解。机器完全可以如同精确处理数值那样对字母和任何别的通用符号进行排列组合,按预先的设计形成代数意义上的结果。”

2.2 20世纪50年代:第一种程序设计语言

机器语言--->汇编语言--->FORTRAN、COBOL、Algol、LISP、ALP
     (低级语言)                    (高级语言)

FORTRAN(FORmula TRANslation,公式转换)
世界第一个高级程序语言;为 科学计算 而设计的;
目前,FORTRAN及其变种在 科学应用领域 仍然有着重要的影响。
其之所以能够长期存在的部分原因是它的编译程序效率高,能够生成高速运行的代码。
特性:数组,由索引变量控制的循环结构,if分支语句;

COBOL(公共的面向商业语言)
被银行和企业界用于 大规模数据的保存 和 其他商业应用。
特性:用于组织数据的记录结构;
          数据结构部分与程序执行部分的分离;
          采用“pictures”或所希望的输出格式的实例使输出格式通用化(目前仍应用于数据库语言中)

Algol 60
用于  科学研究 和实际应用的通用程序设计语言,该语言支持  算法描述。但除了学术界很少有人使用该语言。
目前流行的大多数命令式语言,如Pascal,C和Ada等均是Algol派生出来的。
特性:引入很多新的概念——自由格式、结构化语句、begin-end块、变量类型说明、递归、传值参数等;
          它给 块结构语言 引进的 基于栈的运行时间环境,时至今日仍是实现该语言的重要方法。
          是第一个采用 Backus-Naur范式(BNF) 进行 语法定义 的语言

FORTRAN、COBOL、Algol 60这三种语言是基于 冯·诺依曼计算机体系结构 标准创建的,而其他语言则是在 数学函数 的基础上开发的,如 LISP 和 APL 语言。

LISP(表处理器)
基于  通用表结构 及  函数应用 的语言。LISP及其很多变形仍然应用于  人工智能领域
特性:LISP基于 统一的数据结构,S表达式,使用基本的计算概念,即 函数应用
          LISP提倡了  计算 和 环境 的通用概念,引进了 垃圾回收,或  无用内存回收机制,作为  维护程序运行期存储分配 的一种方法。
          但LISP的计算原理  不同于 通常的冯 · 诺依曼结构,因此不能有效地运行与现代计算机体系结构之上。但是,不签已有专门为运行LISP程序        而设计研发的机器,并且已有许多采用LISP语言编写的实际的  决策支持系统
          几乎所有程序语言的  递归特性 都源于LISP。

ALP
处理 数组 和 矩阵 等数学计算的程序设计语言。
采用 函数式风格,具有大运算符集,大多数循环都可完全自动执行。


2.3 20世纪60年代:程序语言的迅猛发展

ISWIM
BASIC:增加了结构化控制机制,变量声明和过程处理

2.4 20世纪70年代:简单性、抽象性、语言研究

Pascal、CLU、Euclid、Mesa

C程序设计语言(中级程序设计语言)
保留了 面向表达式 的语言定位但进行了一些限制,简化了类型系统和运行环境的复杂性,提供了更多 访问底层机器 的途径。
与 UNIX操作系统 相关,流动性和可移植性

2.5 20世纪80年代:程序设计的新方向和面向对象语言的产生

面向对象语言——Smalltalk、C++
Smalltalk: 使用了具有  图形窗口系统 及 鼠标  的个人计算机 、使用不常用记号、执行效率较低
C++: 最早被称为“含类库的C”

函数式程序设计范例及其语言—— Scheme 、ML

2.6 20世纪90年代:稳定发展,Internet,库及脚本语言

Java: 面向对象语言, 具有  结构简单、设计简洁、移植性好,包含支持窗口、网络和并发特性的类库等等的特性
Haskell、ML、Miranda均是函数式语言。
库----把建立一个 强有力的、按不同系统独立实现、并能很好集成在语言中的库 作为程序设计语言的核心问题
库的重要性促使了 脚本语言 的出现及重要性的提高。包括AWK,Perl, Tcl, Javascript, Rexx 和 Python.
脚本语言的典型特点是 程序简洁,动态性高,内部嵌有高级数据结构,语法可扩展。 缺点是缺少类型检查功能。
Javascript 是另一种嵌入式脚本语言,与Java关系并不密切,主要用于在网页中嵌入动态动作(客户端)。
Visual Basic 也是脚本语言,包括三部分:程序设计语言,脚本语言和可视化的Windows开发环境。

2.7 未来的方向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值