理查德·汉明和他的汉明码
點擊上方“LiveVideoStack”關注我們
作者 | Alex
技術審校 | 趙軍
理查德·漢明
聲影傳奇
#005#
“計算的目的是洞察,而非數字(The purpose of computing is insight, not numbers.)”
——Richard W. Hamming
1986年3月7日,在貝爾通信研究系列座談會的一個研討會上,加利福尼亞州蒙特雷海軍研究生院教授、貝爾實驗室退休科學家理查德·漢明博士發表了一場非常精彩的演講,題目是《你和你的研究》(You and Your Research)。演講圍繞 “為什么做出重大貢獻的科學家如此之少而長期被遺忘的科學家如此之多”這一問題展開,漢明基于過去四十年間他對身邊偉大科學家們的切實觀察以及對他們的生平、特質、能力、工作習慣等方面的研究,向在場聽眾分享了他的所學所感。這場演講非常有名,文字版流傳至今,并常常被推薦給科研工作者閱讀。
理查德·漢明
毫無疑問,漢明本人就是一位偉大的科學家,他為計算機科學和電信領域做出了巨大貢獻。在其碩果累累的成就中,漢明碼無疑是最廣為人知的。漢明碼是一組可以檢測和糾正計算機錯誤的編碼,它的出現為日后計算機和通信領域的發展奠定了基礎,并廣泛用于調制解調器、嵌入式處理器和衛星等。
想當工程師的數學家
漢明在高中時期開始對數學產生興趣。高一的代數課上,他就發現自己的能力已經超過授課老師了。雖然擁有卓越的數學能力,但漢明并沒有打算成為一名數學家,因為他當時心心念念的是去大學學習工程學,成為一名工程師。
可惜事與愿違,唯一能為他提供獎學金的芝加哥大學沒有工程學這個專業,他迫不得已選擇了數學(美國當時正處在“大蕭條”時期,經濟上的困難使漢明別無選擇),并一路念到了博士。
不過后來漢明評價這段經歷時,反倒慶幸自己當初的選擇,他說:“如果我成為一名工程師,就得天天和各種檢修孔打交道,不可能體會到前沿科研工作帶來的興奮。”
1942年,漢明從伊利諾伊大學厄巴納-香檳分校(University of Illinois at Urbana–Champaign)博士畢業,并留校做了一名數學老師。同年,他與同學Wanda Little走入了婚姻殿堂。1944年,他成為了路易斯維爾大學(University of Louisville)的一名助理教授。
正當他以為自己將會把一生奉獻給學校的時候,一封老友的來信徹底改變了他的命運。他的朋友在信上說:“我現在在Los Alamos(美國新墨西哥州的一個縣),這里正在發生一些有趣的事,過來和我一起工作吧!”
信中提到的“有趣的事”正是舉世聞名的“曼哈頓計劃”。
Los Alamos國家實驗室里,科學家們正在測試原子彈(圖片來自Washington Post)
曼哈頓計劃(Manhattan Project):美國(英國和加拿大協助)于1942年6月開始實施利用核裂變反應來研制原子彈的計劃。該工程集中了當時西方國家(除納粹德國外)最優秀的科學家,動員了10萬多人參加這一工程,歷時3年,耗資20億美元,于1945年7月16日成功地進行了世界上第一次核爆炸,并按計劃制造出兩顆實用的原子彈。
1945年,漢明離開路易斯維爾,前往Los Alamos。一個月以后,他的妻子Wanda也跟隨過去,夫妻兩人一同投入到了“曼哈頓計劃”的工作中。在Los Alamos實驗室,漢明的工作主要是為“曼哈頓計劃”進行計算的IBM計算機進行編程(漢明當時對這些大型機器一無所知,不過他很快就學會了如何操作); Wanda則為物理學家恩利克·費米(Enrico Fermi)和愛德華·泰勒(Edward Teller)做計算工作。
漢明曾在文章Mathematics on a Distant Planet中這樣描述當時的工作:
在Los Alamos……我們那時正在設計原子彈。在第一次現場測試前不久,有個人過來讓我檢查他的計算數據,我同意了,當時我本來想讓我的下屬來做這項工作。當我問他是關于什么的計算時,他說:“這是試驗炸彈點燃整個大氣層的概率。” 我當即決定自己來檢查!第二天,當他來求答案時,我對他說:“計算顯然是正確的,但我不知道氧和氮俘獲截面的公式——畢竟,在所需的能量水平下不可能進行實驗。”他回復我說,他想讓我檢查的是計算結果而不是物理模型(就像物理學家和數學家的談話那樣),然后便離開了。
我對自己說:“你都做了什么?漢明,你現在做的事正將地球上所有生命置于巨大的風險之中,而你對這樣重要的事卻知之甚少?”我在走廊上踱來踱去,一位朋友走過來問我有什么困擾,我把這件事跟他說了。他的回答是:“沒關系,漢明,沒有人會責怪你。”
“曼哈頓計劃”結束后,其他科學家都陸續離開了Los Alamos,但漢明沒有馬上離開,而是又在那里繼續工作了6個月的時間。“我很想弄清楚那里發生了什么,以及‘曼哈頓計劃’成功背后的原因,”他說。在這期間,漢明將各類計算的詳細信息整理成文。他認為科學家的一部分工作是寫作和教學,因為這兩件事可以讓后來人能夠繼續他的工作。
盡管漢明把他在Los Alamos的角色描述為“計算機看門人(Computer Janitor)”,但他看到了計算機模擬的實驗,而這些實驗在實驗室或者實際的情況里是不可能完成的。他后來回憶說:“當我有時間思考這個問題時,我意識到這意味著科學將被改變。”
也是在這時,漢明意識到,他當初無奈地放棄工程學而選擇數學絕對是明智之舉,因為只有數學才能讓他接觸到如此前沿的科研工作。
貝爾實驗室和漢明碼
1946年,漢明離開Los Alamos后,進入貝爾實驗室數學研究部工作,當時該部門剛剛聘用了克勞德·香農、Donald P. Ling和Brockway McMillan。這四人稱自己為“少壯派(Young Turks)”。他們的年齡都在30歲左右,年富力強,并且都有過戰爭時期投身科研的經歷。
漢明曾這樣評論“少壯派”:
我們都是在大蕭條時期成長起來的幸運兒,我們認為自己應該加倍努力,回報這個世界。在二戰期間,為了贏得戰爭,我們所有人都要學習我們不想學的東西,所以我們每個人都吸收了其他領域的思想。我們對傳統缺乏耐心,并在很早就都從事了非常重要的工作。我們都曾是一流的麻煩制造者。我們以非常規的方式做著非常規的工作,但卻獲得了非常有價值的結果。因此,管理層不得不容忍我們的所作所為,允許我們“自娛自樂”。
漢明曾與香農共用一間辦公室,據他本人回憶:
在貝爾實驗室,我進入到了一個非常高產的部門,Bode(Hendrik Wade Bode,美國科學家,現代控制論先驅)當時是部門領導,香農也在那里。有段時間,我跟香農共用一個辦公室,很巧合的是,當時他在研究信息論,而我在研究編碼理論。
1968年的貝爾實驗室(圖片來自Computer History Museum)
在貝爾實驗室,雖然漢明被安排的工作是研究彈性理論(Elasticity Theory),但他依然癡迷于計算機,并將大部分時間花在了上面。
1947年,一個周五晚上,在漢明準備回家之前,他將計算機設置為可以在周末兩天繼續執行復雜計算。等到下周一,當漢明到了辦公室以后,他發現計算過程早期出現了一個錯誤,導致全部計算失敗。
計算機只能處理由0和1表示的二進制序列,如果序列中的單個位(指計算機存儲信息的最小單位)出錯,那么整個序列都會發生錯誤。為了檢測這一點,漢明使用奇偶校驗位來校驗每個序列的正確性。“如果計算機可以判斷錯誤何時發生,”漢明推理,“那么肯定有一種方法可以判斷錯誤在哪里,以便計算機可以自行糾錯。”
意識到這種糾錯方法將會在未來得到廣泛應用,漢明決心解決這個問題。經過兩年多的不斷努力,1950年,漢明在Bell System Technical Journal上發表了一篇具有里程碑意義的論文 Error detecting and error correcting codes。在論文中,漢明首次介紹了“漢明距離(Hamming Distance)”這一概念:兩個等長字符串之間的漢明距離是兩個字符串對應位置的不同字符的個數,也就是將一個字符串變換成另外一個字符串所需要替換的字符個數,并由此創造了一組糾錯碼,用于檢測和糾正數據從發送方移動或存儲到接收方時可能發生的錯誤。這就是漢明一生中最重要的成就——漢明碼(Hamming Code)。漢明碼不僅解決了電信和計算機科學中的一個重要問題,而且開辟了一個全新的研究領域。
除了漢明碼,漢明在貝爾實驗室還研究了很多其他問題,如電話系統的設計、行波管、復雜通信系統的穩定性、早期計算機語言L2、數字濾波器等等。在A Discipline of Programming (1967)中,Edsger Dijkstra將有效尋找正則數的問題歸功于漢明。這個問題后來被稱為“漢明問題”,正則數在計算機科學中經常被稱為漢明數,盡管漢明并沒有發現它們。
1968年,ACM為了表彰漢明在數值方法、自動編碼系統以及錯誤檢測和糾錯碼方面的工作,為他頒發了圖靈獎。漢明是歷史上第三位獲得圖靈獎的計算機科學家(前兩位是Alan Perlis和 Maurice Wilkes,同樣都是計算機界的先驅人物)。
漢明因其開創性的工作還獲得了很多其他獎項。1979年,IEEE授予他Emanuel R.Piore Award。1980年,漢明當選為美國國家工程院院士,并于1981年獲得了賓夕法尼亞大學頒發的Harold Pender Award。1986年,IEEE 設立了以漢明名字命名的Richard W. Hamming Medal,表彰那些在信息科學、信息系統和信息技術領域做出突出貢獻的人;1988年,漢明獲得了IEEE頒發的第一枚理查德·漢明獎章。
理查德·漢明獎章
1994年,漢明成為ACM Fellow。1996 年,漢明因其在糾錯碼方面所取得的成就獲得了Eduard Rheim Award(技術成就獎)。
同事眼中的漢明
在Unix: A History and a Memoir一書中,Brain Kernighan(Unix重要貢獻者)回憶了在貝爾實驗室,他和漢明一起工作的時光。他們第一次見面的時候,Kernighan還是一位實習生,他的辦公室就在漢明的隔壁。在他的敘述中,我們可以得知,漢明是一個相當有主見的人,他從不害怕表達自己的觀點,有時甚至有些固執,這讓很多人望而卻步。不過Kernighan卻成為了漢明的好友,多年來從與他的相處收獲了很多寶貴的建議,受益匪淺。
1968年夏天,漢明獲得了圖靈獎(圖靈獎現在被認為是和諾貝爾獎相當的計算機科學獎),我當時也在,我還記得他當時的反應:因為那時諾貝爾獎價值10萬美元,圖靈獎只有2000美元,漢明說他獲得了2%的諾貝爾獎(口吻頗有些諷刺)。
漢明是部門主管,可奇怪的是,他的部門只有他一個人。他告訴我他費了很大力氣才讓管理層同意:既能保有頭銜,還不用承擔管理工作。我在很久之后也成為了部門主管(手下已經有10幾個人),我那時才意識到他當時是多么明智。(在貝爾實驗室工作的整個期間,漢明避免了管理職責。他幾次被提升到管理職位,但總是想方設法為下屬員工安排實驗室的其他工作并將他們調出部門。他后來回憶說:“我一直忙于自己想做的事情,無法給到他們足夠的關注。我知道,通過逃避管理,我沒有履行對組織的責任。這是我最大的失敗之一。”)
因為漢明,我才開始寫書,后來證明這是一件很棒的事。漢明對于大部分程序員的評價都相當低,他認為這些人根本沒有受過良好的訓練。我仍然記得他當時描述程序員的訓練時說的話:“給他們一本字典,告訴他們如何使用那些語法規則,然后對他們說:孩子,你現在已經是個偉大的程序員了。” 漢明認為教授編程應該像教授寫作那樣,要有自己的文體風格,這種風格能夠區分好代碼和爛代碼。除此之外,應該教程序員如何寫出好代碼,并且能欣賞好的代碼。
漢明早年就曾經預測,計算將占貝爾實驗室工作的一半,但當時沒人認同他的觀點。后來事實證明, 漢明的估計還是太保守了。
雖然Kernighan對漢明給出了非常正面的評價,但也有不少人對他嗤之以鼻。漢明在貝爾實驗室的一些前同事們回憶:“他是一個非常自負的人,常常在想法還不成熟前就倉促行事;對自己的錯誤引導從來都是后知后覺。”一位貝爾實驗室的科學家說:“他在工作上非常難相處,因為他總愛宣揚自己的觀點,而不是傾聽別人的訴求。”
不過漢明似乎對這些評價心知肚明,他曾說:“要改革體制,就不能指望被所有人喜歡。”
?晚年生活
漢明生平最討厭的就是一些上了年紀的科學家長期占用科研空間和資源,他認為,這些資源在那些像他一樣的“少壯派”手中可以得到更好的利用。所以他在很早的時候就決定早點退休,為年輕人讓路。除此之外,漢明一直堅信數學家最高產的時候是職業生涯早期,隨著時間的流逝,他們的工作效率會急速下降。
但堅信并不意味著漢明樂意接受這樣的事實。一天,漢明收到了一幅貝爾實驗室的周年紀念海報,海報上列出了貝爾實驗室在過去逐年所取得的各項成就。漢明打開海報(未全部展開),得意地看著海報上半部分列出的他參與過的各種科研項目,然后將海報展開掛在了門上,幾天后他又瞥了一眼,漢明突然發現,海報下半部分完全與他無關,因為他沒有參與任何后續列出的項目。這時漢明意識到他所有有價值的工作都來自他在貝爾實驗室工作的前 15 年。一怒之下,他把海報撕碎扔掉了。
1976年,漢明離開了工作長達30年之久的貝爾實驗室,這一年,漢明61歲。
漢明在辦公室(海軍研究生學院)
離開貝爾實驗室后,漢明成為海軍研究生學院(Naval Postgraduate School ,位于加利福尼亞蒙特雷)計算機科學系的一名教授。也是從這時開始,漢明完全放棄了自己的科研工作,將全部精力放在教學和寫書上。
漢明認為當時教授數學的方法是錯誤的,而改變這種錯誤的唯一方法就是為學生撰寫新的教科書。下面是漢明對于數學教育的兩種觀點:
觀點一:我們現在生活的時代,知識正在以指數級增長。只教授精妙的定理和證明顯得越來越徒勞。我們必須放棄那種“通過別人引導才能完成的數學之旅”,轉而去教授學生如何創造我們需要的數學。而且我認為,沒有任何長期、實用的替代方法。
觀點二:目前教授數學的方式非常枯燥。在校園里使用的微積分課本中,我沒有發現任何一個我覺得學生會關心的問題答案!課本中的數學能幫你贏得填字游戲(很難確定),但結果在現實生活中卻毫無意義。
為了糾正數學教育中的錯誤,漢明寫了一本新的教科書——Methods of Mathematics Applied to Calculus, Probability, and Statistics(1985)。
Methods of Mathematics Applied to Calculus, Probability, and Statistics
雖然離開了貝爾實驗室,但漢明依然花大量時間閱讀學術類期刊,以了解最新科學動態。
1997 年12月,漢明從海軍研究生院退休,并被特聘為名譽教授。1998 年 1月(在他最后一次演講的幾周之后),即退休后的一個月,漢明因心臟病病逝。
在退休前不久,漢明曾說:
一位朋友最近告訴我,“漢明,你放棄教書的那一天,你會崩潰的。”他可能是對的。當年我離開貝爾實驗室時,我就知道那是我科研生涯的結束。現在,當我從學校退休,從另一種意義上說,就是真正的結束了。
漢明經典演講《你和你的研究》視頻:
《你和你的研究》英文全文:
https://www.cs.virginia.edu/~robins/YouAndYourResearch.html
漢明一生中一共出版了9本書,發表了約80篇論文。除了與他的研究相關的出版物外,他還編寫教科書,用來鼓勵教師采用不同的方法教授數學。
以下為漢明出版過的重要著作(按出版時間排序):
Hamming, Richard W., Calculus and the Computer Revolution, Houghton Mifflin, New York, 1968.
Hamming, Richard W., Introduction to Applied Numerical Analysis, McGraw-Hill, New York, 1971.
Hamming, Richard W., Numerical Methods for Scientists and Engineers, McGraw-Hill, New York, 1973.
Hamming, Richard W., Coding and Information Theory, Prentice-Hall, Englewood Cliffs, NJ., 1980.
Hamming, Richard W., Digital Filters, Prentice-Hall, Englewood Cliffs, NJ., 1983.
Hamming, Richard W., Coding and Information Theory, Prentice-Hall, Englewood Cliffs, NJ., 1986.
Hamming, Richard W., Introduction to Applied Numerical Analysis, Hemisphere Pub. Corp., New York, 1989.
Hamming, Richard W., The Art of Probability-for Scientists and Engineers, Addison-Wesley, Reading, Mass., 1991.
感謝趙軍老師推薦本期聲影傳奇人物——理查德·漢明。
References:
https://en.wikipedia.org/wiki/Richard_Hamming
https://history.computer.org/pioneers/hamming.html
https://amturing.acm.org/award_winners/hamming_1000652.cfm
https://mathshistory.st-andrews.ac.uk/Biographies/Hamming/
https://baike.baidu.com/item/%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB/475174?fr=aladdin
封面圖來自Electronic Design
講師招募
LiveVideoStackCon 2022 音視頻技術大會 上海站,正在面向社會公開招募講師,無論你所處的公司大小,title高低,老鳥還是菜鳥,只要你的內容對技術人有幫助,其他都是次要的。歡迎通過?speaker@livevideostack.com?提交個人資料及議題描述,我們將會在24小時內給予反饋。
喜歡我們的內容就點個“在看”吧!
總結
以上是生活随笔為你收集整理的理查德·汉明和他的汉明码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网拥塞控制终极指南
- 下一篇: 拍乐云基于AV1的实时视频系统技术实践