1352
1万
4万
版主
Wegner根据语言的功能和产生的时间,将一些流行的高级语言进行了分类。
第一代 (1954-1958)Fortran IAlgol 58FlowmaticIPL V 第二代 (1959-1961)Fortran IIAlgol 60CobolLisp 第三代 (1962-1970)PL/1Algol 68PascalSimula 代沟 (1970-1980)CFortran 77 面向对象 近代 (1980-1990)Smalltalk 80C++Ada83Eiffel 框架出现 (1990-)VBJavaPythonJ2EE.NET
使用特权
我们看看各代的拓扑结构,所谓拓扑指的是采用该语言开发后的基本物理构成单元,以及各部分是如何连接的。
4749861ad6dfb75868.png (20.86 KB )
下载附件
2021-12-6 09:57 上传
这些语言编写出的程序体现出相对较平的物理结构,只包含全局数据(全局变量)和子程序(函数)。
箭头表明子程序对全局数据的依赖。设计时应该将逻辑上不同功能的全局数据分开,但语言却没有任何机制强制确保分开。由于全局数据对所有子程序都是可见的,因此某个不相干的子程序修改了另一个功能的全局数据就会带来意想不到的bug,甚至灾难。
3143461ad6e318749d.png (26.94 KB )
2021-12-6 09:58 上传
基本结构和第一代差不多,但子程序更进一步了。子程序在1950年就发明了,作为一种抽象那时却没有被完全接受。到了第二代,子程序被认为是抽象程序功能的一种主要方式。
此时子程序发生了一些变化,改进:
出现了结构化程序设计,利用子程序作为基本构建块,为试图构建大型系统提供了指导。
6173561ad6fd37261e.png (34.22 KB )
2021-12-6 10:05 上传
与第二代相比,此时出现了模块,模块中包括数据和子程序,功能按模块分组,各模块中数据互不干扰。
虽然有模块的概念,但模块却很少被认为是一种重要的抽象机制,实践中它们只是用于对最有可能同时改变的子程序分组而已。
9462961ad707a87fca.png (29.93 KB )
2021-12-6 10:07 上传
数据抽象对于把握复杂性是很重要的,抽象数据类型到类型概念理论的出现导致基于对象和面向对象语言的诞生。
从Pascal,Simula再到完全面向对象的Smalltalk。这些语言的构建块是模块,逻辑上是一组类或对象,而不是早期的子程序。基于对象或面向对象语言的应用程序表现为一个图,而不是面向算法(过程)语言那样通常是一棵树。此外,很少或基本没用有全局数据(变量)。
发表回复 本版积分规则 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
12436
53
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号