• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 64,comments - 18,trackbacks - 0

            高 德 納 的 二 十 年 計(jì) 畫     
                                                                        8123033 穆信成
            高德納已經(jīng)五十八歲了。  他打算再花二十年的時(shí)間繼續(xù)他的著作,
            The Art of Computer Programming.   大家知道  Donald E. Knuth
            是資訊科學(xué)界公認(rèn)的大宗師,  知道他以他的重量級(jí)著作   The Art
            of Computer Programming(以下簡(jiǎn)稱TAOCP)[2,3,4] 聞名於世,原計(jì)
            畫要出七冊(cè),但目前只完成了三冊(cè)。但也許並沒有很多人知道他還有
            個(gè)中文名字:「高德納」。
              * * *
            TAOCP 這套書的名氣這麼大,敢去碰它的人反倒不多。寒假我因?yàn)橐?br>些原因,讀了高德納的另一本書 "The Stanford GraphBase"[1]。大
            師的書到底是什麼樣子呢? 
            高德納在序言裡說了寫這本書的原因:在寫 TAOCP 的第四冊(cè)前, 他
            想要用一個(gè)叫做 ladders 的遊戲當(dāng)作貫穿全書的例子。 於是寫了不
            少相關(guān)的程式和龐大的測(cè)試資料,最後集結(jié)成了一個(gè)程式/資料庫。
            他想這套 GraphBase 可以作為大家測(cè)試 graph 演算法的基礎(chǔ),讓那
            些 「街上混的程式員們 (programmers-on-the-street)」 知道電腦
            科學(xué)家們也會(huì)做實(shí)際的事。另外,這套程式庫全部用他鼓吹的 liter-
            ate programming 方式寫成,也可以當(dāng)成一個(gè)活生生的例子。
            最後一個(gè),但卻是最重要的原因是,"to have fun".「的確,快樂是
            這一路上最主要的原因,但我不敢承認(rèn)。電腦科學(xué)家們總是得裝出一
            副咬牙工作的樣子,讓別人心甘情願(yuàn)付給他們高薪水。但遲早這個(gè)社
            會(huì)得承認(rèn), 有些工作仍然值得尊敬 --- 即使它們比任何事情都要來
            得有趣。」
            我不禁笑了。高德納在辦正事的途中岔出去做別的事情,一做就是好
            幾年已經(jīng)不是第一次。TeX 這個(gè)現(xiàn)在大家都在用的排版系統(tǒng)不就是他
            嫌 TAOCP 被排得不好看, 因此自己捲起袖子研究電腦排版的產(chǎn)物嗎?
            Tex 耗去了他十年的光陰,而這本 Stanford GraphBase 則可以追溯
            到二十年前。高德納好像永遠(yuǎn)不怕老?
            Ladders 這個(gè)遊戲是這樣的:挑兩個(gè)五個(gè)字母的英文單字,試試看一
            次一個(gè)字母,把一個(gè)字變成另外一個(gè)。但是在過程中它必須仍然是一
            個(gè)英文單字。比如說把 black 變成 white 的方法是這樣的:
                black -> brack -> brace -> trace -> trice -> trite
                -> write -> white
            大家看得出來,如果把每個(gè)單字當(dāng)作一個(gè) node,  兩個(gè)單字如果只差
            一個(gè)字母,就連一條 edge,  那麼這個(gè)遊戲可以想成在兩個(gè) node 中
            找一條 path .
            但 GraphBase 有趣的地方卻是資料。 高德納收集了一個(gè)含 5757 個(gè)
            單字的資料庫。他參考了 1971 年以前 Beeler 為了這個(gè)遊戲?qū)iT編
            的一部字典,刪去老的字,加入新的單字。高德納花了很大篇幅解說
            他選字的標(biāo)準(zhǔn):姓名不選,所以 Knuth 就沒有了;但是 gauss 已經(jīng)
            是一個(gè)電磁學(xué)單位,所以受錄了進(jìn)去。他很耐心的等到 e-mail 終於
            被大家寫成 email, 以便把他收集到資料庫中。
            接下來就開始玩這個(gè)資料庫囉。高德納發(fā)現(xiàn) 5757 個(gè)單字中,有 774
            個(gè) degree 是 1 的(只有一根接出去的 edge),位居第一。Degree
            = 2 的也有 727 個(gè)。株連最廣的單字是 "bares" 和 "cores" , de-
            gree = 25,而 "cores" 的 25 個(gè)鄰居都是 degree 大於 9 的。 De-
            gree = 1 的單字中有 103 組根本就是孤零零的兩兩成對(duì),如 alpha-
            aloha, gonad-monad.  跑一個(gè)找 connected component 的演算法,
            發(fā)現(xiàn)大部分的單字都在同一個(gè)有 4493 個(gè)單字的大 component 裡面。
            高德納自己定了一個(gè)方法橫量單字在文章中的出現(xiàn)頻率。 在這 5757
            個(gè)單字中, "which" 是最常出現(xiàn)的, 其次是 "there" 和 "their"。
            "often" 果然常出現(xiàn),比出現(xiàn)("occur") 還要常出現(xiàn)。
            看來高德納真的是玩得不亦樂乎呢。"to have fun",  於是我們可以
            想像高德納出這本書的真正原因,是他自己建了這些資料後,發(fā)現(xiàn)越
            玩越有趣,終於忍不住想出書了。
            玩過了單字,想知道美國(guó)大學(xué)足球隊(duì)誰比較強(qiáng)嗎?高德納已經(jīng)把 120
            支隊(duì)伍的 638 場(chǎng)比賽建成 graph 了。 他又參考資料, 找出美國(guó)的
            128 個(gè)城市之間的最短距離,並且在發(fā)現(xiàn)前人的資料明顯錯(cuò)誤後自己
            寫程式來修正。把蒙娜麗莎的微笑掃描起來後,高德納示範(fàn)了如何運(yùn)
            用 bipartite graph matching 的技巧,用骨牌重新拼出這幅名畫。
            高德納的文筆親切而幽默。CWeb 是他大力推廣的 literate program-
            ming 系統(tǒng),他認(rèn)為每個(gè)人都應(yīng)該有一套。 「但是今天已經(jīng)沒什麼人
            能永遠(yuǎn)跟上新軟體的發(fā)行,所以如果你沒有 CWeb,也不用覺得太有罪
            惡感。」 接下來他解釋如何安裝  Stanford GraphBase,  這一段的
            makefile 可以給想學(xué) make 的同學(xué)們做很好的參考。 如果裝不起來
            呢?高德納問,你有沒有好好祈禱呀?最後,他希望大家能像他一樣,
            多用這些程式庫和資料檔做些實(shí)驗(yàn),「也許有天你也會(huì)迫不及待地想
            出本這樣的書呢!」
            瀏覽了全書,我想:高德納到底是太閒,還是有用不完的精力?將近
            六十歲的他,仍舊充滿著旺盛的活力和赤子般的好奇心,而這一切又
            以他深厚的功力做為基礎(chǔ)。
            * * *
            四月號(hào)的 Dr. Dobb's Journal 做了一篇高德納的專訪[5]。 為什麼
            寫書寫到一半, 卻花了十年的時(shí)間在 Tex 上?   他說,  Niklaus
            Wirth (Pascal, Modular-2 和 Oberon 的設(shè)計(jì)者)一直想設(shè)計(jì)飛機(jī),
            但他發(fā)現(xiàn)他需要夠好的工具,於是他設(shè)計(jì)了一個(gè)個(gè)的電腦語言,造了
            自己的電腦。高德納也希望他的書能夠不因科技的進(jìn)步而被淘汰,希
            望即使製書的科技進(jìn)步,他的書仍舊是用領(lǐng)先的方式製作的。
            談到另一位大師 Edsgar Dijkstra, 他說 Dijkstra 的力量來自於他
            不妥協(xié)的拗脾氣。「光是想像用 C++ 寫程式就會(huì)讓他病倒!」Dijk-
            stra 的拿手技巧是鉅細(xì)靡遺地用 formal 方法推導(dǎo)、檢驗(yàn)程式, 這
            和工業(yè)界不斷產(chǎn)生數(shù)以 mega 計(jì)的軟體,  但使用者卻無時(shí)不負(fù)擔(dān)著
            bug 的風(fēng)險(xiǎn)的實(shí)際情況顯然有段差距。高德納則認(rèn)為自己位於兩種極
            端的中間。一方面他贊同 formal 方法提供的可靠性,但他也知道在
            大系統(tǒng)中這種方式的極限。他盡力維持他的軟體的品質(zhì),因此他願(yuàn)意
            提供賞金給在 TeX 中找到新 bug 的人。
            * * *
            由於高德納已經(jīng)不用 email 了,他有一個(gè) Web page[6],
                http://www-cs-faculty.Stanford.EDU/~knuth/
            裡頭還有個(gè) FAQ, 可以看到他中文名字的圖章。大家劈頭要問的當(dāng)然
            是:第四冊(cè)什麼時(shí)候出來呀?
            他說,TAOCP的第四冊(cè)將會(huì)分成三部份,4A : Enumeration and Back-
            tracking, 4B : Graph and Network Algorithms 和 4C : Optimiza-
            tion and Recursion.  從 1997 年開始,他會(huì)以大約每 128 頁為一
            個(gè)單位( 高德納好像很喜歡用 2 的乘冪做單位,他付給找出 TAOCP
            中錯(cuò)誤的賞金也是 $65536 分)把第四冊(cè)的部份散發(fā)給大家,聽取各
            方的意見。如果一切順利,第四冊(cè)將在 2003 年正式完成。第五冊(cè)的
            完成時(shí)間則定在 2009 年。第五冊(cè)告一段落後,他會(huì)重新整理 TAOCP
            的一到三冊(cè),更新內(nèi)容。再下一步,他將把一到五冊(cè)的重要內(nèi)容全部
            濃縮在一本書裡。之後才著手進(jìn)行六和七冊(cè)。
            所以,高德納至少得活到 2020 年囉....
            為了完成 TAOCP, 高德納已經(jīng)退休,過著半隱士的生活。 他不用 e-
            mail, 不怎麼會(huì)見訪客, 取消大部分的演講和旅行。 他說,他得用
            batch 方式工作,而不能把事情 swap 來 swap 去的。他託人在家裡
            造了一座管風(fēng)琴,空閒的時(shí)間裡,他就會(huì)彈彈琴自娛。如果你會(huì)彈琴,
            他很願(yuàn)意和你見個(gè)面,來個(gè)四手聯(lián)彈。
            為什麼那麼賣力呢? 在DDJ的專訪裡, 當(dāng)被問到他是否能從 Tex 和
            Metafont 圖利時(shí), 他說,一旦一個(gè)人能夠餵飽自己,能夠有個(gè)安身
            之所,剩下的就是他能為別人做些什麼,如何能為群體做出一些貢獻(xiàn)
            了。
            因此他很希望程式創(chuàng)作者們不要把演算法當(dāng)作自己的私產(chǎn)。程式應(yīng)該
            容易閱讀和了解,因?yàn)樵蕉嗳四軌蛄私馑拍軌虬l(fā)揮越大的影響
            力。
            也許他也是基於這個(gè)想法繼續(xù) TAOCP 的寫作吧?  在他的 web page
            中,對(duì)於他的這件「此生的大事」,他下了這樣的註腳:「我嘗試著
            盡我所能的去學(xué)習(xí)電腦科學(xué)裡的一些領(lǐng)域,然後把這些知識(shí)摘要成大
            家比較容易了解的方式,讓沒有那麼多時(shí)間做這種學(xué)習(xí)的人也能夠吸
            收他們」。
            為了這個(gè)目的,他必須閱讀超過二十萬頁的文件,然後把它們濃縮到
            兩千頁裡頭。他寫的東西並不是最流行的,但他希望他能從日新月異
            的新技術(shù)中,萃取出值得存活到下個(gè)世紀(jì)的東西。
            不禁想起前陣子同學(xué)討論到的話題:專家是訓(xùn)練有素的狗嗎?我們?cè)?br>不該成為專家?高德納毫無疑問地是個(gè)專家,但他的大師學(xué)養(yǎng)和風(fēng)範(fàn)
            也許能給我們不少啟發(fā)。
            Reference
            [1] Donald E. Knuth, The Stanford GraphBase : A Platform for Combinatorial 
                 Computing, Addison-Wesley, 1993
            [2] Donald E. Knuth, The Art of Computer Programming, Vol 1 : Fundamental
                 Algorithms, Addison-Wesley, 1973
            [3] Donald E. Knuth, The Art of Computer Programming, Vol 2 : Seminumerical
                 Algorithms, Addison-Wesley, 1973
            [4] Donald E. Knuth, The Art of Computer Programming, Vol 3 : Sorting and
                 searching, Addison-Wesley, 1973
                   The Art of Computer Programming 有日文,俄文,西班牙文等許多國(guó)的版本。
                   其中,中文版資料如下
                   Chinese translation by Guan JiWen and Su YunLin, Pei Xue He Cha Zhao,
                   Beijing: Defense Industry Publishing Co., 1985
            [5] Jack Woehr, An interview with Donald Knuth, Dr. Dobb's Journal, April
                 1996, p16-p22
            [6] Donald E Knuth's WWW Page : http://www-cs-faculty.Stanford.EDU/~knuth/
                 http://www.geekchic.com/repliq6.htm 也有一篇小小的訪問。高德納最喜歡的
                 語言是 CWeb, 最喜歡的運(yùn)動(dòng)是棒球,認(rèn)為有許多人是他值得崇敬的。
                高德納將在最近將他的論文以更淺顯的方式整理過後,重新集結(jié)出版。
                這套書的預(yù)定讀者並不是電腦科學(xué)的專家,似乎很值得一讀。這套書
                將有八本,前兩冊(cè)已經(jīng)出版:
            [7]  Literate Programming, Stanford, California: Center for the Study of
                  Language and Information, 1992
            [8]  Selected Papers on Computer Science, Stanford's Center for the Study
                  of Linguistics and Information and Cambridge University Press, spring,
                  1996
            [9]  Selected Papers on Analysis of Algorithms, to be published
            [10] Selected Papers on Computer Languages, to be published
            [11] Selected Papers on Design of Algorithms, to be published
            [12] Selected Papers on Digital Typography, to be published
            [13] Selected Papers on Discrete Mathematics, to be published
            [14] Selected Papers on Fun and Games, to be published

            posted on 2007-06-01 15:41 rebol 閱讀(369) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Entertainment

            FeedBack:
            # re: 高德納的二十年計(jì)劃
            2007-06-01 19:45 | lovedday
            大師級(jí)的人物,高山仰止。  回復(fù)  更多評(píng)論
              
            # re: 高德納的二十年計(jì)劃[未登錄]
            2007-06-07 16:36 | rebol
            我用TEX寫過論文,真的很美觀  回復(fù)  更多評(píng)論
              
            久久天天躁狠狠躁夜夜2020一| 久久ww精品w免费人成| 2021久久精品国产99国产精品| 久久久久久狠狠丁香| 久久久91人妻无码精品蜜桃HD| 久久久久久综合网天天| 国产成人精品久久| 色综合久久综合中文综合网| 成人免费网站久久久| 久久久国产打桩机| 久久久久久国产a免费观看不卡| 久久亚洲美女精品国产精品| 国产午夜精品久久久久九九电影| 三级三级久久三级久久| 99久久人人爽亚洲精品美女| 久久久久女人精品毛片| 国内精品久久国产| 手机看片久久高清国产日韩| 国产精品久久波多野结衣| 久久精品国产亚洲AV香蕉| 久久精品国产半推半就| 久久精品国产亚洲AV无码麻豆 | 91久久精品视频| 久久精品国产亚洲精品2020| 久久久久亚洲AV片无码下载蜜桃| 久久中文字幕一区二区| 久久久久四虎国产精品| 色8久久人人97超碰香蕉987| 久久久一本精品99久久精品88| 亚洲人成无码www久久久| 久久天天躁狠狠躁夜夜2020| 51久久夜色精品国产| 国产成人精品久久亚洲高清不卡| 国产V综合V亚洲欧美久久| 97久久国产亚洲精品超碰热| 精品久久久久久无码专区 | 色噜噜狠狠先锋影音久久| 国产精品一久久香蕉国产线看观看 | 亚洲综合婷婷久久| 久久久久久久尹人综合网亚洲| www.久久99|