计算机基础方面的知识,对于一些非科班出身的同窗来说,一直是他们心中的痛,而对于科班出身的同窗,不少同窗在工做以后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程不少,内容繁杂,但不管是相关书籍仍是大学课程,都有点脱离工做。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。程序员
有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理、操做系统、计算机网络,这些都是大学计算机课程里面最重要的内容。文章对这些内容作了提炼和总结,摒弃了做为程序员不须要掌握的知识。编程
目的是:网络
本篇是计算机组成原理之计算机的层次与编程语言。架构
欢迎关注、转发、收藏、评论编程语言
计算机是没法直接理解人类语言的,它只认识01010101...这样的比特位,所以,咱们须要进行程序翻译或程序解析,把人类语言翻译或解析成计算机所能理解的语言。工具
那么程序翻译和程序解析这二者之间有什么区别和联系呢?为了理解问题,咱们引入两个语言,一个是较为高级的计算机语言——L1,另外一个是较为低级的计算机语言——L0,咱们接下来会使用这两个语言做为例子来理解什么是程序翻译,什么是程序解析。学习
程序翻译优化
假设咱们如今使用较为高级的计算机语言L1来进行程序的逻辑描述,也就是说咱们使用L1来编写程序,那么这个由L1编写的程序是怎么样执行的呢?固然了,它不是直接执行的,而是在执行的时候生成一个逻辑等价的由低级语言L0组成的程序,这个L0是计算机实际执行的语言,那么由L1生成L0这个过程,咱们称之为程序翻译,用于生成L0的工具叫编译器。操作系统
程序解析计算机网络
一样的,假如咱们使用L1来进行程序的逻辑描述,那么这个由L1编写的程序是怎样执行的呢?为了执行L1,咱们还须要使用L0实现另一个程序,这个程序把L1程序做为输入来进行执行,每一句L1程序会在L0所实现的程序里面进行等价的转换,而后执行,这就是程序的解析,其中,使用L0实现的程序叫作解释器。
简要的总结程序翻译和程序解析:
理解了程序翻译和程序解释,咱们来看下常见的编程语言,哪些语言是翻译型语言,哪些是解释型语言,以下图:
对于常见的,咱们还有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等。