03-那艘会演奏音乐的船,其实藏着最早的“程序”
1. 编程的本质:不是代码,而是思想
你有没有想过,什么是“编程”?大多数人的第一反应,大概是:在电脑上写一堆代码,然后做出一个小游戏或者网站。尤其是你要是学过编程,可能会觉得这个问题太简单了,根本不用解释。
可实际上,编程真正的核心,并不是代码本身。而是:通过一系列指令,控制机器按照你的设定行动。
而且你可能不知道,这种“控制机器的艺术”,其实在没有电脑的年代,就已经存在了。
2. 回到800多年前:没有电脑,人也在“编程”
要了解这段历史,我们得穿越回800多年前的中东。在阿拉伯帝国,有一位天才发明家,叫伊斯梅尔·阿尔·加扎利。他造出了一艘非常特别的小船——一艘会自动演奏音乐的机械船。

这艘船上,坐着几位贵族和国王,周围还有四位“音乐家”:一人打鼓、一人吹笛、一人弹竖琴,还有一人负责节奏。这些音乐家看上去惟妙惟肖,但他们不会说话、不会走动,因为他们其实是机械木偶。
那问题来了:这些木偶怎么会弹奏乐器呢?
秘诀在于——机关装置 + 编排顺序的“程序”。

如果你玩过八音盒,就会懂这个原理。旋转的金属圆柱上有许多小突起,每个突起在旋转时碰触内部的金属片,从而发出乐声。加扎利用类似的设计原理,让不同位置的“突起”控制木偶动作,从而实现“编排音乐”。
更厉害的是,他还让这些突起的位置可以更换,也就是说,只要重新设置这些点,木偶就能演奏出全新的曲子!
这就是早期的“可编程”系统——没有电子设备,却依然能靠机械装置实现自动控制。
我尽可能收集了互联网上所拥有的视频资料,找到了一个视频并发布在网站上。有兴趣的可以访问看看:
- 个人网站:https://bornforthis.cn/column/py/share/Kunstkammer-Wien-der-Schiffsautomat.html
- B 站上传:https://www.bilibili.com/video/BV1B4dDYXEcv
3. 从机械音乐人,到数据革命的机器
时间快进几百年,我们来到19世纪末的美国。这时候,另一个编程故事悄然展开。
当时,美国政府遇到一个大难题:人口普查。
根据法律,每10年一次的大型统计工作,必须收集全美范围的年龄、性别、受教育程度、职业、健康情况等20多项数据。1880年那次统计,光是分析数据就花了整整9年,新一轮普查还没开始,上一轮的数据就已经过时了。

为了改变这种效率低下的局面,一位年轻工程师站了出来:赫尔曼·霍尔瑞斯。

他设计出了一种名叫“打孔卡片制表机”的装置。原理也不复杂:在纸卡片上打孔,每个孔位代表一个信息,比如性别是“男”,年龄是“11岁”。然后把这些卡片送进机器,机器根据孔的位置读取数据,自动统计结果。
对于很多人来说,这种方法或许并不陌生。像考试时涂答题卡,就是和打孔卡非常相似的一种做法。通过安排孔位——也就是设定机器可识别的“语言”——来告诉设备要怎么处理、统计,这本身就已经算是编程了。

你可以把它理解为19世纪的“扫码统计系统”,只是当时的“扫码”,靠的是小孔和机械触点。
为验证效果,政府搞了场比赛。霍尔瑞斯的机器,只花了半天就完成了任务,而其他人的手工方案则要几天甚至更久才能出结果。他凭此赢得了1890年普查的正式合同,并把分析时间从9年缩短到2年半!
更重要的是,霍尔瑞斯还给这台机器增加了扩展功能——不仅能做人口普查,还能处理商业、卫生等各种数据,成为早期“通用型信息处理系统”。
这项技术,后来发展成一家公司,就是今天科技巨头之一的 IBM 的前身。
4. 那打孔卡片,跟现代编程有什么关系?
你可能会问:打孔就打孔,跟写代码有啥关系?
这就要回到我们最开始说的那句话:编程的本质,是通过一组指令,让机器在正确的时间做正确的事。
打孔就是在用“机器能识别的方式”表达这些指令。每张卡片相当于一段程序,多个卡片组合起来,就是一套复杂的逻辑流程。
只是那个年代,程序不是键盘输入的,而是靠人手一张张打孔。霍尔瑞斯本人曾一天打上百张卡片,手臂打得肿胀酸痛,可他也由此开启了信息自动处理的新时代。
之后,自动打孔机出现,工作更轻松了。再之后,“打孔卡片”演变成了程序语言、操作系统和我们今天使用的各类“编程工具”。
5. 编程,不止是技能,更是看问题的方式
从加扎利的音乐船到霍尔瑞斯的卡片机,我们看到的是:编程的本质,从来都不是代码,而是一种思考方式。
它让我们能提前设定规则、设计流程,让机器自动完成复杂任务。而这种能力,早在没有电脑的时候,人类就已经具备了。
所以,如果你正在学习编程,记住一件事:学习编程,不只是为了写代码,更是为了拥有掌控复杂系统的能力。
这正是本书要带你感受到的编程魅力。下一篇,我们会继续探讨另一个重大发明,它直接促成了我们今天使用的“真正的电脑程序”。
6. 选择题
霍尔瑞斯的公司是哪个大型公司的前身?
A. 微软
B. IBM
C. 谷歌
编程最早可以追溯到哪位发明家?
A. 伊斯梅尔·加扎利
B. 赫尔曼·霍尔瑞斯
C. 艾伦·图灵
霍尔瑞斯发明了什么机器统计人口数据?
A. 数据统计机
B. 自动计算机
C. 打孔制表机
更新日志
ff458
-于87164
-于b44db
-于9e879
-于bba9b
-于8d4bb
-于3a5af
-于cefa0
-于1fb36
-于1c35a
-于aed17
-于f14b0
-于e6ce4
-于69882
-于772c4
-于e6a0f
-于cbb3a
-于610fe
-于f08aa
-于76989
-于86c50
-于027da
-于