日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

程序基于精確的數(shù)學(xué)

 jollyme 2006-02-22

 

 

 

了解AlexSTL

Alex Stepanov ,STL(標(biāo)準(zhǔn)模板庫)之父,并因此而榮獲第一屆Dr. Dobb‘s 程序設(shè)計杰出獎,現(xiàn)在是Adobe公司首席科學(xué)家。他曾是康柏電腦公司的副總裁和首席科學(xué)家,AT&T實驗室副總裁和首席架構(gòu)師,SGI服務(wù)和超級計算機(jī)業(yè)務(wù)首席技術(shù)官。

背景:Dr. Dobb‘s程序設(shè)計杰出獎

1991 年起,每年《Dr. Dobb‘s Journal》都會將榮譽(yù)給予那些對軟件開發(fā)的發(fā)展做出了重要貢獻(xiàn)的人。這就是著名的Dr. Dobb‘s 程序設(shè)計杰出獎 (Excellence in Programming Award)   
  
 
Alex Stepanov先生

什么是STL呢?STL就是Standard Template Library(標(biāo)準(zhǔn)模板庫)的簡稱,它是由Alexander StepanovMeng Lee在惠普實驗室工作時所開發(fā)出來的。現(xiàn)在雖說它主要出現(xiàn)在C++中,但在被引入C++之前,AlexDavid  Musser已對該技術(shù)進(jìn)行了很長一段時間的研究。STL是多年來編程應(yīng)用中常用組件的集合,STL的貢獻(xiàn)是將各組件和接口泛化及標(biāo)準(zhǔn)化。這樣可以極大地提高編程效率,STL現(xiàn)在是C++的一部分,任何C++平臺都包含著它。

 

 

中國.數(shù)學(xué).未來

對于STL之父Stepanov先生來說,他更像一位數(shù)學(xué)家,而他的經(jīng)歷也說明了這一點(diǎn)。和在上個月我們采訪的C++之父一起,這次他是第一次來到中國,而他對古代中國和中國數(shù)學(xué)家的了解,更是讓人佩服;當(dāng)然,更有他對中國程序員們的祝愿!除了祝愿,還有大師的點(diǎn)滴看法,畢竟不能只說好聽的!——真正的朋友都是這么做的。

Stepanov先生告訴記者計算機(jī)科學(xué)是建立在數(shù)學(xué)之上的精確的學(xué)科,他說:“程序設(shè)計就像同未理順的復(fù)雜性問題打的一場戰(zhàn)斗,既然要打這場戰(zhàn)斗,而數(shù)學(xué)首當(dāng)其沖,幾個世紀(jì)以來,數(shù)學(xué)的作用正在于此。如果將現(xiàn)在生動的數(shù)學(xué)體系作為實驗證據(jù),對于解決人類遇到的復(fù)雜性問題,數(shù)學(xué)還是最有效的。”

當(dāng)我們問他對中國和中國的程序員的認(rèn)識時,他的回答還是和數(shù)學(xué)相關(guān)。他告訴記者:中國是一個偉大的國家。曾有過許多偉大的數(shù)學(xué)家:秦九韶的《數(shù)書九章》就是古代數(shù)學(xué)中的經(jīng)典;《孫子兵法》中已包含現(xiàn)代西方稱之為中國余數(shù)定理的內(nèi)容。現(xiàn)代中國也產(chǎn)生過許多真正的偉大的數(shù)學(xué)家,如關(guān)于哥德巴赫猜想(Goldbach conjecture)所做出杰出貢獻(xiàn)的陳景潤先生。

Stepanov先生的編程信條是:程序設(shè)計是基于精確的數(shù)學(xué)訓(xùn)練的。他的建議更是淺顯而簡潔:好好學(xué)數(shù)學(xué),好好學(xué)計算機(jī),好好學(xué)英語。

         

Alex和中國電腦愛好者共勉:繼續(xù)學(xué)習(xí)!

談到未來時,他雖然并沒有明確回答什么,但對美好未來的憧憬,還是和大家的期待一樣。關(guān)于將來要用的計算機(jī)語言,他也有自己的答案。他說:C++和Java會在近幾年得到最大廣泛的應(yīng)用,我更期望最終會有某些新的、更完美的語言出現(xiàn)。

 

大師和成長歷程

1950年11月16日,Stepanov先生生于蘇聯(lián)莫斯科,在莫斯科大學(xué)研究數(shù)學(xué),但他從未成為一名數(shù)學(xué)家。因為他實在不能對Tamagawa算術(shù)、Coxeter群等一些純數(shù)學(xué)的東西感到興趣。Stepanov先生的想法很單純,他要腳踏實地干事。對他來說最幸運(yùn)的事情是,他能夠看到很多偉大的數(shù)學(xué)家是如何做學(xué)問的,也就使他更清楚地看清計算機(jī)科學(xué)中一些司空見慣的偽數(shù)學(xué)。因此,能成為一名程序員對他和計算機(jī)科學(xué)來說真是一件好事。
另兩位大師對他的影響是顯而易見的,一位是計算機(jī)程序設(shè)計藝術(shù)教授高德納(Donald Knuth)先生, 另一位則是計算機(jī)科學(xué)大師Edsger Dijkstra。他深情地說:“前者告訴我答案,后者則引我深思?!倍麑Ω叩录{先生的《計算機(jī)程序設(shè)計藝術(shù)》一書的推崇,也使我們找到了提高自己編程水平的殺手锏。
1984年,他成為紐約布魯克林理工大學(xué)助理教授。他說:“教授計算機(jī)科學(xué)使我受益匪淺,我要對付各種研究生課程。在此過程中,我學(xué)到了很多新東西。我還用Scheme語言開發(fā)了一個巨大的數(shù)據(jù)結(jié)構(gòu)和算法庫,這項工作導(dǎo)致了Ada泛型庫的誕生(這是和Dave Musser合作的)。在貝爾實驗室短暫地研究了一段時間,設(shè)計了一個新的C++算法庫,在1998年去了位于Palo Alto的惠普實驗室。在那兒,先花了四年時間研究存儲系統(tǒng) 。1993年,得到了一個回頭研究泛型編程的機(jī)會。而STL就是這次研究的結(jié)果。1995年又到了Silicon Graphics,在此,組建了一個小組繼續(xù)進(jìn)行STL的開發(fā)工作。”

他現(xiàn)在是Adobe公司的首席科學(xué)家。Adobe是一家生產(chǎn)諸如Acrobat和Photoshop之類桌面軟件的公司。

高德納先生的《計算機(jī)程序設(shè)計藝術(shù)》一書,正是Alex Stepanov先生極力推薦的一部作品,不論電郵中還是面對面時,他反復(fù)強(qiáng)調(diào)這部著作是一個珍寶庫,想要什么,里面便有什么,而他在和這本書打交道的三十多年,從中受益無窮。從他對高德納先生《計算機(jī)程序設(shè)計藝術(shù)》的巨大推崇上,也對他的個性有所印證。

STL故事

STL是Stepanov先生一生中濃墨重彩的一筆,而這一筆在他的描述中卻是那樣地不經(jīng)意。STL也是他個性的重要體現(xiàn),獨(dú)立思考,縝密邏輯。要了解STL之父,首先要知曉什么是STL。
有一位意大利記者曾向Stepanov先生問過此問題:STL究竟是指Standard Template Library(標(biāo)準(zhǔn)模板庫)還是 Stepanov and Lee?
Stepanov先生笑著解釋他的玩笑:哦,它真的是指Standard Template Library。我曾經(jīng)在Dr. Dobb的雜志做的那個專訪里開玩笑說,STL是指“Stepanov and Lee”,但它只是個玩笑而已。

而真正的STL實質(zhì)上包含了二者的意思。Meng Lee是他的一位無可挑剔的合作伙伴,她使Stepanov先生更專注,她在代碼和文檔上花了大量的令人筋疲力盡的時間。正是由于像Lee這樣的合作者,使得STL最終廣為世人傳播。

Stepanov 先生在互聯(lián)網(wǎng)上很低調(diào),既沒有個人主頁,也很難搜索其電郵。

STL代表什么呢?Stepanov and Lee,這不完全是個玩笑,Meng Lee架起了我們與Stepanov先生溝通的又一架橋梁。這篇采訪中滋潤著她的汗水……

 

對話STL之父Alex Stepanov

 

當(dāng)我面對面見到Alex Stepanov先生時,和我面對他的像片時想像的是另一個人,從他的唯一的官方照片上, 我們不難對他有威嚴(yán)的遐想,但實際上那并非他自然的一面——幽默風(fēng)趣、平易近人才是真正的他。

Stepanov先生和C++之父Bjarne Stroustrup 先生是很好的朋友,Bjarne的推薦對我們的采訪起了重要的推動作用,他告訴我:Stepanov先生經(jīng)常有一些有趣的和重要的東西要說。

Stepanov先生有著非常嚴(yán)重的個人魅力,他的言辭激進(jìn),甚至讓人想到“猛烈”“尖銳”等字眼,這可能也正是他對計算機(jī)內(nèi)涵的深刻體會和精深的數(shù)學(xué)涵養(yǎng)所致——他的眼里容不得半粒沙子。

他給我們的忠告很簡潔:“好好學(xué)數(shù)學(xué),好好學(xué)計算機(jī),好好學(xué)英語?!?/span> 

 溯源STL

問:您認(rèn)為編程的好的方法是什么?對于編程來說,一種工具是不是必需的?
Alex:我認(rèn)為學(xué)習(xí)多種不同的編程語言是非常重要的。我用過Algol-60, Common Lisp, Scheme, Ada, C, C++, Java,和多種匯編語言。然而,也不能僅僅局限于程序語言,它僅僅是種表達(dá)算法和數(shù)據(jù)結(jié)構(gòu)的工具——并且是種有缺陷的工具。一如Niklaus Wirth有句精辟見解:程序=算法+數(shù)據(jù)結(jié)構(gòu)。
 
問:您認(rèn)為計算機(jī)語言和人類的語言有什么區(qū)別?
Alex:沒有人嘗試過用計算機(jī)語言寫出詩歌來。計算機(jī)語言發(fā)展到能允許我們解決一些真正美好的現(xiàn)實生活中的東西,還有很長的路要走。

STLOO

 
追根溯源,STL起源于什么?意大利記者的提問對我們將有所幫助。
問:STL一開始被設(shè)想為今天這個樣子嗎?即所謂的C++標(biāo)準(zhǔn)庫,或者,它是從別的什么項目來的?告訴我們一些關(guān)于STL的歷史好嗎?
 答: 1976年,又要說回到蘇聯(lián)了,我因為吃生魚片得了嚴(yán)重的食物中毒而住院,在精神恍惚中,我忽然意識到并發(fā)的加法計算能力是基于加法是結(jié)合性的[譯注:我對這句 話的理解是:比如說a + b + c = a + ( b + c) = ( a + b) + c]。(因此,STL可以說是細(xì)菌傳染的結(jié)果J)同時,我意識到并發(fā)的減法運(yùn)算是和半群結(jié)構(gòu)類型有關(guān)聯(lián)的,這就是最基本的重點(diǎn):算法是定義于代數(shù)結(jié)構(gòu)基礎(chǔ)之上的。我又花了一些年頭,意識到必須在正規(guī)公理上加入復(fù)雜性必要條件以擴(kuò)展結(jié)構(gòu)的概念,接著又花了15年之久才完成全面的架構(gòu)。(我直到現(xiàn)在都不能確定我是否成功地讓我朋友小圈子之外的任何人理解了這一點(diǎn))。我相信迭代器理論是計算科學(xué)的中心就象環(huán)或Banach區(qū)間理論是數(shù)學(xué)的中心一樣。每次當(dāng)我找到一個算法時,我都要努力去尋求它所定義的結(jié)構(gòu)基礎(chǔ)。我想做的就是泛化地描述算法,并樂此不疲。我可以花一個月時間去精確地描述一個眾所周知的算法的泛化表示。迄今為止,在向人們解釋我這種行為的重要性方面,我是異乎尋常的失敗。然而,不知何故,這種行為的結(jié)果─STL卻是如此成功。
關(guān)于STL還有很多故事:STL如何成為C++標(biāo)準(zhǔn)的呢?Stepanov先生有下面的表述,表述中也有他對C++之父Bjarne Stroustrup先生的精彩描述。
問:有一件事情我一直都很驚奇—C++標(biāo)準(zhǔn)委員會那么快就采納了STL。我的意思是,這些委員會可都是以謹(jǐn)慎和保守而出名的。這一點(diǎn),你怎么解釋?
答:Bjarne Stroustrup的支持是至關(guān)重要的。如果說Bjarne想要什么東西的話,那就是他真的想把STL弄到標(biāo)準(zhǔn)里,他辦到了。他象騾子一樣固執(zhí)。甚至逼著我去改STL——我從來都不會為第二個人這么做——我也是個頑固分子。但他是我所認(rèn)識的最有主見的人,他花了一些時間去理解STL是干啥的,當(dāng)他理解之后,他決定使其成功地被大家接受。他對STL的貢獻(xiàn)還在于他支持“不止一種編程方法是‘合理的’”的觀點(diǎn)——這對立于十來年認(rèn)同“唯一”方法的無休止的爭執(zhí)和夸大——而堅持把彈性、效率、重載、類型安全結(jié)合在模板里以致于STL成為可能。我很樂意明白地聲明Bjarne是我這一代人里卓越的語言設(shè)計家。
問:您是由于什么原因而發(fā)明了STL?發(fā)明的過程是什么樣子的?它對您的生活和研究有什么影響嗎?
Alex:STL的發(fā)明源于我多年對程序靈活性和參數(shù)化探索的結(jié)果。我對此仍不太滿意:因為C++語言上的一些缺憾,使得我不能完全表達(dá)我要表達(dá)的意思。STL應(yīng)當(dāng)做將來要設(shè)計的庫的草稿。我不知道在我有生之年是否能看得到,但我堅信最終會有一個關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的標(biāo)準(zhǔn)架構(gòu),說不定作為讀者的你就是這一發(fā)明人呢!
我覺得很難形容STL對我生活和研究的影響。STL并未從本質(zhì)上改變我的生活,因為我沒有通過它賺到任何錢。我想向我的幾個朋友展示一下正確的編程方法,而 STL正是為他們而做的。事實上將這項工作完成帶給我很多快樂,當(dāng)我聽說它幫助某人解決了問題時,我更加快樂。當(dāng)然也有人說如果讓他們設(shè)計他們可以設(shè)計出更好的東西來,也有人對STL嗤之以鼻。這些攻擊也確實傷害到我。
STL形成對照的是OO——面向?qū)ο缶幊?。OO的思想困繞著許多程序員,OO的思想一直困繞著我,從未有人對OO表達(dá)過如此強(qiáng)烈的想法——除了Stepanov先生。我想:作為一個程序員,這種東東一定是要掌握的,但是……,請看下面Stepanov先生的觀點(diǎn):
 
問: 您對面向?qū)ο笫窃鯓永斫獾??它是不是一種好的可接受的編程思考方式?有沒有學(xué)習(xí)OO必須的有用的工具?
Alex我盡量避免用OO思考問題,我對他們編程的方法不感冒。在對意大利的一家期刊采訪時我曾說過:“我發(fā)現(xiàn) OOP在技術(shù)上是有問題的,它妄圖用基于單一類型的不同接口來分解世界,為了處理不同的實際問題,你需要不同種類的代數(shù)方法以橫跨不同類型的接口族;我發(fā)現(xiàn)OOP在思想上是不健全的,它聲稱一切都是一個對象。即使真的是這樣這也沒什么意思─說一切都是對象跟什么都沒說一樣;我發(fā)現(xiàn)OOP的方法論是錯誤的,它從類開始。就好像數(shù)學(xué)要從公理開始一樣。你不是從公理開始─你是從證明開始。直到你找到了一大堆相關(guān)證據(jù)你才能歸納出公理,以公理結(jié)束。編程上存在著同樣的事實:你要從有趣的算法開始。只有很好地理解了算法,你才有可能提出合理的接口以讓其他組件共同工作?!蔽以僦貜?fù)強(qiáng)調(diào)一點(diǎn):程序是描述算法和數(shù)據(jù)結(jié)構(gòu)的,而不是描述繼承性和多態(tài)

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多