适合读者
非计算机专业人士或普通初学者,天才以及专业高手请绕行。
一切从算术开始
从远古时期开始,当人们出去打猎时,就需要考虑今天打到了几只兔子?几头野猪?未来够吃几天?这时候,就需要用到计数,可能用石子,也可能用其他方便计数的东西,虽然很简单,但从此却开启了算术在人们日常生活中的应用。

随着社会的不断发展,尤其是货币的出现,人们对计算的需求越来越高,原始的计算方式已不能满足,于是一些辅助计算工具纷纷出现,在中国,最典型的就是算盘:

传言中国的第一颗原子弹
都是算盘算出来的,其实主要还是用计算机,但是算盘确实也贡献了一份力。
在西方,也出现过机械式的计算工具:
也有这样的织布机工具:

雅卡尔提花织布机,可编程化机器的里程碑。

为了满足人们日益增长的计算需求,前辈们也真是绞尽了脑汁。
数字计算机
1937年,得益于电子电路、继电器、电容及真空管的出现,阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机)诞生,被认为是世界上第一台电子数字计算设备:

虽然看起来和现在的计算机差别也很大,但这台计算机实现了三个关键思想,这些思想一直在现代计算机中延续:
使用 二进制 数表示所有的数值和数据使用 电子器件 进行所有计算操作,而不是滚轮、棘轮或者机械开关计算和存储在系统中分离成两部分对于理解计算机来说,二进制 的概念尤其重要,我们人类算术使用的是十进制:

1 + 1 = 2,一直加到 9,9 再加 1 时就需要进一位,变成 10;
而二进制不一样,二进制只有两个数字,0 和 1:

1 加 1 时就得进一位,变成 10(这里 10 表示十进制里面的 2)。
那为什么计算机要用二进制来计算呢?这是因为计算机的硬件基础是集成电路,而在电路中二进制更容易实现。冯·诺伊曼结构
1945年,冯·诺伊曼在曼哈顿工程中得到灵感,提出存储程序逻辑架构:

该结构指导了将存储设备与中央处理器分开的概念,因此依本结构设计出的计算机又称 存储程序型计算机。
由于在此之前的计算机只能执行固定的计算,既不能当作文字处理软件,也不能玩游戏,仅仅作为辅助计算工具而存在;而存储程序型计算机设定了一组指令集,将计算过程转化为了程序指令的执行;程序指令的编写,也就是我们所说的计算机编程。
最初的编程,主要是基于设定好的指令集,使用助记符来编写;编写好的源代码,需要通过相应的汇编程序将它们转换成可执行的二进制机器代码,这一过程被称为 汇编过程,该编程语言也被称为 汇编语言。
目前汇编语言的语法细节不必在意,只需要明白每一行代表了一个指令,当指令在计算机中执行时,需要汇编为二进制,也就是 10010 100010 ... 这样的形式;未来无论你用什么的语言编程,最终在计算机中执行时,也都会转化为二进制的指令形式。
操作系统
看完上一个章节 冯·诺伊曼结构,有没有不太理解的感觉?

如果有,也不用太担心,因为在大多数情况下,无论是使用计算机,还是编程,都不需要接触这些计算机最底层的结构;因为前辈们已经开发出了一个给力的好帮手-操作系统
。
操作系统会负责跟计算机的底层硬件打交道,而呈现给我们的操作接口是友好的。
最初的操作系统是没有图形界面的,比如 Unix 系统,用户是通过 命令行 与操作系统沟通交互:

这时候的计算机主要还是应用于科学研究,实验计算等领域,在普通用户中间并不普及。
这样的情况一直持续到 Windows 系统的出现,虽然 Windows 并不是第一个图形界面系统,但却是第一个成功把图形界面推广到全世界范围的操作系统,尤其是在个人电脑领域,Windows 处于垄断地位。
操作系统在提供界面交互的同时,也提供了应该编程接口,编程接口将计算机的图形、存储等硬件资源统一进行了封装,基于这些接口,我们可以快速开发出各种类型的图形应用,这一过程通常称为 应用程序编程。
正是由于图形操作系统的兴起以及系统本身的可编程性,大量的应用被开发出来,所以我们才能够使用计算机办公、游戏、追剧...
编程语言
前文提到,早期的编程,使用的是汇编语言;汇编语言来源于 CPU 指令集,对计算机来说非常熟悉,执行效率很高,但对我们人类来说,汇编语言十分晦涩难懂,只能用来编写简单的逻辑,编写效率低下;于是更符合人类思考逻辑的编程语言不断的被设计出来,截至到现在,编程语言已超过上千种,这些语言设计的目的都是为了让编写程序越来越容易理解,编写效率越来越高,比如以下几种比较流行的编程语言:

需要注意的是,使用这些语言编写的程序,计算机是无法直接执行的,而是需要通过 编译器 转化为二进制的机器指令,才能够执行。

问答
小牛:不是入门编程么,怎么说的都是计算机的发展历史啊?
王五:因为只有通过计算机的发展历史了解了程序运行的原理,才能更容易理解计算机编程语法。
评论 (0)