当代计算机编程语⾔简单梳理(附计算机硬件底层⼯作流程)
(序⾔)
前两年就在想叩开计算机编程世界的⼤门,但是因为语⾔选择上的繁杂,最终停下了。去年看过⼀段时间的计算机程序运⾏原理和编程语⾔的原理,后来因为计算机语⾔的繁杂没有继续更深⼊的了解。当时只是把计算机语⾔做了分类,今天(2020.10.13)在安装visual studio时候看到那么些套件,⼜勾起了学习⼼。再次了解计算机语⾔,也算有所收获,所以记录下来,做个简单的梳理。⼀开始并没有准备写硬件底层运⾏流程,但是写到机器语⾔时候不得不提到控制硬件,提到控制硬件就⼜不得不提到硬件⼯作流程。后觉得这个应该单独放在开头,不想了解底层的可以直接跳过该篇幅。
题外话:编程的⽬的是让编写的程序顺利执⾏以达到计算机替代⼈完成机械重复的计算,为⼈节省出时间以陪伴家⼈朋友爱⼈,感受⽣活的美好。如果为编程⽽占⽤了和家⼈朋友爱⼈的⽣活时光,这样就舍本逐末了。
潘玮柏 杨丞琳(硬件底层)
介绍编程语⾔前,先跟随博主来了解⼀下计算机硬件底层的⼯作流程:
操作系统启动时,北桥芯⽚将内存、显卡硬件参数传递给CPU,南桥芯⽚将其他硬件参数传递给北桥芯
⽚再由北桥芯⽚传递给CPU。操作系统运⾏时,⼤家在操作计算机的每个动作(如点击⿏标、键盘等)都将以机器语⾔指令的形式经由南桥芯⽚传递给北桥芯⽚再由北桥芯⽚传递给CPU,CPU接收到该条机器语⾔指令后由内部的逻辑处理与寄存器指令集对照并按指令集处理该指令,⽽后由CPU内部的控制处理器将被处理后的机器语⾔指令传递给北桥芯⽚,再由北桥芯⽚传递给显卡芯⽚,显卡芯⽚控制显⽰器显⽰最终结果。
这⾥博主再简单介绍⼀下CPU芯⽚的底层(即“半导体”):CPU芯⽚是硅⽚及硅⽚上刻蚀形成的众多晶体管的合称。晶体管就是半导体,半导体就等同于阻器+变压器+开关,所以你看,芯⽚并不神秘,只是把数量众多的电阻器、变压器、开关放在了⼀个⼩板⼦(硅⽚)上。半导体是电⼦科技的基⽯,没有半导体就没有电⼦科技、电⼦设备,今年的华为芯⽚事件就是因为没有掌握这种半导体制造技术(怎么把那么多电阻器、变压器、开关放到那么⼩的板⼦上)造成的。
(编程语⾔)
现在我们开始介绍编程语⾔,⾸先,要区分⼀点,程序的编程过程和程序的执⾏过程是两个不同的概念!程序编程过程是在程序员电脑上,⽽程序执⾏过程是在程序使⽤者电脑上。这也是为什么很多⼩⽩对介绍编程基础的⽂章感到费解的地⽅。
计算机语⾔,按照可识别性分为三类:
刘文正个人资料机器语⾔(就是那种的超长表⽰⽅式)、汇编语⾔(那种sub 的繁复的表⽰⽅式)、⾼级语⾔(那怎样删除浏览历史记录
种printf ("123")的简短的表⽰⽅式)
随计算机⼀同产⽣的就是机器语⾔(或者说是电路通断信号更贴切),但编程过程过于繁重,遂产⽣了汇编语⾔(以英⽂符号表⽰各种电路通断集的语⾔),⽽随着编写程序越来越⼤,汇编语⾔还是显得过于晦涩繁复,于是就产⽣了⾼级语⾔(以英⽂语句表⽰汇编指令的语⾔),这样编程过程变得轻松容易多了。
早期⾼级语⾔中的三⼤主流语⾔(都是⾯向过程的):
C语⾔、Pascal语⾔、Basic语⾔赫子铭出轨
C语⾔做系统开发,Pascal做编程教学,Basic做应⽤开发
当代⾼级语⾔(都⽀持⾯向对象):
C++、Java、C#、VB.NET、Python、JavaScript、
早期计算机性能低下导致运⾏速度慢,因⾯向过程的⽅式执⾏起来效率⾼于⾯向对象的⽅式,所以早期的⾼级语⾔都是⾯向过程的,⽽当代计算机性能已经很好了,效率不⾼性能来补,⾯向对象的语⾔,代码修改起来⽅便、代码可复⽤率⾼的优点凸显,因此就⾃然⽽然被主流⾼级语⾔所采⽤了。上海车管所
当代计算机⾼级语⾔按照编程过程和程序执⾏过程可分为:
1.编译型语⾔:在编程过程中,由第三⽅程序将⾼级语⾔代码转换成当前系统可识别的汇编语⾔指令,再转换成机器语⾔指令保存进⽂件;在程序执⾏的过程中,操作系统读取该⽂件中的机器语⾔指令使相应的硬件动作。
2.解释型语⾔:在编程过程中,将⾼级语⾔代码原样保存进⽂件;在程序执⾏的过程中,由第三⽅程序读取该⽂件中的⾼级语⾔代码并转换成当前系统可识别的汇编语⾔指令,再转换成机器语⾔指令,操作系统读取该机器语⾔指令使相应的硬件动作。
3.解释编译型语⾔:在编程过程中,将⾼级语⾔代码转换成第三⽅程序才能识别的类(似)机器语⾔指令并保存进⽂件;在程序执⾏过程中,由第三⽅程序读取该⽂件中的类(似)机器语⾔指令,并转换成机器语⾔指令,操作系统读取该机器语⾔指令使相应的硬件动作。
很明显,在编程过程中解释型语⾔效率最⾼、解释编译型语⾔效率居中、编译型语⾔效率最低;在程序执⾏过程中编译型语⾔效率最⾼、解释编译型语⾔效率居中、解释型语⾔效率最低。
漂亮的空间留言
终究编写程序就是⽤来执⾏⽤的,所以⼤家更关注程序执⾏过程中的效率。毫⽆疑问编译型语⾔效率最⾼,加上⽆需安装第三⽅程序就能直接执⾏,使之成了⾼级编程语⾔的⾸选语⾔类型。但编译型语⾔有⼀个缺点,那就是只能在⽀持该语⾔转换的操作系统上运⾏,⽐如你在Windows系统上⽤C++语⾔编写转换得到的exe程序,在Mac系统上就⽆法执⾏,因为Windows系统可识别的汇编语⾔指令和Mac系统可识别的汇编语⾔指令不同,导致在Windows上转换成的机器指令⽆法被Mac系统识别,也就⽆法使相应的硬件动作了。⽽解释型语⾔和解释编译型语⾔却可以在不同的操作系统中执⾏,原因就是需要在当前操作系统中安装第三⽅程序后才可以执⾏它们,就是这个第三⽅程序在你编写的程序执⾏过程中把代码直接转换成当前系统可识别的机器语⾔指令了。解释编译型语⾔在程序执⾏过程中的效率⼜⽐解释型语⾔⾼,所以如果需要⼀段代码在所有的操作系统上都能执⾏,解释编译型语⾔则是⾸选。⽽解释型语⾔的最⼤优点就是编程过程中效率⾼,随时修改随时能执⾏。博主本⼈喜欢的批处理就是解释型语⾔,⽤于对⽂件⽂件夹的操作,随时改动随时⽤,省去了编译的步骤,挺⽅便。
最后总结⼀下:编写的程序只在⼀种操作系统中执⾏,⾸选编译型语⾔;编写的程序要在多种操作系统中执⾏,⾸选解释编译型语⾔;编写的程序需要随时修改随时执⾏,⾸选解释型语⾔。