一提起“哈明码”(也有译为海明码的),恐怕很少有人不知道的。这种能找出并纠正数据块在传输过程中出现的错误的编码方法,对于计算机技术和通信技术来说真是太重要了。发明这种编码技术的理查德·哈明(Richard Wesley Hamming,1915-1998)因此而获得了第三届即1968年度的图灵奖。
哈明1915年2月11日生于芝加哥。
1937年在芝加哥大学获得数学学士学位,1939年在内布拉斯加大学获得硕士学位,接着又于1942年在伊利诺伊大学获得博士学位,成为一名数学专家。学成以后,他留校工作两年,然后转入肯塔基州位于俄亥俄河畔的路易斯维尔大学任教,两年后来到洛斯阿拉莫斯国家实验室,参与了著名的曼哈顿计划。但在那里哈明也只呆了两年,就又转到贝尔实验室工作。
正是在这里,哈明遇到了他感兴趣和能发挥他特长的课题,也有一个适宜的工作环境,因此一干就是30年(1946-1976)。这期间,他曾长期担任贝尔实验室计算机科学部主任。1976年他离开贝尔,到美国海军研究生院(Naval Postgraduate School, 在加利福尼亚州的蒙特雷)工作,直到1997年82岁高龄时才退休,第二年1月7日去世,享年83岁。
哈明到贝尔实验室后接受的第一个任务就是解决通信中令人头痛的误码问题。通信时发送方发出的信息在传输过程中由于信号的衰减和外界的电磁干扰,到接收方产生了畸变和失真,获得的是错误的信息。这在商业、军事等应用中都会产生严重的后果,有时简直会祸国殃民,因此迫切需要加以解决。但在相当一段时间里,这成了摆在许许多多科学家和工程师面前的一大难题,谁也找不出解决的好办法。
哈明接受了这个任务以后,意识到通信线路质量的改善是有限度的,外界干扰是客观存在的也无法绝对避免,因此这个问题不可能通过让发送的代码不出错这条途径去解决,而只能通过一旦出错如何发现、如何纠正才能解决。这使哈明的研究沿着正确地路线进行。经过深入讨论,1947年哈明终于发明了一种能纠错的编码,这种码就叫“纠错码”(error-correcting-code)或“哈明码”(Hamming code)。
哈明码是一种冗余码,即在有效信息代码中要加入校验码,这是为纠错而必须付出的代价。其基本原理是使每一信息位参与多个不同的奇偶校验(parity check)。
哈明码的发明是为了解决通信中的误码问题,但对计算机同样有用。因为计算机的CPU、内存外存、各种外部设备之间的代码传送同样存在着误码的可能。例如,计算机的存储器差错校验就常常采用哈明码校验。在计算机联成网络的情况下,数据通信的可靠性问题更为突出。
作为一名数学家,哈明的专长是数值方法、编码与信息论、统计学和数字滤波器等。
这些学科中有不少名词术语是由哈明定义的,因此而用哈明命名的,除“哈明码”外,常见的还有:“哈明间距”(Hamming distance)。这指同样长度的两个码中,对应位不同的码的个数,比如01010和11001,哈明间距是3。“哈明权”(Hamming weight)。这指代码中1的个数。如01110的哈明权是3。“哈明窗口”(Hamming window)。这指一种滤波器的通频带。
哈明的论著颇丰,主要有:《科学家和工程师用的数值方法》(Numerical Method for Scientists and Engineers, McGraw-Hill,1973, 第2版)《数字滤波器》(Digital Filter, Prentice-Hall, 1977, 1983, 1989)《编码和信息论》(Coding and Information Theory, Prentice-Hall, 1980, 1986)《用于微积分、概率论和统计学的数学方法》(Method of Mathematics Applied to Calculus, Probability, and Statistics, Prentice-Hall,1985)《计算机与社会》(Computers and Society, McGraw-Hill, 1972)《实用数值分析导论》(Introduction to Applied Numerical Analysis, Hemisphere Pub., 1989)《从事科技工作的技巧》(The Art of Doing Science and Engineering, Gorden and Breach Science Pub., 1997)。
哈明有一句名言:“计算的目的不在于数据,而在于洞察事物”(“The purpose of computing is insight, not numbers”)。
此外,他还非常欣赏孔子的话:“学而时习之,不亦悦乎”,把这句话印在他著的《科学家和工程师用的数值方法》那本书的的卷首作为座右铭(英文诗 To study, and when the occasion arises to what one has learned into practice--is that not deeply satisfying?)。
纵观哈明的一生,他自己就是实践这两句话的以一生。
哈明是美国工程院院士,1958--1960年曾出任ACM的第七届主席。除获得图灵奖外,1979年他获得IEEE的Piore奖,1981年获得H.Pender奖,1996年获得Rhein基金会奖。有趣的是,IEEE设立了一种以哈明命名的奖章,1991年把这种奖章颁发给了哈明本人。
哈明在接受图灵奖时发表了题为“我对计算机科学的看法”(On Man's View of Computer Science)的演说,刊载于Journal of ACM, 1969年1月,3~12页,也可见于《前20年的图灵奖演说集》(ACM Turing Award Lectures-- The First 20 Years:1966~1985,ACM Pr.),207~218页。
他在演说中提出的以下一些观点,如计算机科学家必须具有良好的数学训练,应该由相关的系而不是计算机系来教授计算机应用方面的课程,以及应该注重计算机程序设计风格的教育,等等,至今仍具有十分重要的意义。