JavaScript創(chuàng)始人Brendan Eich訪談錄
當(dāng)前位置:點(diǎn)晴教程→閑情逸致
→『 微信好文 』
是什么促使你去開發(fā)JavaScript?
對(duì)于JavaScript的早期歷史,我在自己的博客中寫過: 我在1995年4月4日加入了Netscape,當(dāng)時(shí)的目標(biāo)是把Scheme語言或者類似的語言嵌入到Netscape的瀏覽器當(dāng)中。由于申請(qǐng)沒 有通過,我加入了Netscape的Server團(tuán)隊(duì),這個(gè)團(tuán)隊(duì)負(fù)責(zé)Web服務(wù)器和代理服務(wù)器方面產(chǎn)品的開發(fā),我在這里工作了一個(gè)月,主要進(jìn)行下一代 HTTP的研發(fā)。到了五月份的時(shí)候,我就被調(diào)回當(dāng)初想加入Client團(tuán)隊(duì),從此我就開始了對(duì)JavaScript雛形的開發(fā)。 Marc Andreessen和我,連同在Sun工作的Bill Joy,堅(jiān)信HTML需要一種腳本化的語言,這種語言就算對(duì)于新手和業(yè)余者來說也會(huì)很容易上手,而且這種語言的代碼可以直接寫在HTML的標(biāo)記之間,以源 代碼的形式作為網(wǎng)頁(yè)的一部分發(fā)布。這種信念同時(shí)成為了我們的動(dòng)力。我們打算開發(fā)一個(gè)”膠水語言“,面向網(wǎng)站的設(shè)計(jì)者和兼職做網(wǎng)站開發(fā)的程序員,以替代以前 那種通過圖片、插件和Java小程序搭建網(wǎng)站的方式。我們把Java看成是由高薪程序員使用的組件語言,而膠水程序員,也就是那些網(wǎng)頁(yè)設(shè)計(jì)師,將通過 JavaScript把組件組合起來實(shí)現(xiàn)交互。 從這個(gè)意義上說,縱觀在微軟的操作系統(tǒng)和應(yīng)用程序中使用的編程語言家族中,JavaScript應(yīng)該和Visual Basic是類似的,而Java和C++類似。貫穿在編程語言金字塔的分工差別促進(jìn)了更多的創(chuàng)新,使我們除了可以選擇像Java和C++那樣”真正“的編 程語言以外,還可以選擇一些”小巧“的腳本式語言,比如JavaScript。 遇到過什么特別的需要解決的問題么? 不可編程的網(wǎng)頁(yè)是靜態(tài)的,堆砌著文字,充其量把圖片放到表格里或者干脆浮動(dòng)在網(wǎng)頁(yè)的兩側(cè)。通過JavaScript這樣的腳本語言,我們可以控制網(wǎng)頁(yè)上的元素,更改他們的屬性并響應(yīng)事件??梢栽O(shè)想這樣一個(gè)更具有活力的網(wǎng)絡(luò),只通過一些網(wǎng)頁(yè)就可以實(shí)現(xiàn)以前應(yīng)用程序才能實(shí)現(xiàn)的效果。 實(shí)際上,一些早期的開發(fā)者從1995年下半年就開始通過JavaScript和framesets中的框架來構(gòu)建Web應(yīng)用程序,這應(yīng)該是最早的 ”Ajax“或者”Web 2.0“風(fēng)格的Web應(yīng)用程序,但是采用這種方式開發(fā)會(huì)導(dǎo)致機(jī)器速度變慢。JavaScript在最初的時(shí)候就有一個(gè)操作瀏覽器的函數(shù)庫(kù),但這個(gè)庫(kù)的功能 很有限。和服務(wù)器之間的通訊方法也僅限于重新加載整個(gè)網(wǎng)頁(yè)。 JavaScript和Java在本質(zhì)上是不相干的,但為什么要給他取這個(gè)名字呢? 通過上面的鏈接,在我的博客中可以找到答案。 JavaScript最初的名字Mocha和LiveScript是根據(jù)什么起的? Mocha是Marc Andreessen起的項(xiàng)目名稱,但Netscape的市場(chǎng)部發(fā)現(xiàn)這個(gè)名字存在潛在的商標(biāo)沖突,所以對(duì)外決定啟用新的名稱,他們?yōu)镹etscape的產(chǎn) 品名稱啟用了Live這個(gè)前綴,比如LiveWire、LiveScript等。但在1995-1996這個(gè)時(shí)間,Java的發(fā)展勢(shì)頭太猛了,所以大家決 定沾沾光,把名字修改為JavaScript。 JavaScript和ECMAScript有什么不同? ECMA-262第三版是ECMAScript標(biāo)準(zhǔn)的最新版本。第一版的制定建立在我在Netscape時(shí)的工作成果,同時(shí)吸收了JScript(微軟在IE平臺(tái)上對(duì)JavaScript進(jìn)行反向工程的成果)的內(nèi)容,還包括Borland和少數(shù)其他公司的成果。 ECMA-262第三版明確允許對(duì)之進(jìn)行各種擴(kuò)展,JavaScript所能作的就比標(biāo)準(zhǔn)多得多,這門語言的演化已經(jīng)趕在了當(dāng)前執(zhí)行標(biāo)準(zhǔn)的前面。 比如Mozilla的SpiderMonkey(SpiderMonkey也是Firefox中的JavaScript引擎)和Rhino引擎。 Ecma標(biāo)準(zhǔn)只是描述了核心的語言,不包括DOM,大家還是會(huì)把DOM當(dāng)成JavaScript的一部分看待。 你認(rèn)為JavaScript和JScript是兩個(gè)可以或者應(yīng)該互相被替換的術(shù)語么? 在跨瀏覽器的文檔和書籍中,當(dāng)提到這門語言,沒有人會(huì)使用JScript。JavaScript才是這些書籍、文檔、參考手冊(cè)等中使用的名字,無論你認(rèn)為這個(gè)名字好還是壞,JavaScript就是這個(gè)語言的真實(shí)名字。 在JavaScript的開發(fā)過程中,遇到過什么必須面對(duì)而且特別困難或者討厭的問題么? 在語言的設(shè)計(jì)階段凍結(jié)以后,每一個(gè)小的開發(fā)周期主要就是在檢驗(yàn)設(shè)計(jì)時(shí)的想法。我在1995年的5月,用了大概10天的時(shí)間開發(fā)解釋器,包括除了 Date對(duì)象以外的其它內(nèi)置對(duì)象。在這期間,Netscape的Ken Smith用C語言重寫了Java的java.util.Date類,這個(gè)類的千年蟲Bug也在無意間被帶進(jìn)了JavaScript。 1995年剩下的日子,我的工作就是把這個(gè)引擎嵌入到Netscape瀏覽器中,并建立那個(gè)后來十分著名的DOM(文檔對(duì)象模型),準(zhǔn)確的說應(yīng)該 是第0級(jí)DOM,這時(shí)候已經(jīng)可以在JavaScript中通過一系列函數(shù)接口控制窗口、文檔、鏈接、圖片等對(duì)象了,并可以響應(yīng)事件和通過定時(shí)器運(yùn)行代碼。 在1996年中期以前,在Netscape只有我一個(gè)人在做JavaScript的開發(fā)。 在你所見過的用JavaScript編寫的程序中,你認(rèn)為哪個(gè)是最有趣的? TIBET是早期很有野心的一個(gè)模仿Smalltalk的框架。 現(xiàn)在有很多用JavaScript寫的程序非常嘆為觀止。比如HotRuby,在這里可以看到更多的內(nèi)容,這個(gè)程序完全可以讓用戶在瀏覽器中通過JavaScript運(yùn)行Ruby的代碼。有人還用JavaScript實(shí)現(xiàn)了一個(gè)Java虛擬機(jī),叫做Orto,在這里可以看到更多的信息,需要注意的是,我不確定Orto究竟實(shí)現(xiàn)了Java虛擬機(jī)多少的功能,但確實(shí)人人都說這是一個(gè)非常出色的程序。 還有很多用JavaScript編寫的游戲,這其中有新開發(fā)的,也有從其他平臺(tái)移植過來的,比如以下兩個(gè): John Resig移植的Processing Visualization Language是我認(rèn)為最棒的。 你見過最差的是哪一個(gè)? 我可能選不出一個(gè)最差的JavaScript程序。但老實(shí)說在過去,JavaScript主要被用來做彈出窗口,在狀態(tài)欄滾動(dòng)文字等這些令人討厭 的事情。一個(gè)像Firefox這樣的好瀏覽器,提供帶有默認(rèn)值的用戶控件來實(shí)現(xiàn)功能,Netscape在最開始也應(yīng)該這樣做,這樣JavaScript就 不會(huì)被濫用了。 你知道有什么JavaScript的應(yīng)用是在你最初計(jì)劃之外的么?如果有,是什么?這個(gè)應(yīng)用現(xiàn)在運(yùn)作得怎么樣? 上面提到Orto這個(gè)Java虛擬機(jī)就在我當(dāng)初的意料之外。我不想讓JavaScript通過GWT、HaXe或者類似的代碼生成器,成為一個(gè)“目標(biāo)(target)”語言,這是另外一種解釋語言,在這里JavaScript只是一個(gè)對(duì)象,或者經(jīng)過編譯可以執(zhí)行的語言。 這些代碼生成器把JavaScript當(dāng)成一個(gè)安全的中間語言來使用,介于運(yùn)行于服務(wù)器端的高級(jí)語言和經(jīng)過優(yōu)化的運(yùn)行于瀏覽器中的C或者C++代 碼。這將過分在JavaScript引擎的代碼中強(qiáng)調(diào)性能,潛在上會(huì)把更多的大部分開發(fā)者不會(huì)使用的特性填充到Ecma標(biāo)準(zhǔn)中去。 用這些工具生成的JavaScript代碼運(yùn)行時(shí)看起來很“有效”,但從某種意義上說,JavaScripty已經(jīng)有足夠好并且會(huì)越來越好的性 能,每個(gè)人都想把JavaScript的性能最大化。但是大部分的JavaScript都是手寫的,我也希望這種情況會(huì)一直延續(xù)下去。 似乎有很多跨站腳本攻擊都是通過JavaScript開發(fā)的,對(duì)于這方面你有什么看法?現(xiàn)在有什么計(jì)劃來解決這個(gè)問題么? 是的,在這方面我們現(xiàn)在有具體的計(jì)劃。一方面通過W3C這樣的組織制定標(biāo)準(zhǔn),另一方面通過Web開發(fā)者必須遵守的內(nèi)容約束。更多的內(nèi)容可以參考下面這個(gè)文檔: 你預(yù)計(jì)JavaScript的下個(gè)版本會(huì)在什么時(shí)候發(fā)布?你認(rèn)為哪些改進(jìn)會(huì)被整合到新版本中? ECMA-262標(biāo)準(zhǔn)的3.1版預(yù)計(jì)會(huì)在2009年年中的時(shí)候出爐,我希望一個(gè)協(xié)調(diào)的第四版會(huì)在接下來的一年中誕生。我相信無論對(duì)于我自己,還是 對(duì)于委員會(huì)中的每位委員,經(jīng)過多種多樣可操作的雛形實(shí)現(xiàn)驗(yàn)證的新版本規(guī)范,比定下某個(gè)特定日期,在這個(gè)日期前必須發(fā)布一個(gè)法律上認(rèn)可的但卻貿(mào)然上線的規(guī)范 更加重要。但根據(jù)現(xiàn)在的努力,3.1版在短期內(nèi)就可以實(shí)現(xiàn),而一個(gè)協(xié)調(diào)的第四大版有望在一到兩年內(nèi)成為與3.1兼容的繼任者。 3.1版本的規(guī)范,主要致力于修復(fù)現(xiàn)有的缺陷,整合一些已經(jīng)被SpiderMonkey(比如getters和setters)和其他瀏覽器中的引擎開發(fā)出來的功能,以及為對(duì)象和屬性提供更加完善的功能。(現(xiàn)在的對(duì)象不能被繼承,屬性也不能被重寫等問題)。 緊隨3.1版本的這個(gè)主要版本,所有的改進(jìn)都會(huì)基于3.1版本的基礎(chǔ)上,致力于易用性(包括新語法)、模塊化以及更多更完善的功能??偟膩碚f,這個(gè)版本就會(huì)成為終結(jié)使用全局函數(shù)進(jìn)行JavaScript編程的現(xiàn)狀的一個(gè)解決方案。 你認(rèn)為JavayScript在Web 2.0中扮演什么樣的角色? 很明顯,JavaScript對(duì)于“Ajax”或者“Web 2.0”這場(chǎng)革命來說,是必不可少的組成部分。我還要說,F(xiàn)irefox、Safari和其他新瀏覽器之間的競(jìng)爭(zhēng),以及由于這些競(jìng)爭(zhēng)所催生的新標(biāo)準(zhǔn),同樣很重要。 真正的程序都可以運(yùn)行在瀏覽器中,而且這些程序都是用JavaScript寫的。 這就使JavaScript不得不變得十分強(qiáng)大,作為可以運(yùn)行在現(xiàn)存所有瀏覽器中的前提。這些瀏覽器甚至包括微軟在新千年的頭五年勉強(qiáng)維護(hù)的IE 5.5和IE 6.0。因此可以用支柱(tap root)來形容JavaScript。 你怎樣看待這些年來反對(duì)JavaScript的“共鳴”聲音? 對(duì)我來說這些“共鳴”主要有幾個(gè)方面: * 早期的異議主要是反對(duì)把腳本語言直接嵌入到HTML中的。 * 對(duì)JavaScript開啟的一些討厭的功能的排斥(在Firefox出現(xiàn)以前,缺乏完善的控件支持,比如彈出式窗口等)。 * 不同瀏覽器對(duì)DOM的兼容性不同,這讓開發(fā)者感到很頭痛。讓JavaScript可以更好的兼容所有的瀏覽器,同樣很頭痛。 * 當(dāng)然,有人對(duì)Netscape市場(chǎng)部在JavaScript命名時(shí)的花招一直耿耿于懷,因?yàn)檫@暗示著JavaScript和Java存在聯(lián)系,不然的話就 是故意傳播JavaScript和Java之間的混亂(必須鄭重聲明,Netscape的所有人都不想故意傳播這種混亂)。 這些反對(duì)的共鳴都是可以理解的。無論是在網(wǎng)絡(luò)上、在多用戶操作系統(tǒng)中還是在各種兼容的瀏覽器中,JavaScript都是提供互動(dòng)性的唯一的編程 語言(比其他所有平臺(tái)都大)。其它的編程語言都是通過插件的形式,而且都是同一家公司開發(fā)的,這樣就可以通過代碼的方式來控制操作性。因此,使用 JavaScript和DOM進(jìn)行開發(fā),曾經(jīng)是一個(gè)很困難的經(jīng)歷。 這無助于Netscape和Microsoft的瀏覽器戰(zhàn)爭(zhēng),猛烈的創(chuàng)新革命促使標(biāo)準(zhǔn)化的過早到來,而且這場(chǎng)戰(zhàn)爭(zhēng)的結(jié)束導(dǎo)致了多年來對(duì)JavaScript的忽視,和在IE的壟斷下制定各種Web標(biāo)準(zhǔn)。 另一方面,很多開發(fā)者都聲稱自己喜歡做JavaScript的開發(fā),而且自從2004年以后,伴隨著“Ajax”和“Web 2.0”的出現(xiàn),JavaScript正迎來自己的新生。 你怎樣看待JavaScript對(duì)未來的影響?你認(rèn)為在網(wǎng)絡(luò)上是否會(huì)出現(xiàn)新的客戶端腳本語言? 我認(rèn)為JavaScript暫時(shí)還是默認(rèn)的,也是唯一需要的瀏覽器編程語言。但是其它語言也會(huì)在瀏覽器中被支持,開始的時(shí)候可能只在某個(gè)瀏覽器中 被支持,最終會(huì)演變?yōu)榭鐬g覽器的標(biāo)準(zhǔn)形式。Mozilla的瀏覽器,包括 Firefox,現(xiàn)在已經(jīng)有選擇的整合了C-Python,但是有很多工作還是要由你自己來做,你還要確保你的用戶已經(jīng)安裝了C-Python運(yùn)行庫(kù)。我 們現(xiàn)在正致力于通過安全地、可兼容地以及可以自動(dòng)更新的運(yùn)行庫(kù)來支持更多流行的語言。 現(xiàn)在已經(jīng)很清楚,Web的客戶端是很值得進(jìn)行編程的,這與1995年Marc Andreessen和我預(yù)料的一樣?,F(xiàn)在世界上的臺(tái)式電腦和筆記本有足夠強(qiáng)大的運(yùn)算能力和存儲(chǔ)空間,和以往任何時(shí)間相比,都可以做更多有用的任務(wù),不限 制他們的自動(dòng)化能力,把表單或者消息提交給Web服務(wù)器上真正的程序。真正的程序同樣可以運(yùn)行在瀏覽器中,而且他們是用JavaScript寫的。 JavaScript的影響在不斷增長(zhǎng),它不僅已經(jīng)成為瀏覽器中腳本的標(biāo)準(zhǔn),還會(huì)成為臺(tái)式機(jī)和其他設(shè)備(比如iPhone)中腳本的標(biāo)準(zhǔn)。 你怎樣看待最近發(fā)布的JavaScript框架,比如SproutCode和Objective-J/Cappuccino?你認(rèn)為他們會(huì)給未來的Web應(yīng)用程序帶來什么影響? Apple的炒作機(jī)器無疑使一些人把這個(gè)產(chǎn)品當(dāng)成了Ajax的第二代。對(duì)我來說,他們只是進(jìn)化在不同階段的JavaScript庫(kù)和框架而已。包 括 Google GWT和一些比較流行的庫(kù),比如Dojo、JQuery、YUI以及Prototype。我不大想看到某個(gè)框架或者庫(kù)過于強(qiáng)大,至少不希望會(huì)持續(xù)很多年, 最好他們只是在Web的某個(gè)領(lǐng)域很流行。在某些特定的設(shè)備上開發(fā),你當(dāng)然沒有什么選擇的余地,但在Web上就不一樣,因?yàn)樗w的范圍非常廣,這是無論多 么流行的設(shè)備都無法比擬的。 你認(rèn)為我們有可能會(huì)看到桌面應(yīng)用程序最終走向滅亡么? 我認(rèn)為不會(huì),但你會(huì)看到更多使用Web技術(shù)構(gòu)建的桌面應(yīng)用程序,他們甚至是安裝在本地的,而不是儲(chǔ)存在某個(gè)Web服務(wù)器主機(jī)中。當(dāng)然Web應(yīng)用程 序也會(huì)持續(xù)不斷的發(fā)展。伴隨著JavaScript的成長(zhǎng)和其他基于瀏覽器的Web標(biāo)準(zhǔn)的誕生,我們將能看到Web應(yīng)用程序可以做更多的互動(dòng)行的工作,而 這些工作以前都是必須使用桌面應(yīng)用程序來完成的。我們已經(jīng)在前沿的瀏覽器中看到離線應(yīng)用、二維和三維渲染等已經(jīng)變?yōu)槭聦?shí)。 你怎樣看待像Flash這樣不斷流行的插件對(duì)JavaScript的流行度帶來的影響? Flash在盡力做到完善的支持Ajax,可以編寫腳本,可以在外部訪問,和其他插件、像圖片和表格這樣的內(nèi)置對(duì)象、純粹的JavaScript 對(duì)象一樣,以組件的方式嵌入到網(wǎng)頁(yè)中。開放的網(wǎng)絡(luò)對(duì)待每項(xiàng)技術(shù)都是一視同仁的,這也確實(shí)妨礙了單一廠商的一枝獨(dú)秀。你可以通過Flash怎樣在Web 2.0的世界中暢游,和微軟的Silverlight也瞄準(zhǔn)了現(xiàn)代Web世界這個(gè)大蛋糕看出一些端倪。 人們不想回到一家廠商的插件充斥著整個(gè)網(wǎng)頁(yè)的時(shí)代,所有的網(wǎng)站也會(huì)這么想。 首先,展示在最前沿瀏覽器中的Web標(biāo)準(zhǔn)正在不斷進(jìn)化,并努力與Flash和Silverlight在視頻、動(dòng)畫、高性能JavaScript等方面分庭抗?fàn)帯? 其次,沒有網(wǎng)站愿意為了“bling”而犧牲“reach”。和插件始終存在不足相比,瀏覽器天生就會(huì)支持各種Web標(biāo)準(zhǔn),比如JavaScript。用戶不會(huì)經(jīng)常更新他們的插件,用戶也會(huì)拒絕使用某個(gè)插件,但會(huì)信任并繼續(xù)使用瀏覽器。 你認(rèn)為JavaScript將來會(huì)在哪些地方延伸? 首先自然會(huì)在瀏覽器中,但以后可能會(huì)更廣,比如在服務(wù)器端,或者成為一個(gè)端到端的編程語言(更多的替代傳統(tǒng)意義上桌面或操作系統(tǒng)的腳本職責(zé))。 你是否依舊認(rèn)為(就像你之前說過的)“ECMAScript和皮膚病一樣,只是一個(gè)多余的商業(yè)名稱而已”? 我沒有印象說過這句話,但是有一點(diǎn)很確認(rèn):這不是一個(gè)理想的名字,而且聽起來有點(diǎn)像濕疹(eczema)。 你是否依然預(yù)計(jì)ECMA-262會(huì)在2008年10月前發(fā)布?你是否期望新版本將會(huì)完全向后不兼容? 如果你說的是ECMA-262的第四版,那我的答案肯定是不,我們不指望這個(gè)版本會(huì)在2008年發(fā)布。負(fù)責(zé)下一個(gè)版本的技術(shù)委員會(huì)(ECMA TC39)正在努力協(xié)調(diào)各種提議,協(xié)調(diào)的結(jié)果將包含一個(gè)短期的3.1版本,這將在2009年春天發(fā)布,還包括一個(gè)接下來發(fā)布的更大的版本(其實(shí)也不是特別 大),我們稱之為ECMA-262第四版。 JavaScript的不斷發(fā)展和流行給你帶來過什么驚喜么? JavaScript的流行給了我不小的驚喜。我在很長(zhǎng)一段時(shí)間里,心里已經(jīng)默認(rèn)JavaScript是不會(huì)流行的了。原因當(dāng)然包括那些討厭的彈 出窗口,但更多是由于這種自由組合的函數(shù)和基于原型的對(duì)象編程的傳統(tǒng)。但后來結(jié)果發(fā)現(xiàn),很多程序員本來就是從JavaScript開始學(xué)習(xí)編程的,還有一 些擅長(zhǎng)面向?qū)ο缶幊痰某绦騿T,很喜歡這種非傳統(tǒng)的組合。 JavaScript從最初的開發(fā)到現(xiàn)在,什么是讓你最驕傲的? 應(yīng)該是把優(yōu)秀的函數(shù)和對(duì)象原型結(jié)合到了一起。對(duì)于一個(gè)已經(jīng)標(biāo)準(zhǔn)化的產(chǎn)品,我不會(huì)說他有多么完美,因?yàn)闃?biāo)準(zhǔn)化的過程中擴(kuò)充了不少的內(nèi)容,其中包含一些錯(cuò)誤。但拋出一些小失誤和人為原因,核心的思想完全經(jīng)住了時(shí)間的考驗(yàn)。 你認(rèn)為編程語言會(huì)朝什么方向發(fā)展?尤其是在接下來的5-20年間? 未來的編程語言必須在我們都要面對(duì)的兩個(gè)方面做得更好: * 多核/大規(guī)模并行計(jì)算機(jī)現(xiàn)在已經(jīng)出現(xiàn)在大家的身邊,現(xiàn)在只是出現(xiàn)在臺(tái)式機(jī)上,不久移動(dòng)設(shè)備也會(huì)具有相應(yīng)的能力。計(jì)算機(jī)科學(xué)家們?cè)谧罱氖迥昀?,正在努?使并行計(jì)算可以做更多有用的事情,也更加容易使用。JavaScript在多核的世界里面有自己的角色需要扮演,從相對(duì)簡(jiǎn)單的擴(kuò)展開始,比如Google Gear的工作池,“零共享(shared nothing)”的后臺(tái)線程,通過瀏覽器中的JavaScript互相發(fā)送和接收消息進(jìn)行通訊。 * 安全。一個(gè)編程語言無法用自身建立起來的安全體系保證安全,因?yàn)榘踩且惶紫到y(tǒng)屬性,涵蓋所有層次的抽象,包括上游和下游的語言。但一個(gè)編程語言當(dāng)然可以向用戶提供各種更好或者更差的工具來構(gòu)建安全系統(tǒng),并證明這些安全屬性可以在這個(gè)編程語言中得到保證。 你對(duì)那些未來的程序員有什么建議么? 學(xué)習(xí)大師們的經(jīng)典著作:Knuth、Wirth和Hoare。計(jì)算機(jī)科學(xué)就像一個(gè)滾動(dòng)的輪胎,在學(xué)術(shù)研究方面,每10-20年就會(huì)重復(fù)發(fā)現(xiàn)一些以 前曾經(jīng)被發(fā)現(xiàn)過的東西。當(dāng)然,近些年來大家也做了大量的工作,但我要說的,學(xué)生們不止要從最近的知識(shí)中學(xué)習(xí),還要向過去的那些大師們學(xué)習(xí)。 該文章在 2010/2/7 20:58:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |