当代计算机编程语言简单梳理(附计算机硬件底层工做流程)

 

(序言)程序员

前两年就在想叩开计算机编程世界的大门,可是由于语言选择上的繁杂,最终停下了。去年看过一段时间的计算机程序运行原理和编程语言的原理,后来由于计算机语言的繁杂没有继续更深刻的了解。当时只是把计算机语言作了分类,今天(2020.10.13)在安装visual studio时候看到那么些套件,又勾起了学习心。再次了解计算机语言,也算有所收获,因此记录下来,作个简单的梳理。一开始并无准备写硬件底层运行流程,可是写到机器语言时候不得不提到控制硬件,提到控制硬件就又不得不提到硬件工做流程。后以为这个应该单独放在开头,不想了解底层的能够直接跳过该篇幅。编程

题外话:编程的目的是让编写的程序顺利执行以达到计算机替代人完成机械重复的计算,为人节省出时间以陪伴家人朋友爱人,感觉生活的美好。若是为编程而占用了和家人朋友爱人的生活时光,这样就舍本逐末了。编程语言

 

(硬件底层)性能

介绍编程语言前,先跟随博主来了解一下计算机硬件底层的工做流程:学习

操做系统启动时,北桥芯片将内存、显卡硬件参数传递给CPU,南桥芯片将其余硬件参数传递给北桥芯片再由北桥芯片传递给CPU。操做系统运行时,你们在操做计算机的每一个动做(如点击鼠标、键盘等)都将以机器语言指令的形式经由南桥芯片传递给北桥芯片再由北桥芯片传递给CPU,CPU接收到该条机器语言指令后由内部的逻辑处理与寄存器指令集对照并按指令集处理该指令,然后由CPU内部的控制处理器将被处理后的机器语言指令传递给北桥芯片,再由北桥芯片传递给显卡芯片,显卡芯片控制显示器显示最终结果。spa

这里博主再简单介绍一下CPU芯片的底层(即“半导体”):CPU芯片是硅片及硅片上刻蚀造成的众多晶体管的合称。晶体管就是半导体,半导体就等同于阻器+变压器+开关,因此你看,芯片并不神秘,只是把数量众多的电阻器、变压器、开关放在了一个小板子(硅片)上。半导体是电子科技的基石,没有半导体就没有电子科技、电子设备,今年的华为芯片事件就是由于没有掌握这种半导体制造技术(怎么把那么多电阻器、变压器、开关放到那么小的板子上)形成的。操作系统

 

(编程语言)对象

如今咱们开始介绍编程语言,首先,要区分一点,程序的编程过程和程序的执行过程是两个不一样的概念!程序编程过程是在程序员电脑上,而程序执行过程是在程序使用者电脑上。这也是为何不少小白对介绍编程基础的文章感到费解的地方。事件

计算机语言,按照可识别性分为三类:ip

机器语言(就是那种01011101010010...的超长表示方式)、汇编语言(那种sub ax,ax...的繁复的表示方式)、高级语言(那种printf ("123")的简短的表示方式)

随计算机一同产生的就是机器语言(或者说是电路通断信号更贴切),但编程过程过于繁重,遂产生了汇编语言(以英文符号表示各类电路通断集的语言),而随着编写程序愈来愈大,汇编语言仍是显得过于晦涩繁复,因而就产生了高级语言(以英文语句表示汇编指令的语言),这样编程过程变得轻松容易多了。

早期高级语言中的三大主流语言(都是面向过程的):

C语言、Pascal语言、Basic语言

C语言作系统开发,Pascal作编程教学,Basic作应用开发

当代高级语言(都支持面向对象):

C++、Java、C#、VB.NET、Python、JavaScript、PHP....

早期计算机性能低下致使运行速度慢,因面向过程的方式执行起来效率高于面向对象的方式,因此早期的高级语言都是面向过程的,而当代计算机性能已经很好了,效率不高性能来补,面向对象的语言,代码修改起来方便、代码可复用率高的优势凸显,所以就天然而然被主流高级语言所采用了。

当代计算机高级语言按照编程过程和程序执行过程可分为:

1.编译型语言:在编程过程当中,由第三方程序将高级语言代码转换成当前系统可识别的汇编语言指令,再转换成机器语言指令保存进文件;在程序执行的过程当中,操做系统读取该文件中的机器语言指令使相应的硬件动做。

2.解释型语言:在编程过程当中,将高级语言代码原样保存进文件;在程序执行的过程当中,由第三方程序读取该文件中的高级语言代码并转换成当前系统可识别的汇编语言指令,再转换成机器语言指令,操做系统读取该机器语言指令使相应的硬件动做。

3.解释编译型语言:在编程过程当中,将高级语言代码转换成第三方程序才能识别的类(似)机器语言指令并保存进文件;在程序执行过程当中,由第三方程序读取该文件中的类(似)机器语言指令,并转换成机器语言指令,操做系统读取该机器语言指令使相应的硬件动做。

很明显,在编程过程当中解释型语言效率最高、解释编译型语言效率居中、编译型语言效率最低;在程序执行过程当中编译型语言效率最高、解释编译型语言效率居中、解释型语言效率最低。

终究编写程序就是用来执行用的,因此你们更关注程序执行过程当中的效率。毫无疑问编译型语言效率最高,加上无需安装第三方程序就能直接执行,使之成了高级编程语言的首选语言类型。但编译型语言有一个缺点,那就是只能在支持该语言转换的操做系统上运行,好比你在Windows系统上用C++语言编写转换获得的exe程序,在Mac系统上就没法执行,由于Windows系统可识别的汇编语言指令和Mac系统可识别的汇编语言指令不一样,致使在Windows上转换成的机器指令没法被Mac系统识别,也就没法使相应的硬件动做了。而解释型语言和解释编译型语言却能够在不一样的操做系统中执行,缘由就是须要在当前操做系统中安装第三方程序后才能够执行它们,就是这个第三方程序在你编写的程序执行过程当中把代码直接转换成当前系统可识别的机器语言指令了。解释编译型语言在程序执行过程当中的效率又比解释型语言高,因此若是须要一段代码在全部的操做系统上都能执行,解释编译型语言则是首选。而解释型语言的最大优势就是编程过程当中效率高,随时修改随时能执行。博主本人喜欢的批处理就是解释型语言,用于对文件文件夹的操做,随时改动随时用,省去了编译的步骤,挺方便。

最后总结一下:编写的程序只在一种操做系统中执行,首选编译型语言;编写的程序要在多种操做系统中执行,首选解释编译型语言;编写的程序须要随时修改随时执行,首选解释型语言。

相关文章
相关标签/搜索