| 導(dǎo)讀:這是一篇來自譯言網(wǎng)的文章,作者認(rèn)為,計算機是否正在走向消亡是一個假命題,之所以有人這么認(rèn)為是因為人們對計算機科學(xué)存有某種誤解。當(dāng)這種誤解消除之后,計算機科學(xué)將走上平穩(wěn)的發(fā)展之路。 |
計算機科學(xué)正在消亡嗎?
既然蘋果正在盈利,專家們需要一個即將發(fā)生厄運的對象作為預(yù)測目標(biāo)。有人似乎盯上了計算機科學(xué),正是這激發(fā)David Chisnall懷疑這個學(xué)科是否真的正在走向消亡。
在20世紀(jì)90年代末,第一次商業(yè)網(wǎng)站泡沫期間,有這樣一種觀念,計算機科學(xué)學(xué)位是一種快速賺錢的方式。商業(yè)網(wǎng)站的繁榮使風(fēng)險投資者將資本投到最為瘋狂的方案中。他們這樣做只是因為他們恰巧卷入互聯(lián)網(wǎng)。這種趨勢雖然并非全部基于某種事實,卻導(dǎo)致人們認(rèn)為,任何一個從大學(xué)走出的擁有計算機科學(xué)學(xué)位的人都會立即獲得大量的風(fēng)險投資資金。
隨之而來的是不可避免的沖擊,和突如其來的IT行業(yè)從業(yè)者過剩。進(jìn)入這個行業(yè)的大多數(shù)人只是為了快速的獲取錢財而沒有真正的才能所以他們失業(yè)了,但只有很少的一部分人是有才能的人失業(yè)。但這種形勢并沒有對把計算機科學(xué)作為一個具有吸引力的學(xué)位方案的觀念產(chǎn)生太大影響。
自從第一次商業(yè)網(wǎng)站泡沫結(jié)束后,我們發(fā)現(xiàn)申請計算機科學(xué)學(xué)位的人員數(shù)量在逐漸下降。在英國,很多部門會支持降低當(dāng)?shù)厣暾堈邤?shù)量,吸引更多的海外學(xué)員,尤其來自東南亞的學(xué)生,而且給予他們這些渴望在海外學(xué)習(xí)的學(xué)生比他們在美國學(xué)習(xí)更多的優(yōu)惠。這僅僅緩和了下滑。然而,有人開始問計算機科學(xué)是否正在走向消亡。
計算機科學(xué)和望遠(yuǎn)鏡
問題部分來自于人們對計算機科學(xué)確切是什么缺乏認(rèn)識。甚至計算機科學(xué)專業(yè)的本科生通常也只是從最廣義上了解該學(xué)科。所以,人們懷疑這個學(xué)科是否正在消亡,并不奇怪。
甚至計算相關(guān)領(lǐng)域的人們普遍認(rèn)為,計算機科學(xué)基本上就是講授編程的職業(yè)課程。2007年1月,De Montfort大學(xué)Neil McBride在英國計算機社會上發(fā)表了一篇題為“計算的死亡”文章。盡管文章內(nèi)容相當(dāng)?shù)唾|(zhì)量,和使我確信我不愿成為英國計算機社會的一員,但是這篇文章仍然獲得廣泛傳播。文章包含例如這樣的選項:“改變了的是對于理解低級編程或是任何編程的需求。當(dāng)Ruby語言在Rails上使用時,誰還會需要C語言呢?”
誰需要C語言?當(dāng)然,至少是那些企圖理解當(dāng)Ruby在Rail程序中運行時發(fā)生了什么事情的人需要C語言。一種匯編語言還是兩種其實都一樣。一個學(xué)術(shù)學(xué)位,不同于一種職業(yè)資格,關(guān)鍵在于讓人理解而不是技術(shù)——不幸的是Dr.McBride在寫這篇文章的時候沒有注意到這一點。
在試圖描述計算機科學(xué)時,Edsger Dijkstra認(rèn)為,“計算機科學(xué)就是關(guān)于計算機,就像天文學(xué)就是關(guān)于望遠(yuǎn)鏡一樣。”我喜歡這樣的引用,但是它常會被那些不是很了解天文學(xué)的人錯誤引用。在我小的時候,我對天文學(xué)相當(dāng)感興趣,并且花費了大量的時間徘徊于天文臺和閱讀關(guān)于這門科學(xué)(也通過望遠(yuǎn)鏡觀察)。在那期間,我學(xué)到了比在物理課上學(xué)到的更多的光學(xué)知識。盡管我從未造出一個我自己的望遠(yuǎn)鏡,但是很多真正的天文學(xué)家卻做到了,同時很多這個專業(yè)的成員為我們理解光學(xué)作出了重要的貢獻(xiàn)。
當(dāng)然,望遠(yuǎn)鏡的制造者和天文學(xué)家是有所不同的。一個望遠(yuǎn)鏡的制造者可能會知道更多關(guān)于望遠(yuǎn)鏡結(jié)構(gòu)的東西,但很少會關(guān)注恒星體的運動。但是兩者都需要真正理解光線在透過鏡頭和從鏡子里反射時發(fā)生了什么。沒有理解這些,天文學(xué)是相當(dāng)困難的。
這樣的道理同樣適用于計算機科學(xué)。一個計算機科學(xué)家可能不會編制他自己的集成電路,也可能不會寫自己的編譯器和操作系統(tǒng)。在現(xiàn)代,這些東西對于個人來說通常是太復(fù)雜而且不可能完成一個可與現(xiàn)有產(chǎn)品競爭的標(biāo)準(zhǔn)。但是計算機科學(xué)家明確知道,當(dāng)一個程序在編譯和運行時,在編譯器、操作系統(tǒng)、CPU中發(fā)生著什么。
望遠(yuǎn)鏡對于天文學(xué)家來說是一個重要的工具,同樣計算機對于計算機科學(xué)家來說是一個重要工具——但是它僅僅只是一個工具,并不是研究的重點。天文學(xué)家用望遠(yuǎn)鏡研究天上的星體;計算機科學(xué)家研究算法來使用計算機。
軟件和硬件通常被認(rèn)為是相互分離的概念。這是一個方便的區(qū)分,但是并不是一直是事實。第一臺計算機自身并沒有軟件,和需要重新?lián)Q線以運行不同的程序。現(xiàn)代硬件經(jīng)常集成固件——軟件可以與硬件緊密結(jié)合在通用目的的硅片中以完成專門目的的功能。從科學(xué)的視角來看,一個任務(wù)是通過硬件還是軟件完成都是不重要的。(在工程學(xué)看來,這是成本、維護(hù)和速度的交換。)無論如何,硬件與軟件的結(jié)合是一種算法的實例,應(yīng)當(dāng)讓它得到研究。
正如和其他的學(xué)科一樣,計算機科學(xué)中涉及多個學(xué)科領(lǐng)域。我傾向于將這個學(xué)科視為三個學(xué)科領(lǐng)域的交集。
數(shù)學(xué)
工程學(xué)
心理學(xué)
研究沒有計算機輔助、純抽象算法的計算機科學(xué)家正處于數(shù)學(xué)的邊緣。建立大型硬件和軟件系統(tǒng)的計算機科學(xué)家更接近于工程學(xué)。那些使用常規(guī)驗證工具建立這些系統(tǒng)的人們處于這兩者之間。
沒有人的指令,電腦基本上沒用,所以這正是心理學(xué)在計算機科學(xué)中重要的原因。電腦需要和人之間進(jìn)行很多交互,沒有任何群體是真正適應(yīng)這樣的任務(wù)的。計算機如此廣泛應(yīng)用的原因是計算機在人類不能適應(yīng)的地方表現(xiàn)出更多的優(yōu)勢。試圖找到一種讓人和機器都能理解的描述機制是計算機科學(xué)的子學(xué)科“人/計算機交互”(HCI)的使命。因此,這一學(xué)科一般被認(rèn)為接近心理學(xué)。
人機交互并不是計算機科學(xué)中唯一與心理學(xué)相關(guān)的領(lǐng)域。回到1950年,阿蘭 圖靈推薦將圖靈測試作為一種判定實體是否是智能的實體的方法。
我們完全可以理解,那些沒有直接學(xué)習(xí)計算機科學(xué)的人搞不清這個學(xué)科的范圍,錯誤的將它歸結(jié)于其它更為熟悉的學(xué)科。因此,有人推薦將這一學(xué)科改名為“信息科學(xué)”。從原則來講,這是一個好辦法,但是缺點在于很難以一種直觀的方式將某人描述為一個信息專家。
計算機科學(xué)家不能編程!
在和業(yè)內(nèi)人士聊天的時候,我通常被告知計算機科學(xué)家不會編程。這個問題部分源自那些雇傭計算機科學(xué)家的人,他們認(rèn)為計算機科學(xué)家僅僅是做了3至4年編程工作的人。(另外一部分源自帶有同樣觀念的申請學(xué)習(xí)計算機科學(xué)的學(xué)生。)
一些計算機科學(xué)家,甚至教授,確實不會編程。教授們讓博士生們?yōu)樗麄兘鉀Q編程問題,但是現(xiàn)在畢業(yè)生們并不那么認(rèn)為。編程更接近于計算機科學(xué)的工程學(xué)部分,那些通過更關(guān)注于數(shù)學(xué)或心理學(xué)方面的計算機學(xué)科學(xué)位的學(xué)生當(dāng)然可能在工程學(xué)方面處于劣勢。
很多的對于計算機科學(xué)的不滿來自錯誤的期望,即認(rèn)為一個計算機科學(xué)畢業(yè)生就是一個好的程序員。其實,這個專業(yè)的畢業(yè)生應(yīng)當(dāng)在學(xué)校至少要學(xué)習(xí)六種以上的語言,但是她不必做任何事情尤其綜合這些語言。她當(dāng)然幾乎不會深入了解一個給予的平臺上可獲得的標(biāo)準(zhǔn)庫,而要全面的理解這些需要經(jīng)驗。這些經(jīng)驗她可能從其他工作中或開源工作中學(xué)會,但是絕不是從她的學(xué)位課程中。
計算機科學(xué)和軟件工程是截然不同的課程,但很多人將兩者混淆看待。就工具和流程來講,軟件工程教授的是開發(fā)軟件的過程。計算機科學(xué)課程只是簡單的涉及了這些問題,就像材料物理學(xué)家可能了解機械工程一樣。當(dāng)然,這并不能使計算機科學(xué)家成為一個軟件工程師,它至多使物理學(xué)家成為建橋的最佳的候選人。
它有什么好處呢?
如果他們不能編程,那么擁有一個計算機科學(xué)家的目的又是什么呢?要想證明一個學(xué)術(shù)科目的存在,它必須讓學(xué)習(xí)者對它有實用的理解。計算機科學(xué)首先是應(yīng)用數(shù)學(xué)的一個分支,因此計算機科學(xué)家需要理解數(shù)據(jù)推理的原理。但有兩個方面又讓計算機科學(xué)和數(shù)學(xué)有所不同:
關(guān)注效率。除理論之外,這種專注表現(xiàn)在本身復(fù)雜性的理論,它根據(jù)它們運行的時間和空間需求來組織算法。當(dāng)接近于工程學(xué)時,這變成了最小化運行在現(xiàn)實架構(gòu)上的指令數(shù)量,或者減少別的瓶頸。很多的計算機科學(xué)是一種折中的選擇,和包含找到一種解決現(xiàn)實需求的有效(不是最理想的)方法。當(dāng)然,這些原理也適用于計算之外。例如,工作流的優(yōu)化。
同時,專注于不同層次的抽象概念。算法接近于計算機科學(xué)的應(yīng)用的邊緣,人們期望它運行在真實的系統(tǒng)。在程序運行時執(zhí)行的指令,用于創(chuàng)建這些指令的高級算法,和用于與用戶交互的接口都是很重要的。一位計算機科學(xué)家需要將這些在思考問題時一次一并考慮。
對于大多數(shù)人來說,計算機已經(jīng)成為我們?nèi)粘I钪械囊徊糠帧I踔链蛘劢K端機,很多人每天都與大量的計算機設(shè)備交互。這種趨勢使處理多線程的算法更有前景,然而計算機科學(xué)卻是創(chuàng)立這一切的核心。
在一個時期內(nèi),計算機科學(xué)的申請者數(shù)量可能還會降低。也許計算機科學(xué)不再是與“快速富裕”相關(guān)的熱詞,但人們(英國計算機社會之外)正開始認(rèn)識到,計算機科學(xué)不是職位軟件開發(fā)學(xué)位課程。從長遠(yuǎn)來看,這種認(rèn)識有利于這一科目發(fā)展,因為這可以第一時間排除那些不需要選擇這一學(xué)科的學(xué)生。近年來,物理學(xué)的申請者也在降低,但沒有人聲稱物理學(xué)正在消亡和需要更多的迎合現(xiàn)實需要,讓人們成為二流的工程師,而不是成為一流的科學(xué)家。
原文鏈接:http://article.yeeyan.org/view/154383/146061/