是时候放上我女神的照片了。
▲阿波罗计划的首席软件工程师玛格丽特·汉密尔顿站在阿波罗项目中导航计算机源代码旁边,正是这些代码把人送上了月球
我们来看看为什么这些代码是神操作:
1、火箭和飞船上的代码开发难度完爆其他人说的电脑上的代码(不管是磁心线还是打孔卡片),在计算机还没有发展完善以前,火箭代码是没法debug的喔,总不能每改一段代码就发一颗新火箭吧。打孔卡片虽然逼格高,但是总不会程序出了bug就炸飞几千万美元的设备吧。火箭和飞船的程序员们肯定通过纸笔度过了很多不眠不休的夜晚。
2、那个时候晶体管计算机还没发展完善,很多东西没有统一,大家做一个计算机出来就自带一套汇编。而阿波罗飞船上包含着许多不同的计算机模块,避障模块是A公司产的,中央处理器是B公司产的……为了给不同的模块编程,少说得学三五套汇编语言。手下的程序员专门负责某个模块,只用学一套,但是玛格丽特自己作为项目的leader,应该得是每一套都基本可以弄懂、会写、还不搞混吧。当然,这一点相比于其他事情已经是小事了。
3、人类实现的第一个卡尔曼滤波器(线性系统的最优估计观测器)是在阿波罗计划中实现的,作者是斯坦利施密特,不过我猜玛格丽特作为首席工程师也是参与讨论和开发的,代码一定也在这一摞厚厚的纸当中。为什么开发卡尔曼滤波器就比比尔盖茨写Basic解释器更屌呢,根据吴军老师《文明之光》第二册(哎呀妈呀这一段太屌了,每次和别人讲都觉得热血沸腾),斯坦利施密特是和卡尔曼讨论阿波罗的轨迹预测问题时发现卡尔曼滤波器的妙用的。卡尔曼滤波器是一个我觉得很高大上的东西,因为和一般的程序不同,他用到了深刻的数学和数值计算工具。轨迹预测的话,三维位置,三维速度?如果是这样的,那么他们的代码里包含对六阶矩阵的乘法、求逆矩阵(LU分解或者QR分解)。当然也许他们只预测位置,那么三维矩阵求逆就好办了一些,然而我觉得,我们可是在谈几百万美元的大飞船啊怎么可能没有带速度的运动模型,应该还是搞六维的吧。让现在任何一个工程师拿C手写矩阵分解,估计都会让他痛苦好几天的,别说上古时代只有晶体管计算机和汇编语言了。
大家应该能想想出更多艰难的事情了。。。
4、最神操作的当然是“女神玛格丽特对自己人生的选择”
大家可以自行搜索她的照片,真人很漂亮,在1969年就已经引领了黑丝连衣裙的流行女神装扮,中年之后依然知性优雅。明明靠脸就能够生活得很好了,却选择了程序员的职业生涯,而且还领导了人类历史上最伟大的软件工程,这个人生真是……我辈只能佩服得五体投地。
所以每次我写好程序到飞行器里忐忑不安地准备测试的时候,我都会想一想我的女神,然后鼓励自己:这没什么难的,你的卡尔曼滤波器是用Eigen写的,安全的很;你的飞行器也就几万块钱,便宜得很……
本文来源:不详 作者:佚名