输入/输入
现代计算机都采用存储程序结构,又称为冯·诺依曼结构,所有对计算机的操作,都可以简化为如下模型:

现代计算机组成的五大部分:
- 控制器
- 运算器
- 存储器
- 输入/输出设备
冯·诺依曼结构主要特点有:
-
以运算单元为中心;
输入/输出设备与存储器之间的数据传送都途经运算器。运算器、存储器、输入设备们之间的联系都由控制器集中控制; -
指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现(程序需要根据特定的条件来改变执行的顺序,这时就需要使用分支机制);
-
存储器是字长固定的、顺序线性编址的一维结构;
存储器提供可按地址访问的一级地址空间,每个地址是唯一定义的; -
数据以二进制编码;
指令和数据均采用二进制格式; -
由指令形式的低级机器语言驱动;
模型分层
计算机和网络等都采用分层设计的,如下图:
| 层 | 备注 |
|---|---|
| 应用层、云计算 | 软件 |
| 库、接口、服务 | 软件 |
| 编程语言 | 软件 |
| 操作系统 | 软件 |
| 指令集体系架构 | 软件 |
| 逻辑门 | 硬件 |
| 电路 | 硬件 |
| 半导体 | 硬件 |
| 电流 | 硬件 |
层的一些通用法则
-
依赖性
计算机的工程模型是深度层叠的,并且每一层的设计都会影响上、下相邻的两层; -
独立性
- 每一层都独立处理其特定的任务或功能。层与层之间的设计和实现细节可以独立进行;
- 模型分层让设计者能够摆脱现实物理的约束;
-
传递性
- 不同的层次之间有不同的沟通方式,这个约定好的沟通方式叫作协议,并且不能越层沟通;
- 可以没有上层只有下层,但一定不能只有上层而没有下层;
这些法则不仅适用于计算机体系,在计算机网络、操作系统、软件开发和硬件设计中也广泛应用。
算法和程序
算法和程序都属于应用层。
算法定义:
算法是对解决方案的准确而完整的描述,是一系列解决问题的清晰指令,代表着用系统的方法描述解决问题的策略机制。 也就是说,算法对于具有一定规范的输入,能够在有限的时间内给出所要求的输出。
- 程序 = 由计算机系统执行的一系列指令或代码集合 + 数据;
- 算法其实就是设计者针对问题场景所设计的一些最佳策略;
- 某场景的应用 = 针对该场景的算法 + 数据;
算法在古代就已经存在。算法的雏形是规律,例如古人在治理洪水的过程中发现了勾股术,并且使用勾股术成功测量了两地的地势差。除此之外,还有很多例子证明了算法从古至今都存在。
如今,算法不再局限于数学领域的应用,而是升级为解决多领域复杂问题、提供多行业应用方案的有力助手,成为人工智能时代的关键要素。
算法无论在政务领域还是在商业领域都有着极大的应用,可以应用到智慧政务、公安防诈、无人驾驶、内容推荐、人脸识别、货品陈列等多个行业领域。
算法的其它要求
一个好的算法设计,除了需要解决问题之外,通常还要尽力达到“双低”:
- 一是计算工作量小,速度越快越好;
- 二是所需内存空间小,占地越小越好。
总结:
算法就是一个问题的解决方案,解决问题的形式是:通过输入和输出结构。尽量还需要双底。
一个算法能运行的条件
需要满足有三要素:
- 算量(数据)
- 算法
- 算力
如果比作一个厨房做菜,数据就是材料,算力就是一个厨房的设备、水、火、锅具,算法就是做菜的流程。
算法的研发过程
解决具体问题的过程,这个过程就类似于求解数学中的应用题,要尝试运用各种理论和公式得到最优解。
流程:
- 分析业务问题、
- 收集梳理数据、
- 特征提取、
- 建模、
- 设计算法方案等
宏观视角看待算法
从宏观来看待,算法就是一个函数,有输入、内部运算、输出 三部分。

输入:
输入就是将现实参数转为可以由计算机处理的二进制数。
内部运算:
内部运算则是以现实目标作为求解的目标,这个步骤需要程序员用自己的经验去挑选出一个合适的计算方法(计算步骤)来完成这个计算过程。
计算机比手动算的优势在于,计算机可以大量的循环(重复计算,这个是人脑难以做到的),当然还有大量的存储。
输出:
输出就是将运算的结果输出。
浙公网安备 33010602011771号