计算机基础课第 24 期分享

 

转载请联系授权(微信ID:qianpangzi0206)

 

前面我们把重点放在计算机的原理,怎么从内存读写数据,执行操作,比如把两个数字加在一起。

还简单讲了下指令的执行,也就是计算机程序。

但我们还没讲的是:程序如何"进入"计算机。

 

01

机器编程需求

 

你应该记得在前面,我们一步步讲了例子程序,当时为了简单,我们假设程序已经魔法般在内存里了,但事实是,程序需要加载进内存,这不是魔法,是计算机科学!

给机器编程这个需求,早在计算机出现之前就有了。

最著名的例子来自纺织业,如果你只想织一块红色大桌布,可以直接放红线进织布机。但如果想要图案怎么办? 比如条纹或者方格,工人要每隔一会儿 调整一次织布机,因为非常消耗劳动力,所以图案纺织品很贵,特定位置有没有穿孔,决定了线是高是低,横线是从上/从下穿过。为了让每行图案不同,纸卡连成长条,形成连续指令,听起来很熟?很多人认为雅卡尔织布机是最早的编程

 

02

穿孔纸卡用于人口普查

 

事实证明 穿孔纸卡便宜、可靠、也易懂。

近一个世纪后,穿孔纸卡用于 1890 年美国人口普查,我们在第一节提过,一张卡存一个人的信息,比如种族、婚姻状况、子女数量、出生国家等等。

针对每个问题,人口普查工作者会在对应位置打孔,当卡片插入汇总机,孔会让对应总和值+1。可以插入整个国家人口的卡片,在结束后得到各个总值。

值得注意的是,早期汇总机不算计算机,因为它们只做一件事 - 汇总数据,操作是固定的,不能编程。穿孔纸卡存的是数据,不是程序。

 

03

插线板

 

之后60年,这些机器被加强,可以做减、乘、除,甚至可以做一些小决定,决定何时执行某指令。为了正确执行不同计算,程序员需要某种控制面板。面板有很多小插孔,程序员可以插电线,让机器的不同部分  互相传数据和信号,因此也叫 "插线板"。

不幸的是, 这意味着 运行不同程序要重新接线,所以到 1920 年代,控制面板变成了可拔插。让编程更方便,可以给机器插入不同程序。

比如,一个插线板算销售税,另一个算工资单,但给插线板编程很复杂,图中乱成一团的线  。负责算盈亏总额 用于 IBM 402 核算机。

在 1940 年代这样做很流行,用插线板编程不只在机电计算机流行,世上第一台通用电子计算机,ENIAC,完成于 1946 年,用了一大堆插线板。程序在纸上设计好之后,给 ENIAC 连线,最多可能花三个星期。

因为早期计算机非常昂贵,停机几个星期只为换程序,完全无法接受。人们急需更快、更灵活的新方式来编程。

 

04

存储程序计算机

 

幸运的是,到 1940 年代晚期 1950 年代初,内存变得价格下降, 容量上升。 与其把程序存在插线板,存在内存变得可行。这样程序易于修改、方便 CPU 快速读取,这类机器叫 "存储程序计算机"。

如果内存足够,不仅可以存要运行的程序,还可以存程序需要的数据,包括程序运行时产生的新数据,程序和数据都存在一个地方,叫 "冯诺依曼结构"。命名自 约翰·冯·诺依曼,杰出的数学家和物理学家,参与了曼哈顿计划和早期电子计算机项目。

他曾说:我在思考比炸弹重要得多的东西—计算机。

冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+数据寄存器+指令寄存器+指令地址寄存器+内存(负责存数据和指令)。希望这听起来很耳熟,因为前面我们造了一个冯诺依曼计算机。第一台冯诺依曼架构的"存储程序计算机",由曼彻斯特大学于 1948 年建造完成,绰号"宝宝"。甚至你现在看视频的计算机,也在用一样的架构。

下一节我们继续讲。

 

相关阅读:

   

  1. CPU的核心原理

  2. 计算机最早提高性能的方法

  3. 如何榨干CPU的所有价值