• 计算机的层次与编程语言



    前言

    今天给大家介绍一下计算机的层次与编程语言,包含两个板块:程序翻译与程序解释计算机的层次与编程语言


    一、程序翻译与程序解释

    为什么要进行程序翻译和程序解释?因为人类语言和计算机语言是互不相通的,计算机能理解的语言只有 0101010…这样的二进制比特位。所以我们需要把人类语言的程序翻译或者解释为计算机能懂的语言,也就是需要进行语言之间的转换

    那程序翻译和程序解释有什么区别和联系呢?为了解释这两者的关系,我们引入两个语言:较为高级的计算机语言L1、较为低级的计算机语言L0,L1和L0是随便命名的名字。接下来就使用这两个语言给大家举例说明什么是程序翻译?什么是程序解释?

    什么是程序翻译呢?假设现在使用较为高级的计算机语言L1来编写一段程序,当然了,这个程序不是直接执行的,它是在执行的时候生成一个逻辑等价的由低级语言L0组成的程序。那么这个L0才是计算机实际执行的语言,从L1生成L0这个过程,就称之为程序翻译,负责生成过程的这个工具叫做编译器。示意图如下所示:

    在这里插入图片描述

    那什么又是程序解释呢?同样的,我们使用较为高级的计算机语言L1进行程序的逻辑描述,也就是编写一段程序,那它是怎么执行的呢?为了执行这个L1语言,我们还需要用L0语言实现另一个程序,然后这个程序把L1语言的程序作为输入来执行,每一个L1的语句都会在L0里面进行等价的逻辑转换,转换成L0并且执行。这个过程就称为程序解释,而使用L0语言实现的另外一个程序,我们就称为解释器。示意图如下所示:

    在这里插入图片描述

    简单总结下程序解释与程序翻译的区别和共同点:

    • 计算机执行的指令都是L0
    • 翻译过程生成新的L0程序,解释过程不生成新的L0程序
    • 解释过程由L0编写的解释器去解释L1程序

    目前市面上有200多种编程语言,哪些是属于翻译型语言?哪些是属于解释型语言呢?各举例一些代表性语言如下图所示:
    在这里插入图片描述
    除了上面常用的语言之外,还有两种非常常用的语言:Java和C#,那这两种属于什么呢?属于翻译+解释型

    在这里插入图片描述

    翻译+解释是怎么理解?我们以Java语言为例,对于一个Java程序要执行的时候,首先会编译为JVM字节码,这里面的编译也就是我们所指的程序翻译,接着JVM字节码还会解释成为机器码来执行。这里面有一个重要的角色:JVM虚拟机,这是Java语言所特有的一个虚拟机,平时编写Java代码都是在这个虚拟机的上层来编写的。示意图如下所示:

    在这里插入图片描述

    二、计算机的层次与编程语言

    如果按层次划分计算机的话,可以划分为7个层次:硬件逻辑层微程序机器层传统机器层操作系统层汇编语言层高级语言层应用层。这里面传统机器层、微程序机器层、硬件逻辑层属于实际机器层面,也就是跟物理设备直接相关。应用层、高级语言层、汇编语言层、操作系统层属于虚拟机器层面。在这里面,虚拟机器层面还可以分为两个部分:一个是系统软件(包括高级语言层、汇编语言层、操作系统层)、一个是应用软件(就是应用层)。示意图如下所示:

    在这里插入图片描述

    接下来介绍每一层都有哪些内容,我们从底往上看。

    1.硬件逻辑层

    • 门、触发器等逻辑电路组成
    • 属于电子工程的领域

    2.微程序机器层

    • 编程语言是微指令集
    • 微指令所组成的微程序直接交由硬件执行

    3.传统机器层

    • 编程语言是CPU指令集(机器指令)
    • 编程语言和硬件是直接相关(举个例子,目前CPU两大生产厂商是英特尔和AMD,这两个厂商所生产的CPU最大的区别是什么呢?就是指令系统不一样,也就是英特尔CPU所使用的指令集不适合AMD的CPU,同样的AMD也是如此。除了不同厂商以外,同一个厂商也可以生产不同指令集的CPU,如X86和X86-64,他们之间也是不能相互兼容的)
    • 不同架构的CPU使用不同的CPU指令集

    这里先缓缓,我们提到了三个概念:微指令微程序机器指令,这三者之间有什么关系呢?简单来说有两点:

    • 一条机器指令对应一个微程序
    • 一个微程序对应一组微指令

    也就是说微程序和机器指令是相等的关系,而微程序是大于微指令的:微指令 < 微程序 = 机器指令

    4.操作系统层

    • 向上提供了简易的操作界面
    • 向下对接了指令系统,管理硬件资源(比如某用户程序需要运行时,首先由操作系统将其调入内存中,这就需要操作系统为其分配内存空间来进行存储。再比如,某个程序需要使用输出设备进行结果输出,也是需要操作系统为其提供该设备的控制权)
    • 操作系统层是在软件和硬件之间的适配层

    5.汇编语言层

    • 编程语言是汇编语言
    • 汇编语言可以翻译成可直接执行的机器语言
    • 完成翻译的过程的程序就是汇编器
      从这一层开始,使用的编程语言都是人类容易理解的语言,举个汇编语言的例子,如下代码所示为汇编语言代码:
    PUSH DS
    PUSH AX
    MOV AX,0040
    MOV DS,AX
    
    • 1
    • 2
    • 3
    • 4

    从中可以看到我们人可以理解的语言,如 PUSH, MOV 这两个单词,PUSH 意思就是把数据放入堆栈中,MOV 意思就是把数据从一个地方移动到另外的地方。

    6.高级语言层

    • 编程语言为广大程序员所接受的高级语言
    • 高级语言的类别非常多,有两百多种
    • 常见的高级语言有:Python、Java、C/C++、Golang等

    7.应用层

    应用层其实不能算语言了,都是一些满足用户需要的特定用途而设计的程序,如office、QQ等各种软件。


    总结

    以上就是给大家介绍的所有内容,里面需要注意的是计算机的7层分层的目的是便于理解,它的分层并不是固定死的,今天的软件可能变成明天的硬件。

  • 相关阅读:
    【MM32F5270开发板试用】基于MindSDK实现水深度数据采集
    AUTOSAR规范与ECU软件开发(实践篇)10.5、Adaptive AUTOSAR平台新概念介绍
    南大通用数据库-Gbase-8a-学习-05-通过审计日志抓取Sql、Trace日志查看执行计划
    【Playwright+Python】系列教程(一)环境搭建及脚本录制
    IMX6ULL学习笔记(5)——获取和编译U-Boot
    【C++】类和对象(上)
    农产品果蔬商城交易系统(Java+Web+MySQL)
    【车载以太网测试从入门到精通】——车载以太网休眠唤醒压力测试
    ERROR Error: [copy-webpack-plugin] patterns must be an array
    计算机毕业设计ssm+vue+elementUI服装定制系统
  • 原文地址:https://blog.csdn.net/2201_75641637/article/details/133715735