本文来自 OpenHarmony 啃论文俱乐部 11 组 PIMF
团队,《平凡的计算原理》一书由俱乐部欧建深教练举荐浏览,纯干货无推广。
笔者将《平凡的计算原理》一书中提到的“计算原理框架”比喻为 武林秘籍“六脉神剑”,计算原理框架内的六项计算原理分为该文治的 六门招式。
- 修炼六脉神剑将成为武林高手,用该文治的六门招式能更好地去了解计算机相关的某项畛域。
该系列往期回顾:
PIMF《平凡的计算原理》“六脉神剑”意识 OpenHarmony 技术路线
欲练此功,必先知此。
- 六脉神剑的精华从《平凡的计算原理》继承 。《平凡的计算原理》一书 提供了 一个面向整个计算机科学的 普适性方 法,采纳对于计算 重要原理的框架 去提供 一种无效的 形式 去剖析 特定技术所波及的基本原理。
- 此书是以一种 新的视角 切入 察看 计算相干的 技术 。它把 计算看作 是一门有 基本原理的迷信 , 所有计算机相关技术 都能够用 计算的基本原理形容 进去。它将计算原理分为 6 个类别:$\color{#F00}{通信}$、$\color{#F00}{计算}$、$\color{#F00}{合作}$、$\color{#F00}{记忆(存储)}$、$\color{#F00}{评估}$ 和 $\color{#F00}{设计}$。
- 该书的原理框架不是从新定义计算的外围常识,而是提供了一种对待所有计算畛域并升高其外表复杂性的新形式。
- 该门武林秘籍对于根本计算原理的探讨肯定会使各位开发者侠客们对“计算之道”有更为深刻的了解和把握。
- “六脉神剑”构建一个对于计算的全景视角(技术地图),而更深层次的常识则须要各位侠客本人一直去发现,排汇,并将它们归纳起来去 融入本人的血脉。
六门招式
笔者将《平凡的计算原理》一书中提到的“计算原理框架”比喻为武林秘籍“六脉神剑”,计算原理框架内的六项计算基本原理为该文治的 六门招式 。
每一类基本原理都是察看计算畛域常识空间的 一扇窗口。这六类基本原理不是齐全不相交。
少数计算技术都波及到这 6 类基本原理。这些基本原理类别体现了人们对计算的某种认知视角。这种划分框架能肯定水平上扩大人们对计算实质的认知。
- 举个例子,互联网既能够从通信零碎的角度了解,也能够从合作零碎或者记忆系统的角度了解。
了解原理框架比技术框架更容易
该门武林绝学建设在“对于学习者来说 , 了解计算原理框架比计算技术框架更容易”的意识上。
展现一下(以信息安全畛域为例)
基本原理框架 | 信息安全畛域的技术框架 |
---|---|
通信 | 窃密,身份验证,加密零碎等 |
计算 | 哈希算法,模式验证化等 |
记忆 | 谬误限度,多级平安存储等 |
合作 | 秘钥调配,零常识证实,签名协定等 |
评估 | 平安零碎准则等 |
设计 | 端到端设计,虚拟机,最小特权等 |
对于初学者,了解计算原理框架远远比了解技术框架更容易,咱们用原理框架去涵盖一个计算畛域的技术框架,咱们就能很轻易地取得该畛域的全知视角。
如果在此基础上咱们 减少 3 个方面的关注点 造成该畛域的 4 个因素:
- 波及哪些人;
- 关注什么问题;
- 波及哪些计算基本原理;
- 如何为计算和所在畛域带来新的基本原理。
就能够涵盖该畛域更为广大的内容:
人 | 角色 | 网民,网络工程师,企业等 |
内容 | 问题,关注点 | ,存储保护,文件爱护,访问控制,信息流,可信零碎,加密通信等 |
通信 | 窃密,身份验证,加密零碎等 | |
计算 | 哈希算法,模式验证化等 | |
记忆 | 谬误限度,多级平安存储等 | |
计算基本原理 | 合作 | 秘钥调配,零常识证实,签名协定等 |
评估 | 平安零碎准则等 | |
设计 | 端到端设计,虚拟机,最小特权等 | |
来源于其余畛域的基本原理 | 信息安全实际,取证规定,入侵检测,生物特色等 |
模板
“通信”——第一招少泽剑
依照香农信息论的定义:
- 信息是事物静止状态或存在形式的不确定性的形容。
- 通信过程是一种打消不确定性的过程。
- 通信的后果是打消或局部打消不确定性从而取得信息。
通信零碎在模式上传输的是音讯,本质上传输的是信息。音讯只是表白信息的工具。信号是音讯的载体,是音讯的一种表现形式。狭义的讲,信号是带有信息的随工夫变动的物理量或物理现象。在通信零碎中,信号是传递各种音讯的工具,是通信传输的主观对象。即,通信的本质是传输信息,模式上是传输音讯,主观上是传输信号。
“计算”——第二招少冲剑
能够先看下维基百科上对计算的介绍:
- A calculation is a deliberate process that transforms one or more inputs into one or more results, with variable change.——计算是一个通过三思而行的过程,它将一个或多个输出转换成一个或多个后果,并带有可变的变动。
- Computation is any type of calculation that follows a well-defined model understood and expressed as, for example, an algorithm.——计算是任何类型的计算,它遵循定义良好的模型了解并示意为,例如,算法。
计算是基于给定的根本规定进行演变的过程 。计算其实是在摸索事物之间的等价关系,或者说同一性。计算的实质是什么?对一台图灵机来说,那就是有限长的纸带和可能自若挪动的读写头,但这太形象了。咱们明天尝试换一种形式去了解计算: 计算的实质是通过无限的步骤,读入数据,将一串序列,转换为另外一串序列,再将其输入。
计算与编程语言的关系:计算与编程语言的关系能够从两个方面探讨。
- 其一为计算实践,即对于计算能做什么、如何进行计算的钻研。
- 其二为计算的物理实现。
编程语言能够了解为一套符号零碎,用于形容计算模型。然而,咱们当初的大多数计算机都是基于冯若依曼模型,思考到计算能力的限度,编程语言会做一些折衷,从而更充沛的利用计算资源。了解一门编程语言能够先从它的语义开始,语义体现了编程语言中蕴含的计算模型。
(在此期待仓颉编程语言,并心愿 cangjie 和 OpenHarmony 将会碰撞出灿烂的火花)
“合作”——第三招关冲剑
并行计算(Parallel Computing)是高性能计算下的一个细分畛域,其次要思维是将简单问题分解成若干个局部,将每一个局部交给独立的处理器(计算资源)进行计算,以提高效率;针对不同的问题,并行计算须要专用的并行架构,架构既能够是专门设计的,含有多个处理器的繁多硬件或超级计算机,也能够是以某种形式互连的若干台的独立计算机形成的集群;并没有一个对立的并行计算架构实用于每一个问题,如果应用了谬误的架构,并行计算甚至会导致性能降落。
排队论 是一套数学实践与模型。通过不同的模型衍生,该实践力求模仿各种常见的队列期待模型。该实践常见的乏味论断:均匀等待时间,均匀队列顾客数量,银行 / 医院开设新服务窗口的经济有效性等等。
一个排队零碎能够分为五个方面去钻研,别离是顾客到达工夫,服务台服务工夫,服务规定,服务台数量,零碎容量五个角度。
而通常咱们默认服务规定为先到先服务(FCFS:First come first service),零碎容量为无限度即为无穷。
“记忆(存储)”——第四招中冲剑
存储系统 就是计算机存储程序和数据的零碎,由各种存储设备和控制部件及治理信息调度的硬件和软件组成,具备存入和取出两大性能。
古代的计算机须要满足大容量,高速度和低成本三项要求。然而,大容量的便宜运算速慢。运算速度快的贮存元件运算速度快然而价格大,存储内容小。于是为了满足古代计算机的要求,采纳了分层存储体系。把各种不同存储容量,不同存取速度,不同价格的存储器组合在一起。施展它们最大的劣势。
它们之间的信息调度是由辅助硬件或者软件间接实现的。能施展整个存储系统的最大效力,有最佳的性价比。当然最次要的是它的工作原理:cpu 先拜访运行速度最快的存储器,如果找到了返回,没有则通过管理软件或者辅助硬件向下一级运算速度较慢存储器中寻找。找到则返回内容,如果还没有则到运算速度更慢的存储器中寻找比方硬盘,直到找到。没有找到的化,则返回失败。找到了,则把内容逐步上调。
“评估”——第五招商阳剑 和“设计”——第六招少商剑
设计指的是程序设计。评估和设计其实是密不可分的。程序是对算法的表白 ,并能够在一台计算机上运行。程序设计语言是一种人造语言, 具备其本身的用于表白程序的语法规定。 其实说明确了程序设计是一种编写在计算机上运行的指令序列的实际流动。
程序设计语言,是用来通知计算机,怎么去解决一个问题。第一步做什么,第二步做什么,……,最初做什么。
计算机可能间接了解的语言,称为机器语言。起初人们为了便于应用机器语言,用符号来简略代替机器语言中的命令,这个合乎代替后的语言,被称为汇编语言。然而汇编语言还是很难去编写大型软件,既不不便编写,又不不便了解、批改。于是高级语言呈现了。
高级语言,就是用靠近人的自然语言的形式编写代码,编写程序。然而,高级语言,计算机是了解不了的。高级语言的长处,就是不便程序设计人员,编写、了解、批改程序。对于计算机来说,高级语言写的货色,就是一堆了解不了的乱码。
计算机只是了解,编写正确的“0”&“1”字符串。计算机的世界外面就只有 0 和 1。所以任何想让计算机了解的问题,都必须翻译成 0 和 1 组成的字符串序列。高级语言也必须翻译成 0 和 1 的字符串,也就是机器语言。
这个翻译软件,咱们通常称之为:编译软件 (编译器) 或者解释软件 (解释器)。世界上的计算机语言无非就是通过这两者来把它们翻译成机器语言。
咱们应用高级语言编写的程序、软件,应用编译器或者解释器,翻译成机器语言,最初造成能够执行的程序,被称为软件。
在设计计算零碎和软件的实际中,人们摸索出 5 种无效的设计模式:
- 层级式聚合(体现在形象、合成、模块化、信息暗藏中)
- 封装
- 级别
- 虚拟机
- 对象
这些模式被实际在语言、应用程序、操作系统的构造中。
文章篇幅限度,只叙述了很小的一部分。不能对计算基本原理框架的 6 门招式有更多具体的介绍。更深层次的常识则须要各位侠客本人一直去发现,排汇。
因为自己程度无限以及知识面的狭窄,文章中有疏漏和不足之处敬请各位老师和读者批评指正。