计算机的层次与编程语言

news2025/1/17 1:15:06

文章目录

  • 前言
  • 一、程序翻译与程序解释
  • 二、计算机的层次与编程语言
    • 1.硬件逻辑层
    • 2.微程序机器层
    • 3.传统机器层
    • 4.操作系统层
    • 5.汇编语言层
    • 6.高级语言层
    • 7.应用层
  • 总结


前言

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


一、程序翻译与程序解释

为什么要进行程序翻译和程序解释?因为人类语言和计算机语言是互不相通的,计算机能理解的语言只有 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

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

6.高级语言层

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

7.应用层

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


总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue + moment 实现自定义日历

moment moment是一个js工具库&#xff0c;这个库中封装的是日期时间的方法&#xff0c;功能很全面。可以去moment官网看看&#xff0c;它的中文文档介绍的也很详细&#xff0c;主要是看一下方法的使用。附上官网地址&#xff1a;添加链接描述 日历案例 日历的逻辑&#xff1a;…

servlet基础知识

目录 什么是servlet概念/定义作用 servlet容器概念/是什么作用如何配置和管理 servlet生命周期有哪些生命周期每个周期中可以执行哪些操作 创建和编写servlet如何创建一个简单的servletservlet类的结构是什么样的如何处理HTTP请求和响应 servlet映射和URL模式什么是servlet映射…

Unity2017适配安卓12

测试版本为Unity2017.4.25f1 1.在自定义AndroidManifest.xml&#xff08;位于Assets\Plugins\Android\&#xff09;中添加android:exported"true" <?xml version"1.0" encoding"utf-8"?> <manifestxmlns:android"http://schema…

现在学网络安全主要是实战还是打CTF?

当然是实战了!!! 现在的CTF题目是基本不贴近实战的&#xff0c;逻辑结构并不合理&#xff0c;而且出题手十有八九是学生&#xff0c;并没有从教育出发的意义&#xff0c;只是比赛、竞技。 如果说你未来要从事网络安全行业的话肯定是以实战为主的&#xff01;企业在招聘时更多…

如何基于先进视频技术,构建互联网视频监控安全管理平台解决方案

一、建设思路 依托互联网&#xff0c;建设一朵云&#xff0c;实现各类二三类视频资源统一接入&#xff0c;实现天网最后100米、10米、1米的全域覆盖。 依托人工智能与互联网技术&#xff0c;拓展视频资源在政府、社会面等多领域的全面应用&#xff1b;建设与运营模式并存&…

《向量数据库指南》——押注向量数据库 挑战颇多

押注向量数据库 挑战颇多 作为今年以来的热门技术赛道,向量数据库已吸引了大量厂商和创业团队入场,先发者与后来者,老牌厂商与新生力量之间的竞争正在持续升温。 但值得注意的是,向量数据库真的值得厂商全力投入吗? 在《为什么你不应该投资向量数据库?》一文中,吴英骏…

3DEXPERIENCE® SOLIDWORKS® 新功能

先前版本的兼容性 优点 即使其他用户正在使用旧版 SOLIDWORKS&#xff0c;也能轻松与其 协作。 • 通过将您的 3DEXPERIENCE SOLIDWORKS 设计作品保存为旧 版本&#xff0c;与使用旧版本的供应商无缝协作。 • 将零件、装配体和工程图保存为最新版本前两年之内的 3DEXPERIENC…

仿真软件Proteus8.9 SP2 Pro 下载、安装、汉化详细图文教程

Proteus8.9 安装教程 视频教程一、安装软件解压二、软件安装常见问题及解决方法&#xff1a;三、汉化 Proteus8.9 SP2 Pro 安装教程 本破解教程仅供个人及 proteus 8.9粉丝们交流学习之用&#xff0c;请勿用于商业用途&#xff0c; 谢谢支持。此版本为Proteus8.9 SP2 Pro。其他…

Httpd(一)

介绍 httpd是apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程&#xff0c;它会建立一个处理请求的子进程或线程的池。 特性 高度模块化&#xff1a;core modules DSO&#xff1a;Dynamic Shared Object 动态加载/卸载 MPM&#xff1a;multi-p…

TCP/IP(八)TCP的连接管理(五)四次握手

一 tcp连接断开 每一个TCP报文的超时重传都由一个特定的内核参数来控制 ① 四次握手的过程 遗留&#xff1a; 谁先发送FIN包,一定是client吗? --> upload和download补充&#xff1a; 主动和被动断开连接的场景 "四次握手过程描述" F --> FIN --> F…

LeetCode-144-二叉树的前序遍历

题目描述&#xff1a; 题目链接&#xff1a;LeetCode-144-二叉树的前序遍历 递归法 解题思路&#xff1a; 方法一&#xff1a;递归。 要先清楚前序遍历的顺序&#xff1a;先根节点&#xff0c;再左子树&#xff0c;再右子树。 然后是递归三部曲&#xff1a; 确定递归函数的参数…

香港硬防服务器的防御有什么优缺点?

​  在选择服务器时&#xff0c;安全性是一个重要的考虑因素。而对于那些需要高级防御功能的用户来说&#xff0c;香港硬防服务器可能是一个不错的选择。它也有一些优缺点需要考虑。 香港硬防服务器优点&#xff1a; 强大的硬件资源&#xff1a;香港硬防服务器拥有足够的硬件…

Session共享问题

出现这个问题的原因&#xff0c;从根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产生的数据不会被保留下来&#xff0c;所以第⼆次请求服务端无法认识到你曾经来过&#xff0c; Http为什么要设计为无状态协议&#xff1f;早期都是静态页面无所谓有无状态…

初识华为云数据库GaussDB for openGauss

01 前言 GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力&#xff0c;同时支持分布式事务&#xff0c;同城跨AZ部署&#xff0c;数据0丢失&#xff0c;支持1000的扩展能力&#xff0c;PB级海量存储。同时拥有云上高可用&#xff0c;高可…

【大数据】HBase入门指南

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 HBase特性Hadoop的限制基本概念NameSpaceTableRowKeyColumnTimeStampCell 存储结构HBase 数据访问形式架构体系HBase组件HBase读写流程读流程写流程 MemStore Flush参数说明 StoreFile Compaction参数说明触…

httprunnet自动化测试实战

引言 自动化测试是指使用软件工具、脚本或编程来执行测试任务&#xff0c;以代替人工执行测试用例的过程。它使用自动化工具和技术来模拟用户操作&#xff0c;验证和评估软件应用程序的功能、性能和稳定性。 自动化测试的主要目的是提高测试效率和质量&#xff0c;它具有以下几…

记一次python 正则表达式

1 正则一般用到的所有字符&#xff0c;具体每个字符的用法自行百度 2 案例&#xff0c;理解了这个案例基本上没问题了&#xff0c;4种格式的字符串&#xff0c;都能提取生日信息 import reline "xxx出生于2001年6月1日" line "xxx出生于2001/6/1" line…

C语言,低洼地问题

最简单的低洼地的特征是前边下坡后边上坡。即三个数&#xff0c;第一个数比第二个数大&#xff0c;第二个数比第三个数小。 但是也有两种特殊情况&#xff1a; 第一种&#xff0c;就是图中序号3的那个低洼地&#xff0c;先下坡再平坡然后又是上坡&#xff0c;这里也算一个低洼…

计算机毕业设计选什么题目好?springboot 大学餐厅菜品推荐和点评系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

element树形控件编辑节点组装节点

需求功能&#xff1a; 编辑树节点&#xff0c;组装节点 <el-scrollbar class"scrollbar-wrapper"><el-tree :data"nodeList" ref"tree" :props"defaultProps" :expand-on-click-node"false"><template slot…