计算机极简发展史(一)

简介: 计算机自从 20 世纪 40 年代诞生以来,一直以史无前例的进步向前发展,如果说农业革命是第一次革命、工业革命是第二次革命的话,那么第三次革命就是 信息革命。


计算机分类

计算机从用途上来讲主要分为三种:

  • 个人计算机(Personal Computer),也称为 PC,这是人们最熟知的一种计算机,个人计算机强调用户体验,价格低廉,性价比高,个人计算机虽然出现时间很短,但是却大大推动了计算机历史的进程。

微信图片_20220414213114.png

  • 服务器(Server),服务器通常借助网络访问,用于执行大负载任务,可以处理复杂的应用,服务器相比个人计算机,有着更强的计算、存储和 I/O 能力。发生故障时,服务器比个人计算机恢复代价高。

服务器分为两种,一种用于处理简单小型的 web 服务,没有显示器和键盘。而另外一种是高端服务器,高端服务器通常称为超级计算机,一般由成千上万台处理器组成,内存非常大,同时价格也非常高。

  • 嵌入式计算机(embedded computer) 是数量最多的一类计算机,应用和性能十分广泛,一般应用于汽车、电视中的微处理器,飞机、火车、家用冰箱、洗衣机等,嵌入式计算机系统是由单一应用程序或者一组相关联的应用程序组成,用户通常意识不到自己正在使用计算机。

技术的不断发展也让计算机在不断进步,对整个信息技术工业产生影响,自从个人计算机 PC 出现以来,计算机发展迅速,出现了一种个人移动设备(Personal Mobile Device, PMD),PMD 由锂电池供电,通过无线的方式访问网络,价格低廉。PMD 不再像 PC 一样拥有显示器和鼠标,作为替代的是一块触摸屏,甚至支持语音输入,PMD 的出现代表后 PC 时代的到来,而 PMD 将在未来生活中扮演更多角色。

云计算(cloud computing) 替代了传统的服务器,它依赖于一种仓储规模计算机(Warehouse Scale Computer, WSC) 的巨型数据中心,比如 AWS ,Google 这样的顶级科技公司,通过云计算实现 软件即服务(Software as a Service, Saas) 是软件工业的使命。



八个伟大设计思想



计算机世界的快速发展,离不开几个关键思想的影响,这些思想深刻影响着计算机设计人员

使用抽象简化设计

抽象真是一个牛逼的词汇,提高硬件和软件生产率的主要技术之一就是使用抽象(abstraction)来表示不同的设计层次,对高层次隐藏内部的实现细节,使其只看到一个大致简化版的模型。

摩尔定律

计算机设计者一个永恒的问题就是 摩尔定律(Moore's Law) 驱动的快速变化,它是由英特尔的创始人 摩尔 提出的,它的主要内容是:当价格不变时,集成电路上可容纳的元器件的数目,约每隔 18 - 24 个月便会增加一倍,性能也将提升一倍,这一定律揭示了信息进步的速度。

通过并行提高性能

并行处理是计算机的一大进步,并行指的是计算机系统中能同时执行两个或多个处理的一种计算方法,并行处理的主要目的是提高效率,缩短工作时间,但是会带来更大的复杂性。

通过流水线提高性能

在计算机结构设计中,一个特殊的并行场景是使用流水线,流水线也是一种硬件并行的设计。你一定见过大型车间或者制造厂中的流水线工业设计。

加速大概率事件

加速大概率事件要比优化小概率事件更能提高性能,大概率事件通常比小概率事件简单,大概率事件规则意味着设计者需要知道什么事件是经常发生的。

通过预测提高性能

古人通常讲一句话是 未雨绸缪,表明要做一件事情需要提前做好准备,才能更好的完成工作。预测也是一种提前做好准备的思想,通过预测的方式提前开始某些操作,会比等到确切知道这些操作启动时要快,通过另一方面提高系统性能。

存储器层次

存储器层次我在之前的文章中多次提到了,这是金字塔的层次设计模型,如下图所示

微信图片_20220414213121.png

在存储器层次结构中,速度最快,容量最小的并且价格最昂贵的位于顶层,而速度最慢、容量最大而且价格便宜的位于底层。

通过冗余提高可靠性

计算机不仅要保证工作的速度、还要保证工作的可靠。由于任何一个物理器件都有可能会失效,因此可以通过使用冗余部件的方式提高系统的可靠性(dependable),冗余部件可以替代失效部件并且可以帮助其检测错误。


计算机程序


一个应用程序可能由数千万行代码组成,我们知道,计算机中的硬件只能提供最简单的低级指令,从复杂的应用程序到简单的指令需要经过软件的几个层次来逐步解释和翻译。下图展示了软件结构的几个层次

微信图片_20220414213125.png

最外层是应用软件,最核心是硬件系统软件(systems software)位于两者之间。

系统软件:通常提供服务性质的软件,包括操作系统、编译程序等。

操作系统和编译程序是对于所有计算机来说都是必须的,这两个系统软件是非常重要的,操作系统是计算机硬件和软件之间的接口;为用户提供各种调用和协调服务,操作系统主要的功能如下

  • 处理用户输入和输出
  • 协调内存和 CPU
  • 为各种应用软件提供服务

而编译程序是完成另一项重要功能的程序:它把高级语言例如 C、Java、C++ 编写的程序翻译成为机器指令,这个翻译过程是非常复杂的。

编译程序

在计算机世界中,它能识别的只有两个信号:0 和 1,所以我们认为计算机只能识别二进制数。每个字母就代表计算机中的二进制位(binary digit) 或者 一位(bit)。八个二进制位成为一个字节(byte),字节是最小的寻址单元,一连串的二进制位构成了计算机术语中的 指令(instruction),即 01010101110110 等等。。。。。。

第一代程序员是直接使用二进制数与计算机通信的,这是一项非常乏味的工作,所以为了改善这种枯燥无聊的编写方式,程序员很快发明了助记符,最初助记符是通过手工翻译成为二进制的,这种转换过程过于浮躁无聊和繁琐,为了改善这种情况,程序员发明了一种 汇编程序(assembler) 的软件,可以将助记符自动转换为对应的二进制。比如我们使用助记符 add A,B ,这段代码就会自动的被二进制 0101011011。该指令告诉计算机将使用 A 和 B 进行相加操作。这种助记符使用的语言就是汇编语言(assembly language)。而机器可以理解的二进制语言称为 机器语言(machine language)

  • 汇编程序:将指令由助记符形式翻译成二进制形式的程序
  • 汇编语言:以助记符形式表示的语言
  • 机器语言:以二进制元形式表示的机器指令

然而,随着时代的发展,汇编语言也慢慢面的枯燥乏味,所以出现了像是 C、Java 这样的高级语言,也就是我们开发所使用的语言,高级语言的出现,大大提高了编程效率,但是,万变不离其宗,高级语言也要经过

微信图片_20220414213132.png

这一个转换过程。高级编程语言和编译程序大大提高了软件的生产率。

使用高级语言有以下几个好处:

其一,可以让程序员使用更自然的语言来思考

其二,高级语言提高了程序员的生产率,加速程序的开发过程

其三,采用高级语言编写程序提高了程序对于计算机的独立性

相关文章
|
5月前
|
机器学习/深度学习 人工智能 并行计算
《算力觉醒!ONNX Runtime + DirectML如何点燃Windows ARM设备的AI引擎》
ONNX Runtime 是一个跨平台高性能推理引擎,可运行不同框架转为 ONNX 格式的模型,通过深度分析与优化计算图提升效率。在 Windows ARM 设备上,它针对硬件特性优化,结合微软 DirectML API,充分利用 GPU 并行计算能力加速 AI 推理。两者深度融合,灵活调整参数以满足实时性或高精度需求,在文本分类、图像识别、智能安防等领域显著提升性能,为多样化应用场景提供高效支持。
204 16
|
自然语言处理 编译器 Linux
【Latex】texstudio使用和ACL论文模板初步解读
LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。 LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次批量处理。 LaTeX在使用体验方
2131 0
【Latex】texstudio使用和ACL论文模板初步解读
|
11月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
5158 3
|
6月前
|
人工智能 搜索推荐 API
RAG vs. MCP: 你不知道你需要的 AI 充电接口
本文通过“充电接口”比喻,对比了两种AI技术:RAG(特定充电口)和MCP(通用充电口)。RAG像专用数据线,每次需连接外部数据库检索信息,适合动态查询;MCP则似USB-C,依靠内置记忆提供快速、个性化响应,适用于长期交互。两者各有优劣,RAG灵活但效率低,MCP高效却可能缺乏最新数据。未来可能是两者的结合:MCP负责上下文记忆,RAG获取最新资讯,实现更自然的AI对话体验。文章还探讨了如何用Apipost设计适配两者的API,助力AI系统开发。
|
11月前
|
前端开发 定位技术 数据库
如何自己独立制作网站?
本文介绍了网站建设的三大步骤:网站建设、域名注册、服务器租用。其中,定制建站是传统方式,SAAS平台和独立建站系统则更适合低要求和有建站需求的用户。
402 10
|
11月前
|
分布式计算 Java 持续交付
如何选择合适的微服务框架
如何选择合适的微服务框架
264 0
|
前端开发 JavaScript 程序员
后端程序员的前端捷径-超级容易上手使用的前端框架layUI(上)
后端程序员的前端捷径-超级容易上手使用的前端框架layUI
315 10
|
前端开发 JavaScript C#
钢琴模拟器
这段内容介绍了一个基于网页的互动钢琴模拟器项目,包括其HTML结构、CSS样式和JavaScript功能。用户可以通过键盘或鼠标与虚拟钢琴进行交互,同时具备多种功能,如选择不同的乐器声音、录制演奏、播放录制内容、调整音调以及触发和弦。
284 5
|
Java 调度
java定时任务3分钟一次
7月更文挑战第6天
594 1
|
算法 测试技术 编译器
蓝桥杯-02-蓝桥杯C/C++组考点与14届真题
蓝桥杯-02-蓝桥杯C/C++组考点与14届真题