编程语言发展史
所属分类 CS
浏览量 821
机器语言 汇编语言 高级语言
冯•诺依曼 计算机 体系
提出两大改进理论
其一是电子计算机应该以二进制为运算基础
其二是电子计算机应采用存储程序方式工作
并且进一步明确指出了整个计算机的结构应由五个部分组成
运算器 控制器 存储器 输入 输出
第一代 机器语言 (machine language)
机器语言是微处理器理解和使用的,用于控制它的操作二进制代码
8086到Pentium的机器语言指令长度可以从1字节到13字节
尽管机器语言好像是很复杂的,然而它是有规律的
存在着多至100000种机器语言的指令
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器
000000010000 代表地址为 16 的存储器
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
命令
0000 代表 加载(LOAD)
0001 代表 存储(STORE)
优点和缺点
优点:直接执行,速度快,资源占用少
缺点:可读性、可移植性差,编程繁杂
总结
机器语言由数字组成所有指令
使用数字编程,写几百个数字、甚至几千个数字,每天面对的是纯数字
第二代 汇编语言(面向机器的程序设计语言)
机器相关性
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的
因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言
使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序
高速度和高效率
汇编语言保持了机器语言的优点,具有直接和简捷的特点,
可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等
且占用内存少,执行速度快,是高效的程序设计语言
编写和调试的复杂性
由于是直接控制硬件,简单的任务也需要很多汇编语言语句
因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源
优点
1. 因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
2. 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。
缺点
1. 汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性;
2. 难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试;
3. 使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。
常用的命令
这部分指令用于执行算术和逻辑运算
包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。
总结
汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。
另一个复杂的问题,汇编语言以及早期的计算机语言( Basic. Fortran等 )没有考虑结构化设计原则,而是使用goto语句来作为程序流程控制的主要方法。
这样做的后果是:一大堆混乱的调转语句使得程序很难读懂
对于那个时代的程序员,能读懂上个月自己写的代码都成为一种挑战。
汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
第三代 高级语言(High-level programming language )
高级语言介绍
计算机语言具有高级语言和低级语言之分。
而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。
编写的程序称之为源程序。
高级语言并不是语言
高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。
程序设计语言的类型:
1. 命令式语言。这种语言的语义基础是模拟“数据存储/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖语句或命令产生的副作用。现代流行的大多数语言都是这一类型,比如 Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C# 等,各种脚本语言也被看作是此种类型。
2. 函数式语言。这种语言的语义基础是基于数学函数概念的值映射的λ算子可计算模型。这种语言非常适合于进行人工智能等工作的计算。典型的函数式语言如 Lisp、Haskell、ML、Scheme 、F#等。
3. 逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现中。最著名的逻辑式语言是 Prolog。
4. 面向对象语言。现代语言中的大多数都提供面向对象的支持,但有些语言是直接建立在面向对象基本模型上的,语言的语法形式的语义就是基本对象操作。主要的纯面向对象语言是 Smalltalk。
虽然各种语言属于不同的类型,但它们各自都不同程度地对其他类型的运算模式有所支持。
高级语言带来好处
1. 高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
2. 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
3. 高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
4. 由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
总结
高级语言的出现,尤其是面向对象语言的出现,相当于人类的工业社会,
高级语言极其易用,编程门槛和难度大大降低,大量的人员进入软件开发行业,为软件爆发性的增长提供了充足的人力资源。
目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段
上一篇
下一篇
java二维数组
eclipse 使用空格缩进
数据结构二元组
LLVM简介
数据结构中的各种树
树的定义和术语