计算机程序发展简史-学习笔记-1

计算机程序

其实所谓计算机程序,就是一组计算机能够读懂和执行的指令集,计算机根据这些指令集来运行,无论是听音乐、看视频、玩游戏甚至是根据需要创造新的程序,实际上都是各种指令集
计算机如此的强大,都是由程序控制的,当然了,操作系统也是一种特殊的程序。
所以,离开程序,计算机将一事无成。

各种各样的编程语言

既然计算机程序如此的厉害,那么设计出人和机器都能看懂的计算机编程语言也经历了几个阶段。

机器语言

我们都知道,计算机是基于二进制工作的,不知道的请看模仿游戏 The Imitation Game科普一下,顺便看看男神。
根据当时计算机的情况,机器语言都是由16位的0和1组成
例如:1011011000000000

我们称上面的这种由0和1组成的代码为二进制代码组成的机器指令,这种由机器指令组成的机器指令集合,就是机器语言
但是吧,这种机器语言,太深奥了,要指望程序员都能看懂、背过、会用这些 1011011000000000 二进制指令。太反人类了…
据说,初期,只有极少数的计算机专业人员会使用16位的二进制指令集编写计算机程序…
真正的 硬核程序员

符号语言

我们都不是硬核程序员,记不住那些0和1,但为了当程序员,二进制的机器语言就让计算机来搞定吧,我们创造出了符号语言
也就是用我们熟悉的英文单词+数字来表示上面那些难懂的指令集,然后将这些英文单词+数字通过一种软件转换成机器所能理解的二进制语言
这种转换软件,我们称之为汇编程序,所以,我们也叫做这种符号语言为符号汇编语言或者汇编语言
但是,不同的计算机种类,使用的是不同的汇编语言,并且,汇编语言主要就是负责翻译我们能看懂的指令集为机器能懂的指令集,主要是为了机器服务,不是为了编程人员服务的,离机器「较近」,所以我们称之为低级语言(Low level language)。

高级语言

既然由低级语言必然还有高级语言,高级语言克服了低级语言的一些毛病,高级语言主要是贴近人们习惯的自然语言和数学语言,也就是为人服务的,很容易理解,并且这种语言的功能性很强,不依赖于具体机器。否则计算机淘汰了,辛苦学的编程语言也要废了…它写出的程序对任何机器都适用,并且主要为人所服务,离人「较近」 ,所以我们称其为高级语言

编译程序

不过,还记得吗?符号语言写好之后,要通过汇编软件把符号语言翻译成机器指令,这样机器才能理解。
高级语言同理,也需要进行翻译,不过我们使用的是编译程序软件来吧高级语言翻译成机器指令
我们通常把这个过程描述为,把写好的程序源文件,转换为机器能懂的目标程序的过程。

高级语言

当然了,高级语言也经历了不同的发展阶段。

非结构化语言

高级语言一开始呢…没有足够的标准,大家随心随性的写,代码之间跳来跳去,没有严格的规范要求,使得后期的维护和阅读非常困难。

结构化语言

吃了亏之后呢,大家就琢磨,搞一个标准吧,大家都按照标准来,我们的代码也不能跳来跳去的了,从上往下执行,保证了结构的清晰。
但是…小程序还行,几十人同时写的大程序就有点力不从心了,因为上面这两种都是基于过程的,也就是说我们要把每一个过程说清楚。
例如:

1
2
3
4
5
6
7
8
9
10
11
小明踢足球
面向过程,那就是老老实实的写:
小王踢足球

如果是面向对象
我们就可以不分先后的
先设计一个小明
给小明加上会球类运动的设定
然后在设计一个足球。
然后就是:
球类运动.小明.踢球

但是,如果我们需要改成,小明打乒乓球

1
2
3
4
5
如果是面向过程
我们从小明、会不会乒乓球以及乒乓球都是一点点修改

如果是面向对象的
我们就可以直接再建一个新的乒乓球就好了

面向对象的语言

所以,发展至今,面向对象的语言在处理规模较大的程序时,发挥着作用。
当然了,我们笔记所写的C语言并不是面向对象的语言。
C++、C#、Java、Swift 以及我们当今耳熟能详的大多数语言都是面向对象的语言了。

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!