03-八百多年前的人就开始编程了?
你好,我是悦创。
我问你一个问题:编程到底是什么?听到这个问题,你可能会觉得好笑:这个问题怎么这么简单啊,我还会不知道编程是什么嘛!编程不就是用电脑写出一行行代码,然后做出一个小程序或者小游戏嘛。而且,也许你已经学过编程,甚至尝试着自己用代码创造了自己的小游戏。
其实啊,在这门课程里,我就是要让你体会到,编程原来并不只是写一行行代码这么简单**。编程是要告诉机器,在什么时候做什么样的事情。**诶,你可能注意到了,在刚才那句话里,我说的是“机器”而不是“电脑”。那是因为,编程并不一定要靠电脑。实际上,在电脑出现之前很久,人们就已经开始编程了。可是,没有电脑怎么编程呢?诶,这就要说到编程的起源了。
现在咱们说编程的起源这件事儿啊,一般来说,都会追溯到800多年前。当时,在阿拉伯帝国,有一个聪明又能干的发明家,叫做伊斯梅尔·加扎利。他发明了很多有意思的小物件,其中最有名的一件,是一条小船。
没错,就是一条可以漂浮在水面上的小船。你可能会疑惑了,小船有什么了不起的啊,我也会折小纸船啊。不过,加扎利的这条小船可就厉害了。
船上坐着一位国王和几位贵族,他们在开宴会,喝酒呢。在船的角落里,还坐着4位音乐家,两位负责打鼓,一位负责弹竖琴,还有一位吹笛子。他们在演奏动听的音乐。虽然技术高超,但这些音乐家都不会说话,也不能喝酒。因为,他们都是木头人。

诶,问题来了,木头人是怎么演奏音乐的呢?这里头的秘密跟八音盒有关。八音盒你一定玩过吧,只要给八音盒上好发条,它就会开始旋转,并且发出清脆的音乐声。
如果你拆开过八音盒,就会发现它的核心零件是一个圆柱形金属。在这个圆柱形上边,有很多小小的凸起。圆柱形金属旋转起来之后,金属片上的那小凸起就起到了手指的作用,按照一定的规律拨动八音盒里的琴键。音乐就这样响起来了。
听到这里,你想到加扎利是怎么做的了吗?
没错,加扎利也在船里安装了一个八音盒。在这部机器里头,也有一个金属圆柱。而且,他这个圆柱形上边的小凸起是活动的,可以取下来重新安装,改变位置,这样一来,木头音乐家就能演奏出不同的音乐了。
我在屏幕上放了一张加扎利音乐船的图片。图片的最左侧就是四位音乐家,他们的座位下面,就能看到那个金属圆柱。

诶,就这样,事先设置好拨动琴键的顺序,让机器在特定时间发出特定的声音,其实就是可以算作最早的编程了。可惜的是,加扎利并没有把这种想法运用到别的领域去。很快,这种制作技巧就失传了。
后来,一代又一代的发明家,又各自独立地想出了很多编程的主意。其中,对咱们今天影响最大的,是一个叫霍尔瑞斯的人。

霍尔瑞斯是个美国人。那个时候的美国啊,碰到了一个大麻烦。
这个大麻烦来自美国从建国以后形成的一个传统:每隔10年要进行一次全国人口大普查。这是一项非常重要的工作,可不光是数数有几个人那么简单。还要弄清楚某个人,认不认识字呀,是不是有什么疾病,是不是干过什么坏事等等等等,一共有20多个问题呢。
不过,那个时候,统计这些数据只能靠人工。随着美国的人口越来越多,统计人口普查信息的难度也越来越大了。到1890年,又进行了一次大普查,结果竟然收回来1000多万份问卷。普查办公室主任既高兴,又忧愁。高兴当然是因为他收集到了国家的重要数据。忧愁呢,抱着这一大堆数据,不好处理。
刚才我说了,当时所有的统计工作都是靠手工来做的。如果你每天统计100张问卷,那1000万张,要花270多年才能做完!要是找上30个同学帮你做,那也得花上9年才能做完。
你还别说,10年前,也就是1880年的普查数据,还真的是花了9年才算出来的。每10年做一次的人口普查,要花9年才能统计出结果,这就意味着这些数据刚一出炉就过时了。因为再过一年,就又要开始新的大普查了嘛!这就好比是,你到了4年级期末考试的时候,才交出3年级的暑假作业。碰到这种情况,老师大概也只能朝你翻个白眼了吧。
更糟的是,1890年的普查,数据更多,要花的时间更长。人们议论纷纷,说普查办公室工作能力不行,没有金刚钻硬揽瓷器活,真是不知道天高地厚。
可是,人口普查那可是法律规定的,而且的确特别重要,无论如何都得做。但硬做的话,又实在是太慢了,这可怎么办呢?普查办公室主任想出来一个好主意,在1890年人口大普查开始之前,他就宣布:如果有谁能够又快又好地统计数据,我就把这个活安排给谁干。钱管够、饭管饱!
危难之际总有英雄出现,这次,一个年轻的小伙子站出来了,他就是霍尔瑞斯。霍尔瑞斯发明了一种新机器,叫“打孔卡片制表机”。这台机器呢,有点像一台打印机,把一摞摞打了孔的卡片塞进去,统计结果自己就出来了。

那这台机器到底靠不靠谱呢?普查办公室特地举办了一场比赛,让霍尔瑞斯和其他拍胸脯保证能解决问题的人,一起当场比试。结果,霍尔瑞斯果然大获全胜。他只花了半天就交卷出场了,而他的对手,最快的,也要忙活2天,才能才交出答卷!毫无疑问,霍尔瑞斯赢了,拿下了这单大生意。
那么,霍尔瑞斯的机器到底是怎么做的呢?说来也简单,靠的只是在卡片上打孔。比如说吧,假设你是一位11岁的男性公民。那么,就可以在你卡片上的“性别”栏底下表示“男性”的位置打一个孔,再在“年龄”栏的“11岁”下边也打一个孔。那么,这两个孔就是表示:你11岁,是个男的。
如果你的爸爸妈妈也在听这一讲,他们一定会觉得这个做法非常熟悉。他们参加过的一些考试,在答题的时候,就要做类似的事情:用铅笔,在特制的答题卡上,把要选择的答案涂黑。没错,这样的答题方法,跟霍尔瑞斯的机器几乎是一样的。
卡片打好孔之后,一张卡片就代表了一个人。等所有人的卡片都打完孔了,再把它们全都塞进机器里。机器就会读出小孔代表的信息,再把它们加起来。这样,全美国有多少个男性,有多少人11岁,就全部计算出来了。

靠着这台机器,工作人员只用了2年半的时间,就完成了1890年人口大普查的数据统计。从此呢,美国的人口普查也告别了手工计算的旧时代,迎来了机器计算的新时代。霍尔瑞斯也因此赚到了大钱。后来,他开了一家公司专门做这个生意。这家公司就是现在鼎鼎大名的IBM公司的前身。IBM公司特别重要,咱们后面的课程里还会提到它。
听到这儿你可能还会有疑问,打孔跟编程有什么关系啊?
其实,打孔就是一种编程了!
还记得我前面说的嘛,编程就是告诉机器该做什么事情。霍尔瑞斯在卡片上打孔,就是创造了一种让机器能听懂的语言,让它知道该记录什么数据,并且能够完成统计任务——这当然就是在编程。
不过,咱们现在编程只要敲敲键盘、点点鼠标就能完成。霍尔瑞斯的编程方法就费力多了。在一开始的时候,霍尔瑞斯把自己全家的钱都拿来搞发明了,根本没钱雇人在纸上打孔,只好自己亲自上阵。他一天就要给几百张卡片打孔,从白天忙到半夜,打孔打得胳膊都肿了,抬都抬不起来。所以,那个时代的编程完全就是重体力活啊!
后来呢,霍尔瑞斯发明了打孔机,用机器帮人打孔,就省力多了。而且,最初霍尔瑞斯的机器,只能统计人口数据。那人口数据一统计完,岂不是就没事做了?这可不行,于是霍尔瑞斯又搞出来一项新发明:在机器上加装一个设备,让它也能统计别的数据,什么卫生数据啊、商业数据啊,样样都行!你看,这么一台机器能干很多不同的事情,是不是已经很像今天的电脑程序了呀?
其实,霍尔瑞斯这种制造一台机器完成多种任务的想法,特别重要,咱们今天能用上方便的计算机都和这种想法有关。下一集,我就来给你说说这种厉害的思维,我们下一集见。
更新日志
fce1e
-于1f429
-于d1a80
-于2b312
-于1c35a
-于aed17
-于f14b0
-于e6ce4
-于69882
-于772c4
-于e6a0f
-于cbb3a
-于610fe
-于f08aa
-于76989
-于86c50
-于027da
-于