科幻小说界,有一个概念叫做赛博朋克,指的是赛博时代数字技术大行其道的反乌托邦未来。这个概念这几年非常火,比如最近大热的电影《攻壳机动队》、《银翼杀手2019》还有马上将要上映的《战斗天使阿丽塔》,都是典型的赛博朋克。随着这个概念的兴起,也衍生出了很多相似的概念。但是,我今天不讲赛博朋克,我讲蒸汽朋克。
蒸汽朋克真的很朋克,它不是设想未来的场景,而是先穿越回蒸汽时代,以一个十九世纪的视界来设想未来的画面。在蒸汽朋克的世界里,到处是身穿燕尾服,手拄文明杖,带着鼻夹眼睛的英伦绅士,他们开着巨大的黄铜潜水艇或是氦气飞艇周游世界,身边还跟着个用齿轮和发条作为动力的仆人路路通。
现在,想象一下,如果你穿越回大英帝国最辉煌的维多利亚时代,当务之急,你所要做的,是什么呢?
在历史上,有三个奇人,以超越时代的眼光生活在他们所处的世界,我不知道他们是不是穿越者,但是这三个人,在芯片技术发明之前数十甚至一百年前,就已经看明白了这整个世界的走向,不约而同地开始做同一件事——
(文章题图为根据巴贝奇的差分机原理复原的现代制品)
如果真正对蒸汽朋克感兴趣的读者,一定读过威廉吉布森的名作《差分机》。以威廉吉布森的水准,这部小说显然不是一部成功的作品,但是它的历史地位却不容小觑。这本《差分机》可以算是蒸汽朋克的开山之作。而这部小说的主角,正是查尔斯·巴贝奇……的差分机。
查尔斯·巴贝奇出生于1792年的一个英国银行家的家庭(家里有矿)。他继承了父亲的数学头脑,19岁进入剑桥大学学习数学,25岁成为英国皇家学会会员,37岁被推举为卢卡斯数学教授。他参与创建了英国天文学会和统计学会,是天文学会金质奖章获得者,还是巴黎伦理科学院、爱尔兰皇家学会和美国科学学院的成员。
这个人显然是一个天才,同时也是一个科学狂人,他搞了许多完全不搭界的科学研究,在各个领域都有涉猎:他提出建议,让灯塔一闪一闪,以给船只导航。当时全球的邮政都是按照距离计算费用,而且是收件方付款,非常麻烦,他提出了一套统一邮资收费法,不论远近,只要贴上一张邮票通通都到到,这个模式一直沿用至今。他破译密码,编写词典,观察动物的呼吸,还抽空发明了眼镜检测仪。
他年轻的时候曾经到巴黎留学。受启蒙运动百科全书流派的影响,法国的数学家普罗尼正在搞一个庞大的制表计划,持续数十年,要把森罗万物的数据制成表格。巴贝奇了解之后,大受感动,果断从其中随机抽出了40本,指出了3700处错误。这个差错率那还得了?作为天性严谨的摩羯座,他决定发明一个机器,能够计算一切函数,扫除所有表格中出现的人为误差。
差分机能够干什么呢?简单来说,就是两个功能,算数,制表(并没有大家后面想象得那么神)。于是,1821年,在他二十九岁那年,巴贝奇跟他老爸要了一大笔钱,开始造差分机。一开始很顺利,花了一年时间,他就找了一个小型的demo版差分机。这台机器“有三个寄存器,每个寄存器是一根固定在支架上的带有六个字轮的垂直轴,每个字轮代表十进制上的某一位数字,这三个寄存器可以保存三个十万以内的数字”。听上去还不错的样子。
尽管如此,巴贝奇还是感到非常振奋,能做加法,就够了。因为根据有限差分算法,所有的公式都可以最终还原为加法……现在你明白为什么要叫做差分机了。
那么这台差分机到底是怎么运作的呢?(为了避免引起不适,我把原理放在文章的最后,大家可以随缘跳过)
总之,搞出demo的巴贝奇非常振奋,觉得这么大一个项目,不能光自己输血,得申请国家科研基金啊!他写信给英国皇家科学院的主席,详细地画了这么一个大饼:“用两三年的时间,制造一台有七个寄存器,每个寄存器可以保存一个20位数字的差分机,该差分机可以为六次多项式制表,同时机器还有自动印刷结果的部件,以避免手工抄写可能出现的差错.”
然而实际的操作并不顺利,因为差分机所需的零件太多,以当时的精密度很难达到要求,整个过程中巴贝奇自己也不断修改方案,一直到1833年,巴贝奇才做出了差分机二型的一小部分。十年过去了,英国政府一共投入1.7万英镑的资金,换算成现在的人民币,怎么也得有个四五千万吧,看到成果遥遥无期,英国皇家科学院翻脸撤出了对这个项目的支持。
这还不是最悲伤的,坑爹之处在于,巴贝奇本人也投入(他老爸留给他的)1.3万英镑。就是家里有矿也禁不起这样造啊!愤恨的巴贝奇在给朋友的信件中吐槽英国政府都是些精明的小气鬼。
但是这次打击并没有对巴贝奇造成多大的影响,拜托,损失个把万英镑算什么,谁也别拦着我搞学术好吗?1839年,48岁的巴贝奇辞去了他的卢卡斯数学教授席位,潜行研究他的新一代黑科技。大家注意,卢卡斯数学教授并不是一个普通的教授头衔,而是英国剑桥大学的荣誉职位,授予对象为数学及物理相关的研究者,同一时间只授予一人,牛顿、霍金、狄拉克都曾担任此教席。连卢卡斯教授都不当了,可想而知巴贝奇当时的决心,破釜沉舟要把这个新机器搞出来。
巴贝奇曾在给布鲁塞尔科学院主席斯塔萨尔特的信中这样说:“我本人都为自己这台机器的威力所吃惊,一年前我还不相信能有这样的结果!这台机器可以处理10个变量,每个数可以有25位数字……”
按照他的设想,这台分析机拥有:一个“堆栈”,相当于计算机的存储器,以齿轮的形式存储各种数字信息;一个“工场”,相当于计算机的运算器,计算各种数据,当然,还是以齿轮的形式,这个“工场”本质上就是一台功能强大的差分机;一个控制操作顺序、选择所需处理的数据的装置,这个装置他没命名,相当于计算机的控制器;以及最后,一个输入和输出端,相当于现在我们所说的用户界面。一开始他想让机器把数字打印出来,或者用铅板印刷。但是这种模式显然相当原始,缺乏科技感。最基本的理由是,打出的数据必须重新用手输入,浪费时间且容易出错。他必须要找一种能够直接“机读”的模式。而解决方案来自于一个法国的纺织品商人雅克尔·路昂,该人最早运用打孔资料带来控制提花纺织品的布纹图案。这个运用打孔卡片来输入和输出程序数据的想法是如此之酷,以至于打孔卡片和黄铜齿轮一样,成为了“蒸汽朋克”的两大象征物。
现在你再玩《耻辱》或者《生化奇兵》,看到里面的打孔卡片式留声机,就明白它的运作原理了。
能存储,能计算,能输入和输出,和一台现代计算机相比,他们之间只有一步之遥——它还需要能运行起码一个程序。
1833年6月5日,41岁巴贝奇举办了一个聚会,邀请业内的好友前来参观他的差分机。这个聚会为他圈粉了一位时年17岁的小迷妹。这个长相甜美的小姑娘,叫做艾达·洛浮莱斯,哦,不,当时她尚未结婚,应该叫娘家的姓氏,艾达·拜伦。她是拜伦的嫡女。
这位艾达·洛浮莱斯也是一位槽点满满的人物。这世界上第一个人也许(如果圣经说的没错的话)是男人,但这世界上第一个程序员,却绝对是一个女程序员。艾达不仅是一个数学天才,而且家里也有矿。正如威廉吉布森的小说中写的那样,这位差分机女王酷爱赌马,据说累计共输掉了4万英镑(呵呵,我好像明白了为什么差分机造不出来)。她身体不好,一直有吸食鸦片和大麻的习惯。当时的皇家学会图书馆不允许女性进入,为了搞学术,她还想方设法把自己的老公威廉姆塞进皇家科学会。她英年早逝,死于1852年,时年36岁,只比她同样狂放不羁的爸爸多活了不到三百天。1975年,美国国防部以她的名字(ADA)设计了一种编程语言,以极高的稳定性和安全性著称,至今仍是美国航天航空设备的钦定语言。
17岁的艾达在见过这台黄铜机械之后,就沉迷其中不能自拔,在随后的岁月里,她为差分机写了大量的文章,还将一本法文说明书《关于巴贝奇先生发明的分析机简讯》翻译为英文,并(以极大的热情)为249页的原文添加了297页的注释。她为分析机编制了一系列的程序,设计出一个几乎完整的计算伯努利数的程序。她对重复使用一组卡片的描述,其作用很像今天计算机程序中的子程序。她是当时那个时代对巴贝奇的思想有深刻了解和正确估价的为数不多的人物之一。有意思的是,哪怕在她死后,她的小儿子亨利也依然坚定地支持巴贝奇的事业,直到巴贝奇死后还为分析机出版了一个论文集,他说:“总有一天,类似的机器将会制成,它不仅在纯数学领域中,还将在其他知识领域中成为强有力的工具。”
晚年的巴贝奇依旧是一个充满性格的奇人,他在1864年出版了他的朋克自传《一个哲学家的生命历程》,在其中他介绍了自己的“戏剧经验”以及“旅行技巧”,包括“如何在欧洲搞到一辆房车”。他还发起一场运动,攻击那些影响他睡眠的街头音乐家。
终其一生,巴贝奇也没有造出他的分析机,倒是在同时代,一对瑞典父子乔治·苏兹和他的儿子爱德瓦·苏兹却根据他的理论自行设计了三台差分机,都取得了成功。他们后来还专门来到伦敦,拜访了巴贝奇,并在皇家科学会现场演示了他们的差分机,深深地伤害了老爷子的感情。
如果分析机真的在一百六十年前造出来,我们今天的世界会不会大不相同呢?答案是很可能不会。毕竟差分机已经造出来了,以当时的技术,这种齿轮传动的计算机,速度并没有快到足以替代廉价人力的程度。慢人一步是一种悲哀,然而快人一步,在很多时候,又何尝不是一种悲哀呢。
一级差分由相邻两个4次方值相减得到(如16-1=15);二级差分由相邻两个一级差分值相减得到(如65-15=50);三级差分由相邻两个二级差分值相减得到(如110-50=60);循此程序可得到四级差分值。不难发现,四级差分等于一个常数(如84-60=24)。一般地,n次方的n级差分均为一个常数且恒等于n阶乘(n!)。若借用回归即逆向加法运算就能推出4次方表的其他数值。差分法运算原理详见下表:
由第一行四级查分值下移一行极客给出新一行四级查分值(24),然后将新的四级查分值与已知的相邻差分值相加就得出新的三集差分值(24+84=108,),再将此值与已知相邻二级差分值相加就得出新的二级差分值(108+194=302),循环此程序,可得出性以级差分值(302+369=671),最后将此值与已知的54(=625)相加,就得出64(=1296)。以此类推,可得到7,8,9,……n的4次方值。
而所有数学函数,都可以分解为Y=anXn+an-1Xn-1+……+a1X+a的多项式,则一切函数,都可以转化为差分机的加法运算,通过机械操作,便能算出正确结果。
评论区
共 55 条评论热门最新