“面向?qū)ο缶幊虘?yīng)該完全的從基礎(chǔ)課程中刪除掉,因?yàn)樗仁欠茨K化,又是反并行的,這是它的本身具有的性質(zhì),所以它不適合作為一種現(xiàn)代的計(jì)算機(jī)科學(xué)課程!
估計(jì)你們也意料到了,評(píng)論里出現(xiàn)了一些反對(duì)意見(jiàn)。當(dāng)我把這篇文章地址貼到Facebook上后,在很短的時(shí)間里出現(xiàn)了16條評(píng)論,幾乎都是反對(duì)的。有一個(gè)做業(yè)內(nèi)招聘工作的人回復(fù)道“我已經(jīng)疲倦了面試那些只知道Haskell語(yǔ)言卻不會(huì)使用C里的strlen()函數(shù)的實(shí)習(xí)生!钡,就像Robert Harper教授在對(duì)一條評(píng)論的回復(fù)中說(shuō)的,“在卡耐基,我們的目標(biāo)是教育學(xué)生,而不是培訓(xùn)學(xué)生”。這究竟是在說(shuō)什么呢?難道是學(xué)院派和行業(yè)派的沖突嗎?學(xué)院派通常認(rèn)為“對(duì)于學(xué)生來(lái)說(shuō),他們有很多的機(jī)會(huì)去學(xué)習(xí)那些陳舊的編程方法,他們可以在日后的工作實(shí)踐中按需學(xué)習(xí)那些知識(shí)”,與此同時(shí),招聘經(jīng)理們卻痛恨這種現(xiàn)狀,就像一位副總裁告訴我的,要想把一個(gè)從不錯(cuò)的大學(xué)里的應(yīng)屆畢業(yè)生培養(yǎng)成一個(gè)完全能工作的軟件開發(fā)人員,平均所需時(shí)間是一年半。這就不奇怪為什么許多公司不喜歡要?jiǎng)偖厴I(yè)的學(xué)生了。
我曾經(jīng)見(jiàn)過(guò)各種編程模式的興衰。我開始做編程行業(yè)(及學(xué)術(shù)編程)時(shí)采用的是結(jié)構(gòu)化編程模式。這種編程模式當(dāng)時(shí)被認(rèn)為是一個(gè)巨大的進(jìn)步,但需要人們?cè)谒伎己驮O(shè)計(jì)程序時(shí)做一些改變。后來(lái)我又經(jīng)過(guò)了很長(zhǎng)的、緩慢的、諸多痛苦的過(guò)程轉(zhuǎn)變到了面向?qū)ο缶幊棠J。我們(cè)?jīng)經(jīng)過(guò)函數(shù)式編程的年代嗎?也許吧。也許它跟其它的編程模式共存不沖突。
我們?nèi)缃裼辛诵碌男枨蟆U癞?dāng)初的結(jié)構(gòu)化模式和后來(lái)的面向?qū)ο竽J绞莵?lái)滿足大型程序和巨型團(tuán)隊(duì)的要求,如今的因?yàn)橐筇幚砀嗟臄?shù)據(jù)的趨勢(shì)而出現(xiàn)的關(guān)鍵問(wèn)題就是并行性(parallelism)。基于這個(gè)背景出現(xiàn)的微軟的F#語(yǔ)言的目標(biāo)就是并行性——為了更好的在多處理器的電腦上并行工作。很顯然,我們不停的向前發(fā)展是為了更好的利用最新的硬件。但是,這就可以說(shuō)面向?qū)ο蟪蔀檫x修、我們的學(xué)生就可以等到畢業(yè)后再學(xué)習(xí)這些知識(shí)嗎?我還沒(méi)有被說(shuō)服。
即使是在面向?qū)ο鬅岢边_(dá)到頂峰的時(shí)候,我就堅(jiān)稱,并不是任何東西都可以成為對(duì)象,各種模式的混合使用在過(guò)去,在將來(lái),都是正確之道。即使現(xiàn)在函數(shù)式編程正趨于流行、使用量增加的情況下仍然會(huì)是這種情況。那些古老的編程模式會(huì)完全的消失嗎?我不這么認(rèn)為。以后大家都不用對(duì)象了嗎?不可能的。我想,那些大學(xué),特別是聲稱“提供教育而培訓(xùn)”的大學(xué)其實(shí)是對(duì)學(xué)生的一種傷害,他們沒(méi)有看到當(dāng)今這個(gè)領(lǐng)域的真實(shí)情況。不祥之兆不斷顯現(xiàn),函數(shù)式編程日顯重要。但忽略面向?qū)ο缶幊淌遣粫?huì)給任何人帶來(lái)好處,對(duì),那只是我的個(gè)人意見(jiàn)。