学好计算机第一步
Datawhale干货
作者:cxuan
审校:黄元帅
前 言
计算机已经发展了半个世纪之久,我们从一出生就能享用计算机高速发展的成果,但我们从未对计算机产生过敬畏之心,为什么?因为我们不了解计算机,何谈敬畏?仿佛一切都是命中注定、水到渠成的一样,何谈敬畏?这句话说出来可能有些傲慢,但是我们反思一下自己有谁真的懂计算机呢?这不单单是我们的问题,这也是学校的问题,也是行业的问题。因为大学里未曾有过真正了解计算机前世今生的这门课程,要么就是讲什么 C 语言,要么就是讲 Java ,我们都不了解这些东西那么我们为什么要学习这些呢?你都不了解这个姑娘那么你怎么可能和她产生感情呢?肯定会有人说没有感情也能结婚这件事。
如果只谈结果,那么历史就是伪命题,如果一切都以结果导向,那么过程就是倒在明天晚上的躯壳,没有人记得,也没有人在意,那么人类就只是墓碑上的一个名字而已。
所以我认为计算机历史是我们真正应该好好对待的一门课,也是我们应该认认真真了解的一段历史。
其实软件开发就像造小汽车,并不是一开始就有汽车设计图纸的,也不是将轮子、车身、车门发动机按部就班的装上去就可以的。而是大概率会经过一个轮子的独轮车、然后是两个轮子的自行车、再到三个轮子的三轮车,再到两个轮子的摩托车,三轮车等慢慢迭代才有的小汽车。
在计算机的发展历程中,它是一步一步演变过来的,并不像是从石头缝里蹦出来个猴头似的一蹴而就。如果你经历过一个完整的软件开发流程,那么你就会知晓一个完整的开发工序 :从软件需求分析 -> 软件程序设计 -> 绘制各种类图、时序图、ER图等 -> 软件开发 -> 软件测试 -> 软件上线 -> 运行维护。这些工序并不是凭空出现的,而是经历了各种几十年的演变而来。
我给你举个例子你就明白了,或许有些读者知道差分机这个东西(不知道也没关系,不影响我们后续的理解),如下图所示
这是被誉为电脑先驱的查尔斯·巴贝奇先生所设计制造出来的第一代工业计算产物 - 差分机。差分机拯救了人工计数,通过查表就能完成复杂的计算,但是巴贝奇先生并没有满足于差分机,他在此基础上不断改良不断重试,进而提出了分析机,提出了三大核心思想,这些核心思想即使拿到现在的社会也不过时:
它可以解决各种问题而不只是局限于计算。 它应该要有一般性解决办法来描述解决问题的过程。 它的计算和存储是分开的。
下面大家就跟我一起来探索一下这段计算机历史。
计算机出现之前
在很早的时候,人类就有计算设备的需求了,人类需要一种设备能够支持大量的计算,于是出现了 算盘
这个计算计算设备。算盘的历史非常久远,可以追溯到公元前 2500 年前,算盘就是一个手动的计算器,它能够把计算结果具象化,而不是单只在我们脑中进行计算。还有一点比较重要,算盘能存储当前状态。储存当前状态是在当时的背景下是非常新颖的一个想法,这同时也为后来硬盘等设备提供了理论思想。
其实很早的时候人类就对计算情有独钟,甚至可以追溯到历史 16、17 世纪时的对数表、三角函数时期。通过加减乘除来完成算术运算,不过此时的计算还局限于数学时期,对其他领域中的影响不大。到 18 世纪后期,人们就已经绘制出了一些专用表,通过查表的方式可以通过给定几个数得出想要的输出,到这个时期,数学计算已经在航海用表、天文学、保险、土木等领域发挥作用。
由于这个时期是航海大发现时期,大不列颠帝国在航海上有非常强大的统治力,此时的英国政府希望能够编制一本《航海天文历》的航海用表,于是这个项目从 1766 年出版开始,至今从未间断过。
航海天文历的绘制人员由遍布英国各地的大批计算员组成,很多计算员的毕生都奉献给了航海天文历的编写上,很可惜历史上几乎没有记录过这些人的姓名。
在这段时期内,一位名叫查尔斯·巴贝奇的伟人出现了,巴贝奇出身于名流之家,毕业于剑桥大学,剑桥大学的数学专业在英国已经算是顶尖了,但是巴贝奇却发现英国顶尖学府的教授还没有自己一名大学生懂得多,于是他和几个小伙伴一起组成了分析学会,成功的对剑桥大学的数学进行了重大改革。巴贝奇毕业后成为了英国一名绅士(原来绅士还可以被称为职业)。
巴贝奇与差分机的故事,要从法国大革命说起。君主制被推翻后,新成立的国民议会大刀阔斧地推行着多方改革,包括税制改革,统一度量衡。与此同时,原本的数学用表不再适用,需要重新编制。这项艰巨的任务落在了数学家加斯帕德·德普罗尼肩上。1819 年巴贝奇造访法国巴黎,结识了一大批法兰西科学家,就是在这次访问中,巴贝奇接触到了德罗普尼的法国制表项目,他在这段时期内开始对制表中存在的问题以及如何消除这些问题产生了强烈的兴趣,于是巴贝奇也参与了制表过程,他在参与时发现制表的过程异常繁琐,所以如何改善优化制表方式以及能否使用一种机器来替代人工制表成为了巴贝奇毕生的追求。
巴贝奇将自己设计的机器命名为差分机,并且巴贝奇用他出色的沟通能力来推广差分机(所以程序员不能只会写代码,还得能把自己代码表述出来),在 1822 年巴贝奇写信给皇家学会会长,向他提议请求英国政府资助他制造差分机,次年(1823年)英国政府出资 1700 英镑并且向他保证如有需要还会继续资助(找天使投资人的原型有木有)。
不过虽然巴贝奇有很深的数学以及哲学造诣,但他还是低估了差分机的工程复杂度,而且巴贝奇对预算控制和技术细节也设想的不到位,虽然困难重重但是他还是坚持了下去,在当时的环境背景下,制造一台差分机就像 20 世纪 40 年代中期制造一台计算机一样难。此时巴贝奇面前有两个巨大的挑战,一个是设计一台全新的世界上从来没有存在过的机器,一个是开发这台机器所需要的技术。这就像一边写 C 一边鼓捣硬件 。。。。。。
巴贝奇为制造差分机绘制了数百张机械图纸,写下的笔记达到了千页,这些资料都保存在伦敦科学博物馆,19 世纪 20 年代期间,巴贝奇致力于寻找可以应用在差分机上所需的技术,但是很遗憾几乎没有可以派上用场的技术。而在这期间英国政府一直在资助巴贝奇的差分机项目,据说总资助高达 1.7 万英镑,巴贝奇自己也投入了大量资金。
1833 年巴贝奇制造出来了一台差分机雏形,不过这台机器能完成的功能和人类手动制表来说还是差的非常远,而且此时的差分机没有印刷功能,所以没有被大规模生产,这台差分机至今还保留在伦敦科学博物馆中永久展出。
当差分机还没有批量生产时,巴贝奇又有一个新的想法:他设想能制造一种全新的机器既可以完成差分机所有的功能,还能够执行人类所做的任何运算,当他继续向英国政府申请资金援助时,英国政府拒绝了,这严重损害了英国政府对其项目的信心,所以从此巴贝奇再未获得任何援助。
巴贝奇终其一生都对大规模信息处理感兴趣,这一兴趣还体现在银行家清算所上。
由于 18 世纪使用支票的现象已经非常普遍,于是英国政府为了处理在商业活动上日益增长的支票数量,出现了银行家清算所,银行职员必须将客户存入的支票送到签发它的银行才能兑换现金,所以每家银行都有自己的跑款员,跑款员就是专门为客户去银行兑换现金的专员。但是这样时间一长跑款员天天为客户跑银行兑换现金也不是办法,所以 18 世纪 70 年代的时候简化了跑款员的工作,所有的跑款员统一约定好一个时间在一个地点见面兑换全部支票和现金,这样就节省了跑款员花费在路上的时间。这种形式不断演变,最终到 19 世纪 30 年代的时候,伦敦各家银行成立了银行家清算所。所有的跑款员直接在清算所兑换支票和现金即可。
由于银行家清算所的工作秘密性比较强,一般不对外透露,外界也不知道清算所内部的工作机制是怎样的。银行家清算所的管事是位很有威望的人物,巴贝奇被清算所的概念吸引,于是巴贝奇千方百计想要一探清算所的究竟,他致信清算所的管事表达了他想要进清算所一探究竟的需求,管事答应了他的请求但是告诫他不要对外透露关于清算所的任何事情。但是我们亲爱的巴贝奇完全忽视了管事的请求,他在《论机械和制造业的经济》书中洋洋洒洒的详细描述了清算所的具体工作。。。。。。
还有一种非常类似于银行家清算所的机构是铁路清算所,还是在 19 世纪,英国工业革命大力发展了铁路行业,使得铁路清算所很快成为全世界最大的数据处理机构之一,截至 1870 年,铁路清算所的员工数量已经超过了 1300 人,每年处理的交易接近 500 万笔。
还有需要大规模数据处理的发明是电报,电报最初是解决铁路系统通信问题的一种方案,因为很多人担心两辆客车相互从轨道相向驶来会产生事故问题,于是工程师们研制出了电气通信系统,人们很快就发现了这种系统的商业价值,于是一夜之间电线杆在铁路沿线拔地而起。
虽然电报是通过电信号传输,但是它还是得依赖于人员操作才能进行发送,而主管电报发送的有一大部分是女性,因为人们普遍认为女性要比男性更加适合于操作精密仪器。刚开始的时候发送一封电报非常昂贵,但随着电报网的铺设,电报变得越来越便宜,电报数量越来越多,到 20 世纪初,英国中央电报局已经雇佣了至少 4500 名电报员,每天收发的电报数量在 12 万 - 16 万之间,成为世界上最大的电报局。
到了 19 世纪末,科学和工程领域中会用到很多计算设备,但是计算设备在政府、工业和家庭中却非常少见。美国宪法从 1890 年的人口普查中面临非常严重的问题,那就是日益增长的人口问题。美国政府要求每 10 年进行一次人口普查,
但是随着计算效率出现瓶颈,1880 年人口普查需要 7 年才能完成,1890 年的人口普查甚至要 13 年才能完成,要知道每 10 年才会进行下一轮普查啊,简直离谱姥姥给离谱开门了。
于是人口普查局找到了赫尔曼何乐礼博士,他发明了打孔卡片制表机。
打孔卡片制表机的原理是这样的:赫尔曼首先把穿孔纸带改造成穿孔卡片,以适应人口数据采集的需要。由于每个人的调查数据有若干不同的项目,如性别、籍贯、年龄等等。赫尔曼把每个人所有的调查项目依次排列于一张卡片,然后根据调查结果在相应项目的位置上打孔。例如,穿孔卡片“性别”栏目下,有“男”和“女”两个选项;“年龄”栏目下有从“0岁”到“70岁以上”等系列选项,如此等等。统计员可以根据每个调查对象的具体情况,分别在穿孔卡片各栏目相应位置打出小孔。每张卡片都代表着一位公民的个人档案。
赫尔曼博士巧妙的设计在于自动统计。他在机器上安装了一组盛满水银的小杯,穿好孔的卡片就放置在这些水银杯上。卡片上方有几排精心调好的探针,探针连接在电路的一端,水银杯则连接于电路的另一端。与杰卡德提花机穿孔纸带的原理类似:只要某根探针撞到卡片上有孔的位置,便会自动跌落下去,与水银接触接通电流,启动计数装置前进一个刻度。由此可见,霍列瑞斯穿孔卡表达的也是二进制信息:有孔处能接通电路计数,代表该调查项目为“有”(“1”),无孔处不能接通电路计数,表示该调查项目为“无”(“0”)。
打孔卡片制表机的效率是手动普及效率的十倍左右,使得人口普查在短短的两年内就完成了,为人口普查办公室节省了数百万美元。
然后很多企业开始意识到使用这种计算设备的价值,他们可以通过自动化提升劳动力以及数据密集型的任务来提升利润。这对一些需要大量计算劳动力的工作有很大的替代性,比如会计和一些仓库管理员等工作。
赫尔曼意识到了这个问题,并在 1896 年创办了制表机器公司,成为了 IBM 的前身,这为电子计算机的发展奠定了基础。
未完待续。