艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。
图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。
图灵机已经有输入、输出和内部状态变化机制了。

冯诺依曼著名匆牙利斋美籍犹太人数学家、计算机科学家、物理学家和化学家,数字计算机之父。他提出了以二进制作为数字计算机的数制基础,计算机应该按照程序顺序执行,计算机应该有五大部件组成。
一、冯诺依曼体系
五大核心部件
中央处理器CPU
- 运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。
- 控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。内存是掉电易失的设备。
输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。
输出设备:将数据或程序的处理结果展示给用户,例如:显示器、打印机。
CPU中还有寄存器和多级缓存Cache。
- CPU并不直接从速度很慢的IO设备上直接读取数据,CPU可以从较慢的内存中读取数据到CPU的寄存器上运算
- CPU计算的结果也会写入到内存,而不是写入到IO设备上
二、计算机语言
语言是人与人沟通的表达方式。
计算机语言是人与计算机之间沟通交互的方式。
1、机器语言
机器语言是站在计算机(奴隶)的角度,说计算机能听懂/理解的语言,而计算机能直接理解的就是二进制指令,所以机器语言就是直接用二进制编程,这意味着机器语言是直接操作硬件的,因此机器语言属于低级语言,此处的低级指的是底层、贴近计算机硬件(贴近代指需要详细了解计算机硬件细节、直接控制硬件)
- 一定位数的二进制的0和1组成的序列,也称为机器指令
- 机器指令的集合就是机器语言
- 与自然语言差异太大,难学、难懂、难写、难记、难查错
2、汇编语言
汇编语言仅仅是用一个英文标签代表一组二进制指令,毫无疑问,比起机器语言,汇编语言是一种进步,但汇编语言的本质仍然是直接操作硬件,因此汇编语言仍是比较低级/底层的语言、贴近计算机硬件
- 用一些助记符号替代机器指令,称为汇编语言。ADD A,B指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
- 汇编语言写好的程序需要汇编程序转换成机器指令
- 汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言
3、低级语言
- 机器语言、汇编语言都是面向机器的语言,都是低级语言
- 不同机器是不能通用的,不同的机器需要不同的机器指令或者汇编程序
4、高级语言
高级语言是站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,而人类的字符是在向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的,此处的高级指的是高层、开发者无需考虑硬件细节,因而开发效率可以得到极大的提升,但正因为高级语言离硬件较远,更贴近人类语言,人类可以理解,而计算机则需要通过翻译才能理解,所以执行效率会低于低级语言。
按照翻译的方式的不同,高级语言又分为两种:编译型和解释型
- 接近自然语言和数学语言的计算机语言
- 高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序
- 1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
- 人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
- 语言越高级,越接近人类的自然语言和数学语言
- 语言越低级,越能让机器理解
- 高级语言和低级语言之间需要一个转换的工具:编译器、解释器
5、编译语言
类似谷歌翻译,是把程序所有代码编译成计算机能识别的二进制指令,之后操作系统会拿着编译好的二进制指令直接操作硬件
- 把源代码转换成目标机器的CPU指令
- C、C++等语言的源代码需要本地编译
6、解释语言
类似同声翻译,需要有一个解释器,解释器会读取程序代码,一边翻译一边执行
- 解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
- Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行
三、高级语言的发展
1、非结构化语言
- 编号或标签GOTO,子程序可以有多个入口和出口
- 有分支、循环
2、结构化语言
- 任何基本结构只允许是唯一入口和唯一出口
- 顺序、分支、循环,废弃GOTO
3、面向对象语言
- 更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
- 封装、继承、多态
4、函数式语言
- 古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
- 函数是“一等公民”,高阶函数
四、程序Program
- 算法 + 数据结构 = 程序
- 数据是一切程序的核心
- 数据结构是数据在计算机中的类型和组织形式
- 算法是处理数据的方式,算法有优劣之分
只有选对了合理的数据结构,并采用合适的操作该数据结构的算法,才能写出高性能的程序。
写程序的难点
- 理不清业务数据
- 搞不清处理方法
- 无法把数据设计转换成数据结构,无法把处理方法转换成算法
- 无法用设计范式来进行程序设计
评论区