天天看点

计算机语言的发展史语言的发展历史

语言的发展历史

计算机语言的发展 总体分三个阶段

第一代 机器语言	(相当于人类的原始阶段)
第二代 汇编语言	(相当于人类的手工业阶段)
第三代 高级语言	(相当于人类的工业阶段)
           

开篇:记住一个人 冯•诺依曼 ,此人为 计算机语言做出杰出的贡献

数学家冯•诺依曼提出了重大的改进理论,主要有两点:其一是电子计算机应该以二进制为运算基础,其二是电子计算机应采用存储程序方式工作,并且进一步明确指出了整个计算机的结构应由五个部分组成:运算器、控制器、存储器、输入装置和输出装置。冯•诺依曼的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的作用。直至今天,绝大部分的计算机还是采用冯•诺依曼方式工作。

第一代 机器语言 (machine language)

  1. 机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。

    8086到Pentium的机器语言指令长度可以从1字节到13字节。

    尽管机器语言好像是很复杂的,然而它是有规律的。

    存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。

  2. 下面是一些常用的表达式:

    000000000000 代表地址为 0 的存储器

    000000000001 代表地址为 1 的存储器

    000000010000 代表地址为 16 的存储器

    集成

    0000,0000,000000010000 代表 LOAD A, 16

    0000,0001,000000000001 代表 LOAD B, 1

    命令

    0000 代表 加载(LOAD)

    0001 代表 存储(STORE)

  3. 优点和缺点

    优点:直接执行,速度快,资源占用少

    缺点:可读性、可移植性差,编程繁杂

  4. 总结

    机器语言由数字组成所有指令。当让你使用数字编程,写几百个数字、甚至几千个数字,每天面对

    的是纯数字,我大胆预测:”程序员群体100%会 有精神问题”。

第二代 汇编语言(面向机器的程序设计语言)

  1. 机器相关性

    这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

  2. 高速度和高效率

    汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。

  3. 编写和调试的复杂性

    由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。

  4. 优点和缺点

    优点

    1. 因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。

    2. 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。

    缺点

    1. 汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性;

    2. 难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试;

    3. 使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。

  5. 常用的命令

    这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。

  6. 总结

    汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。另一个复杂的问

    题,汇编语言以及早期的计算机语言( Basic. Fortran等 )没有考虑结构化设计原则,而是使用goto语句来作为程序流程控制的主要方法。这样做的后果是:一大堆混乱的调转语 句使得程序几乎不可能

    被读懂。对于那个时代的程序员,能读懂上个月自己写的代码都成为一种挑战。

    汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。

想了解更多的汇编语言,点击.

第三代 高级语言(High-level programming language )

  1. 高级语言介绍

    计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。

  2. 高级语言并不是语言

    高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。

  3. 程序设计语言的类型:

    1. 命令式语言。这种语言的语义基础是模拟“数据存储/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖语句或命令产生的副作用。现代流行的大多数语言都是这一类型,比如 Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C# 等,各种脚本语言也被看作是此种类型。

    2. 函数式语言。这种语言的语义基础是基于数学函数概念的值映射的λ算子可计算模型。这种语言非常适合于进行人工智能等工作的计算。典型的函数式语言如 Lisp、Haskell、ML、Scheme 、F#等。

    3. 逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现中。最著名的逻辑式语言是 Prolog。

    4. 面向对象语言。现代语言中的大多数都提供面向对象的支持,但有些语言是直接建立在面向对象基本模型上的,语言的语法形式的语义就是基本对象操作。主要的纯面向对象语言是 Smalltalk。

    虽然各种语言属于不同的类型,但它们各自都不同程度地对其他类型的运算模式有所支持。

  4. 高级语言带来好处

    1. 高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;

    2. 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;

    3. 高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;

    4. 由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。

  5. 总结

    高级语言的出现,尤其是面向对象语言的出现,相当于人类的工业社会,高级语言极其易用,编程

    门槛和难度大大降低,大量的人员进入软件开发行业,为软件爆发性的增长提供了充足的人力资源。

    目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段。

继续阅读