【计算机科学速成课】[40集全/文字版] - 10.早期的编程方式

(。・∀・)ノ゙嗨,欢迎阅读计算机科学速成课!

前几集我们把重点放在计算机的原理,怎么从内存读写数据,执行操作,比如把两个数字加在一起,还简单讲了下指令的执行,也就是计算机程序。但我们还没讲的是:程序如何"进入"计算机,你应该记得在第78集,我们一步步讲了例子程序。当时为了简单,我们假设程序已经魔法般在内存里了,但事实是,程序需要加载进内存。这不是魔法,是计算机科学!

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

很多人认为雅卡尔织布机是最早的编程,事实证明穿孔纸卡便宜、可靠、也易懂,近一个世纪后,穿孔纸卡用于1890年美国人口普查。我们在第一集提过,一张卡存一个人的信息,比如种族,婚姻状况,子女数量,出生国家等等。

针对每个问题,人口普查工作者会在对应位置打孔,当卡片插入汇总机,孔会让对应总和值+1。可以插入整个国家人口的卡片,在结束后得到各个总值,值得注意的是,早期汇总机不算计算机
,因为它们只做一件事汇总数据。操作是固定的,不能编程,穿孔纸卡存的是数据,不是程序。之后60年,这些机器被加强,可以做减、乘、除,甚至可以做一些小决定,决定何时执行某指令。为了正确执行不同计算,程序员需要某种控制面板,面板有很多小插孔,程序员可以插电线,让机器的不同部分互相传数据和信号,因此也叫"插线板"。

不幸的是这意味着运行不同程序要重新接线,所以到1920年代,控制面板变成了可拔插
,让编程更方便。可以给机器插入不同程序,比如,一个插线板算销售税,另一个算工资单,但给插线板编程很复杂。图中乱成一团的线负责算盈亏总额用于IBM402核算机,在1940年代这样做很流行,用插线板编程不只在机电计算机流行。世上第一台通用电子计算机,ENIAC,完成于1946年,用了一大堆插线板,程序在纸上设计好之后,给ENIAC连线,最多可能花三个星期。

因为早期计算机非常昂贵停机几个星期只为换程序完全无法接受,人们急需更快、更灵活的新方式来编程,幸运的是,到1940年代晚期1950年代初,内存变得可行。价格下降容量上升与其把程序存在插线板,存在内存变得可行。这样程序易于修改、方便CPU快速读取,这类机器叫"存储程序计算机"。如果内存足够,不仅可以存要运行的程序,还可以存程序需要的数据,包括程序运行时产生的新数据。程序和数据都存在一个地方,叫"冯诺依曼结构",命名自约翰·冯·诺依曼

杰出的数学家和物理学家参与了曼哈顿计划和早期电子计算机项目,他曾说:我在思考比炸弹重要得多的东西,计算机,冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+,数据寄存器+指令寄存器+指令地址寄存器,+内存(负责存数据和指令)希望这听起来很耳熟,因为第7集我们造了一个冯诺依曼计算机。第一台冯诺依曼架构的"储存程序计算机",由曼彻斯特大学于1948年建造完成,绰号"宝宝",甚至你现在看视频的计算机,也在用一样的架构。

虽然有内存很棒,但程序和数据依然需要某种方式输入计算机,所以用穿孔纸卡,让我们进入思维泡泡。到1980年代,几乎所有的计算机都有穿孔纸卡读取器,可以吸入一张卡片,把卡片内容写进内存,如果放了一叠卡片,读取器会一个个写进内存。一旦程序和数据写入完毕,电脑会开始执行,即便简单程序也有几百条指令,要用一叠纸卡来存。如果不小心摔倒弄撒了,要花上几小时、几天、甚至几周来整理。有个小技巧是在卡片侧面画对角线,如果弄散了,整理起来会方便很多。

用纸卡的最大型程序是美国空军的SAGE防空系统,于1955年完成,据称顶峰时期雇佣了世上20%程序员,主控制程序用了62500张穿孔纸卡,等同于大约5MB的数据。以如今的标准,不值一提,穿孔纸卡不仅可以往计算机放数据,还可以取出数据。程序运行到最后,结果可以输到纸卡上,方式嘛,当然是打孔,然后人可以分析结果,或者再次放进计算机,做进一步计算,谢了思维泡泡。

穿孔纸卡的亲戚是纸带,基本是一回事,只不过更连续,不是一张张卡。当然我们还没提硬盘只读光盘DVDU盘等等,以后我们会讲这些更先进的存储方法。最后,除了插线板和穿孔纸卡,在1980年代前,还有一种常见编程方式,面板编程。与其插一堆线到插线板,可以用一大堆开关和按钮,做到一样的效果。面板上有指示灯,代表各种函数的状态和内存中的值,50和60年代的计算机,一般都有这样巨大的控制台。

很少有人只用开关来输入一整个程序,但技术上是可行的,早期针对计算机爱好者的家用计算机,大量使用了开关。因为大多数家庭用户负担不起昂贵的外围设备比如穿孔纸卡读取器,第一款取得商业成功的家用计算机是Altair8800。有两种版本可以买1预先装好的整机2需要组装的组件,计算机爱好者喜欢买组件版。售价极低,在1975年卖400美元左右,相当于2017年的2000美元,为了给8800编程,你要拨动面板上的开关,输入二进制操作码,然后按"存储键"把值存入内存。然后会到下一个内存位置你可以再次拨开关,写下一个指令,重复这样做。

把整个程序都写入内存之后,可以推动开关,回到内存地址0,然后按运行按钮,灯会闪烁,这就是1975年的家用计算机哇。不管是插线板、开关或穿孔纸卡,早期编程都是专家活。不管是全职还是技术控,都要非常了解底层硬件。比如操作码寄存器等才能写程序,所以编程很难,很烦。哪怕工程师和科学家都无法完全发挥计算机的能力,我们需要一种更简单方式告诉计算机要做什么,一种更简单的编程方式,,这带领我们到下一个话题,"编程语言",我们下集会讲。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值