计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。

有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理、操作系统、计算机网络,这些都是大学计算机课程里面最重要的内容。文章对这些内容做了提炼和总结,摒弃了作为程序员不需要掌握的知识。

目的是:

  • 帮助大家形成计算机知识的结构体系
  • 帮助大家理解计算机底层原理
  • 帮助大家在工作实践中借鉴其中的优秀设计

本篇是计算机组成原理之计算机的层次与编程语言。

历史好文:

计算机组成原理:计算机的发展历史

计算机组成原理:计算机的分类

计算机组成原理:计算机的体系与结构

欢迎关注、转发、收藏、评论

程序翻译与程序解释

计算机是无法直接理解人类语言的,它只认识01010101...这样的比特位,因此,我们需要进行程序翻译或程序解析,把人类语言翻译或解析成计算机所能理解的语言。

那么程序翻译和程序解析这两者之间有什么区别和联系呢?为了理解问题,我们引入两个语言,一个是较为高级的计算机语言——L1,另一个是较为低级的计算机语言——L0,我们接下来会使用这两个语言作为例子来理解什么是程序翻译,什么是程序解析。

程序翻译

假设我们现在使用较为高级的计算机语言L1来进行程序的逻辑描述,也就是说我们使用L1来编写程序,那么这个由L1编写的程序是怎么样执行的呢?当然了,它不是直接执行的,而是在执行的时候生成一个逻辑等价的由低级语言L0组成的程序,这个L0是计算机实际执行的语言,那么由L1生成L0这个过程,我们称之为程序翻译,用于生成L0的工具叫编译器。

程序翻译过程

程序解析

同样的,假如我们使用L1来进行程序的逻辑描述,那么这个由L1编写的程序是怎样执行的呢?为了执行L1,我们还需要使用L0实现另外一个程序,这个程序把L1程序作为输入来进行执行,每一句L1程序会在L0所实现的程序里面进行等价的转换,然后执行,这就是程序的解析,其中,使用L0实现的程序叫做解释器。

程序解释的过程

简要的总结程序翻译和程序解析:

  1. 对于前面的两个例子而言,计算机执行的指令都是L0
  2. 翻译过程生成新的L0程序,解释过程不生成新的L0程序
  3. 解释过程由L0编写的解释器去解释L1程序

理解了程序翻译和程序解释,我们来看下常见的编程语言,哪些语言是翻译型语言,哪些是解释型语言,如下图:

翻译型语言和解释型语言

对于常见的,我们还有Java和C#,它们又属于哪种语言呢?其实,严格的来说,它们既不属于翻译型语言,也不属于解释型语言,它们是属于翻译+解释型语言。

如何理解翻译+解释型语言呢?以Java程序的运行过程为例,Java程序首先会被编译器编译成JVM字节码,然后会通过解释器解释成机器码,从而被计算机执行。

计算机的层次与编程语言

按层次来划分计算机系统的话,我们可以划分成七个层次。

计算机的层次

下面逐一介绍每一层。

硬件逻辑层:主要由门电路、触发器等逻辑电路组成,属于电子工程的领域,这里就不展开介绍了。

微程序机器层:编程语言主要是微指令集,微指令所组成的微程序直接交由硬件执行,主要是由生产硬件的公司的程序员来编写的。

传统机器层:编程语言主要是CPU指令集(机器指令),和硬件是直接相关的,程序员所用机器指令编写的程序可以交由微程序直接进行解析,而这里提到的指令集,存储在CPU内部,对CPU的运算进行指导和优化,拥有指令集,CPU就可以有效地运行。我们知道,CPU的制造商分为AMD和Intel两大阵营,那么这两大厂商生产的CPU最大的区别是——指令集不同,Intel的CPU所使用的指令集不适合AMD的CPU,同样的,AMD的CPU所使用的指令集也不适合Intel。除了不同厂商以后,同一个厂商也可以生产不同指令集的CPU,即不同架构的CPU使用不同的CPU指令集。

微指令、微程序、机器指令的概念

操作系统层:操作系统,一方面,向上提供了简易的操作界面,使得用户能够容易地操作计算机;同时,向下对接了指令系统,管理硬件资源。操作系统对用户程序所使用机器的各种资源进行管理和分配,包括CPU、存储器等等,比如说,当一个用户程序需要运行的时候,首先由操作系统将其加载到内存中,这就需要操作系统首先为其分配内存空间来进行存储。再比如说,某一个程序需要使用某一个输出设备进行结果输出的时候,需要操作系统为其提供该设备的控制权。由此可见,操作系统是在软件和硬件之间的适配层。

汇编语言层:编程语言是汇编语言,汇编语言可以翻译成可直接执行的机器语言,完成这个翻译过程的程序就是汇编器。从这一层开始,它们所使用的编程语言就是人类比较容易理解的语言了。

高级语言层:编程语言就是为广大程序员所接受的高级语言,种类非常多,由几百种,常见的编程语言有Python、Java、C/C++、Golang等。

应用层:计算机针对某种用途而设计的应用,像Word、Excel等。

微机原理和计算机组成原理一样吗_计算机组成原理:计算机的层次与编程语言...相关推荐

  1. 计算机通过io接口对什么实现控制器,《微机原理与接口技术》第6章 微计算机IO接口基础.ppt...

    <微机原理与接口技术>第6章 微计算机IO接口基础.ppt 第6章 微计算机IO接口基础 2.间接I/O端口寻址方式 (1) 输入指令格式: IN AL, DX 或 IN AX, DX 指 ...

  2. 大学计算机思维导图_我学计算机,也会修电脑

    "你学啥专业?" "计算机科学." "帮我修电脑吧." "--" 现实中-- 金融专业的被问炒股 土木专业的被问装修 天 ...

  3. 计算机之发展简史、体系与结构、层次与编程语言、计算单位、编码等简介

    目录 一.计算机发展简史 1.计算机的四个发展阶段 2.微型计算机的发展历史 3.计算机的体系与结构 4.计算机的层次与编程语言 ​编辑 硬件逻辑层 微程序机器层 传统机器层 操作系统层 汇编语言层 ...

  4. 微机原理与接口耿恒山答案_微机原理与接口

    "微型计算机原理与接口技术"是我国普通高等院校计算机科学与技术.自动控制.通信工程.电气工程等专业的一门技术基础课程.编者是根据多年从事本课程的教学实践,并参照国家教育部" ...

  5. 计算机组成原理哈工大期末_浅谈计算机组成原理(三)

    1. 第二章:存储系统 通过下面的思维导图来依次分享「存储系统」里面重要知识点. 2. 第一节:存储器的结构 1. 主存储器:简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据 ...

  6. 计算机显示屏原理6,计算机之父 冯诺依曼_非冯诺依曼计算机_冯诺依曼提出的原理(6)...

    1921年,冯诺依曼通过"成熟"考试时,已被大家当作数学家了他的第一篇论文是和菲克特合写的,那时他还不到18岁麦克斯由于考虑到经济上原因,请人劝阻年方17的冯诺依曼不要专攻数学,后 ...

  7. 黄海燕 北京理工大学计算机学院,王文明_北京理工大学计算机学院

    代表性学术成果 著作: 1.王文明 编著,<计算机网络原理>21世纪全国高等理工院校计算机教材,北京大学出版社,2002 2.王文明 主编<计算机软件及应用专业系列课程模拟考试系统& ...

  8. 大学计算机思维导图_【21计算机考研】改考408+1!上海电力大学翻倍扩招,仍考数据结构!...

    燕山大学信息科学与工程学院081200 计算机科学与技术 74人085400 电子信息 110人①101 思想政治理论②201 英语一③301 数学一④408 计算机学科专业基础综合复试:C语言程序设 ...

  9. 计算机编码详解_什么是计算机编码?计算机编码的起源与操作系统是如何解码的。

    目录 前言 编码是什么? 操作系统是如何绘制编码的 编码的起源 Unicode和Utf-8的区别 什么是抽象码?它与编码的区别 Utf-8与Utf-16 目前是谁在维护编码统一性? 宽字符与窄字符的区 ...

  10. 如何计算机闲置虚拟机算法_利用闲置计算机的最佳方法

    如何计算机闲置虚拟机算法 If you leave your computer on when you are not using it, there are ways you can put you ...

最新文章

  1. Java学习笔记07--日期操作类
  2. linux 用户身份与进程权限
  3. codevs1002 搭桥
  4. 简单的基于hash和hashchange的前端路由
  5. 虚拟机如何上网以及互ping问题
  6. RDD创建及算子分类及应用
  7. 萤火虫算法matlab实现,萤火虫算法,matlab代码.doc
  8. 量子力学概论_科学网—《量子力学导论》潘必才 - 中国科大出版社的博文
  9. python酒店管理系统案例
  10. storm风暴英雄 tempo_19.4版本TempoStorm 风暴英雄天梯环境报告
  11. 360企业版退出密码
  12. 史诗级动态规划 教程 by hch
  13. php赞空间,最新QQ空间免费代码大全(赞)
  14. 【scrapy爬虫】爬取华为应用市场中所有应用的评论数据
  15. 固态硬盘、机械硬盘、手机的“内存”有三种
  16. Android Button控件字母大小写显示问题
  17. zzulioj1096c语言版答案,郑州轻工业大学oj题解(c语言)1096:水仙花数(函数专题)...
  18. windows添加右键打开cmd命令窗口
  19. MySQL中支持的字符集和排序规则
  20. 【硅谷银行】硅谷银行倒闭事件

热门文章

  1. 【Java】区分BigDecimal的toString()和toPlainString()
  2. 【Python】Matplotlib绘制极坐标雷达图
  3. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)
  4. React 16 Jest手动模拟(Manual Mocks)
  5. 【C++基金会 06】explictkeyword
  6. 选择省份时,自动显示对应省份的城市
  7. Java探索之旅(16)——异常处理
  8. 如何进入HPunix的单用户模式
  9. 有关于婚姻经济学的经典对话
  10. 如何选择高性能的数据分析工具,你需要看看数据架构的进化史!