计算机程序
其实所谓计算机程序,就是一组计算机能够读懂和执行的指令集
,计算机根据这些指令集来运行,无论是听音乐、看视频、玩游戏甚至是根据需要创造新的程序,实际上都是各种指令集
。
计算机如此的强大,都是由程序控制
的,当然了,操作系统也是一种特殊的程序。
所以,离开程序,计算机将一事无成。
各种各样的编程语言
既然计算机程序如此的厉害,那么设计出人和机器都能看懂的计算机编程语言
也经历了几个阶段。
机器语言
我们都知道,计算机是基于二进制工作
的,不知道的请看模仿游戏 The Imitation Game科普一下,顺便看看男神。
根据当时计算机的情况,机器语言都是由16位的0和1组成
例如:1011011000000000
我们称上面的这种由0和1组成的代码为二进制代码组成的机器指令
,这种由机器指令组成的机器指令集合,就是机器语言
。
但是吧,这种机器语言,太深奥了,要指望程序员都能看懂、背过、会用这些 1011011000000000
二进制指令。太反人类了…
据说,初期,只有极少数的计算机专业人员会使用16位的二进制指令集编写计算机程序…
真正的 硬核程序员
…
符号语言
我们都不是硬核程序员
,记不住那些0和1,但为了当程序员,二进制的机器语言就让计算机来搞定吧,我们创造出了符号语言
。
也就是用我们熟悉的英文单词+数字
来表示上面那些难懂的指令集,然后将这些英文单词+数字
通过一种软件转换成机器所能理解的二进制语言
。
这种转换软件,我们称之为汇编程序
,所以,我们也叫做这种符号语言为符号汇编语言
或者汇编语言
。
但是,不同的计算机种类,使用的是不同的汇编语言,并且,汇编语言主要就是负责翻译
我们能看懂的指令集为机器能懂的指令集,主要是为了机器服务,不是为了编程人员服务的,离机器「较近」
,所以我们称之为低级语言
(Low level language)。
高级语言
既然由低级语言
必然还有高级语言
,高级语言克服了低级语言的一些毛病,高级语言主要是贴近人们习惯的自然语言和数学语言
,也就是为人服务的,很容易理解,并且这种语言的功能性很强
,不依赖于具体机器。否则计算机淘汰了,辛苦学的编程语言也要废了…它写出的程序对任何机器都适用
,并且主要为人所服务,离人「较近」
,所以我们称其为高级语言
。
编译程序
不过,还记得吗?符号语言写好之后,要通过汇编软件
把符号语言翻译成机器指令
,这样机器才能理解。高级语言
同理,也需要进行翻译,不过我们使用的是编译程序
软件来吧高级语言
翻译成机器指令
。
我们通常把这个过程描述为,把写好的程序源文件
,转换为机器能懂的目标程序
的过程。
高级语言
当然了,高级语言也经历了不同的发展阶段。
非结构化语言
高级语言一开始呢…没有足够的标准,大家随心随性
的写,代码之间跳来跳去,没有严格的规范要求,使得后期的维护和阅读
非常困难。
结构化语言
吃了亏之后呢,大家就琢磨,搞一个标准吧,大家都按照标准来
,我们的代码也不能跳来跳去的了,从上往下执行
,保证了结构的清晰。
但是…小程序还行,几十人同时写的大程序就有点力不从心了,因为上面这两种都是基于过程的,也就是说我们要把每一个过程说清楚。
例如:
1 | 小明踢足球 |
但是,如果我们需要改成,小明打乒乓球
1 | 如果是面向过程 |
面向对象的语言
所以,发展至今,面向对象的语言在处理规模较大的程序时,发挥着作用。
当然了,我们笔记所写的C语言并不是面向对象的语言。
C++、C#、Java、Swift 以及我们当今耳熟能详的大多数语言都是面向对象的语言了。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。