智能应用 影音
EVmember
DForum0515

写程序的女将军

林一平手绘之哈普(左)与艾肯(右)。林一平

写电脑程序,如有错误,就必须诊错。诊错又称为「抓虫」(debug) 。电脑出错,我们说电脑有虫(computer bug),典故为何已不太清楚,但这个词儿确定是因为美国海军的女将军哈普(Grace Hopper)的宣传而众周所知。哈普是最早期的电脑软件工程师,修改程序,替电脑抓虫,是家常便饭。然而软件工程师如何当上女将军?

哈普是耶鲁大学的数学博士,由于出身军人世家,向往军旅生涯,因此在1943年投笔从戎。当时哈普34岁,体重105磅。对于这位超龄超重的女生,美国海军勉为其难的让她加入后备役中心受训。结训后,挂阶成为海军上尉,和Mark I电脑的主要设计者艾肯(Howard Hathaway Aiken)一起工作。

哈普回忆她第一天到职时,艾肯的欢迎辞是: 「你到底去哪儿了(Where the hell have you been)? 」然后指着Mark I电脑说: 「在这儿,下周四前计算圆弧切序列的系数。」于是她成为Mark I的第三位程序设计师,主要工作是在不同的天候,24小时不停的校正海军炮管的瞄准角度。

哈普显然很耐操,艾肯指定的任务她都能使命必达。「电脑抓虫」的第一次书面报告是由哈普所记录。「虫」(bug)一词很早就被工程师用来叙述难以捉摸的瑕疵,例如1878年爱迪生就以「虫」来形容不易诊错的硬件设计。有一次Mark II的成员由电脑移除一只导致继电器(Relay)故障的2英寸飞蛾。哈普说: 「从那时起,当电脑出了什麽问题,我们说它有虫。」替电脑抓虫的说法,因此广为人知。

虽然因工作优异被记功,海军仍然暗示哈普,告诉她40岁后还在当兵,年纪未免太大了。哈普只好离开海军,于1949年加入刚成立的埃克特-莫奇利电脑公司(Eckert-Mauchly Computer Corporation),为UNIVAC I电脑写出全世界第一个编译器(Compiler)。

哈普叙述她发明编译器的理由,是因为她很懒惰,不想写机器码,希望「程序师可以回归成为数学家」有人开玩笑的告诉哈普:「但是格蕾丝,以后阿狗阿猫都可以写程序了。」换言之,当一般人都能写程序后,这群写机器码的专家,还有工作吗?

哈普设计的第一个编译器将数学公式翻译为机器码。她接下来想将英文指令(english commands) 翻译为机器码。大家都认为她的想法太疯狂,不切实际。结果她成功了,发展出商业化的FLOW-MATIC编译器。这个编译器深深影响到后来广为金融商务使用的电脑语言COBOL (Common Business-Oriented Language) 的设计。在哈普的创见后有人陆续在编译器的发展进行研究,例如波黎士(Alan Jay Perlis)因为在编译器研究的贡献成为第一位图灵奖(Turing Award)的得主。

现为国立阳明交通大学资工系终身讲座教授暨华邦电子讲座,曾任科技部次长,为ACM Fellow、IEEE Fellow、AAAS Fellow及IET Fellow。研究兴趣为物联网、移动计算及系统模拟,发展出一套物联网系统IoTtalk,广泛应用于智能农业、智能教育、智能校园等领域/场域。兴趣多元,喜好艺术、绘画、写作,遨游于科技与人文间自得其乐,着有<闪文集>、<大桥骤雨>。