你了解计算机系统的层次结构吗?计算机语言怎么发展的?


阶段一:机器语言

早期的计算机只有机器语言(用0、1代码表示的语言),用户必须使用二进制代码(0、1)来编写程序,即机器语言程序

  • 缺点:要求程序员对计算机硬件及其指令系统十分熟悉,编写难度十分大,操作过程容易失误

  • 优点:编写的机器语言程序可以直接再及其上运行

    image-20200908202147409


阶段二:汇编语言

20世纪50年代开始出现了用助记符编写的语言——汇编语言

  • 优点:不再用繁杂易错的二进制代码来编写程序
  • 缺点
    • 机器不能直接识别汇编语言程序,必须通过汇编程序将其翻译成机器语言
    • 汇编语言的每一条语句都与机器语言的某一条语句(0、1代码)对应,所以程序员需要对实际机器M1的内部组成和指令系统非常熟悉
    • 汇编语言没有通用性,拜托不了实际机器的指令系统,所以每台机器都有与之对应的汇编语言,使得程序员需要掌握不同机器的指令系统
image-20200908203334983

阶段三:高级语言

20世纪60年代开始出了各种面向问题的高级语言

  • 优点

    • 对问题的描述接近人们的习惯,有较强的通用性
    • 程序员完全不用了解实际机器M1的机型以及内部的组成和指令系统,只需要掌握高级语言的语法
  • 缺点

    • 计算机不能识别高级语言
    • 必须先将高级语言程序翻译成汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序
    • 也可以直接将高级语言程序直接翻译成机器语言程序
    image-20200908203247816

将高级语言翻译成机器语言程序的软件称为翻译程序,分为两种:

编译程序:将高级语言程序源程序的全部语句一次全部翻译成机器语言程序,然后再执行机器语言程序

  • 特点:只要源程序不变,就不用再次进行翻译
  • 编译型语言:C、C++

解释程序:将高级语言程序源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句并执行,如此重复直到完成源程序的全部翻译任务

  • 特点:翻译一次执行一次,即使下一次重复执行该语句时,也必须重新翻译
  • 解释性语言:Python、JavaScript、MATLAB

Java一般来说,同时具备解释性和编译性:

  • Java文件先编译成与平台无关的.class的字节码文件,这个过程就是Java的编译执行

  • .class的字节码文件可以跨平台在JVM上解释执行,JVM的翻译过程是解释性的,JVM从.class的字节码文件中读出一条指令,翻译一条指令,然后执行一条指令,这个过程就称为Java的解释执行;



后续发展

随着软件的发展,实际机器M1向上延伸构成了各级虚拟机器

同理,实际机器M1也可以向下延伸而形成下一级的微程序机器M0

  • 微程序机器M0是直接将实际机器M1中的每一条机器指令翻译成一组微指令,即构成一个微程序
  • 机器M0每执行完对应于一条机器指令的微程序后,便由机器M1中的下一条机器指令使机器M0自动进入与其相对的另一个微程序的执行
  • 微程序机器M0可以看作是对实际机器M1的分解
  • 微程序机器M0也是实际机器,为了区分M0和M1,又将M1称为传统机器,M0称为微程序机器
    image-20200908212224568

在上述四级层次结构的系统,实际上在实际机器M1和虚拟机器M2之间还有一级虚拟机器,它是由操作系统软件构成的

  • 操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的基本操作
  • 还起到控制并管理计算机系统全部硬件和软件资源的作用
    image-20200908223739301

不仅如此,虚拟机M4还可以向上延伸,构成应用语言虚拟机

  • 应用语言虚拟机专门为了使计算机满足某种用途而设计,该级语言使各种面向问题的应用语言,如:人工智能和计算机设计方面的语言
  • 应用语言编写的程序一般通过应用程序包翻译到虚拟机器M4
    image-20200908225859917

猜你喜欢

转载自blog.csdn.net/qq_45173404/article/details/108479338