|
本文是從 Object Oriented Programming is Dead 這篇文章翻譯而來。
那好吧,也許是沒死,但卡內(nèi)基.梅隆大學(xué)的Robert Harper教授卻說(Teaching FP to freshmen)面向?qū)ο缶幊毯驮O(shè)計(jì)“不適合做為現(xiàn)代計(jì)算機(jī)科學(xué)教學(xué)課程”,詳細(xì)的內(nèi)容引用如下:
“面向?qū)ο缶幊虘?yīng)該完全的從基礎(chǔ)課程中刪除掉,因?yàn)樗仁欠茨K化,又是反并行的,這是它的非常固有的特征,所以它不適合作為一種現(xiàn)代的計(jì)算機(jī)科學(xué)課程。”
估計(jì)你們也意料到了,評(píng)論里出現(xiàn)了一些反對意見。當(dāng)我把這篇文章地址貼到Facebook上后,在很短的時(shí)間里出現(xiàn)了16條評(píng)論,幾乎都是反對的。有一個(gè)做招聘工作的人回復(fù)道“我已經(jīng)疲倦了面試那些只知道Haskell語言卻不會(huì)使用C里的strlen()函數(shù)的實(shí)習(xí)生。”但是,就像RobertHarper教授在對一條評(píng)論的回復(fù)中說的,“在卡耐基,我們的目標(biāo)是教育學(xué)生,而不是培訓(xùn)學(xué)生”。這究竟是在說什么呢?難道是學(xué)院派和行業(yè)派的沖突嗎?學(xué)院派通常認(rèn)為“對于學(xué)生來說,他們有很多的機(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)歷過各種編程模式的興衰。我最初做行業(yè)編程(以及學(xué)術(shù)編程)時(shí)采用的是結(jié)構(gòu)化編程模式。這種編程模式當(dāng)時(shí)被認(rèn)為是一個(gè)巨大的進(jìn)步,但需要人們在思考和設(shè)計(jì)程序時(shí)做一些改變。后來我又經(jīng)過了很長的、緩慢的、諸多痛苦的過程轉(zhuǎn)變到了面向?qū)ο缶幊棠J健N覀冊?jīng)經(jīng)過函數(shù)式編程的年代嗎?也許吧。也許它跟其它的編程模式共存不沖突。
我們?nèi)缃裼辛诵碌男枨蟆U癞?dāng)初的結(jié)構(gòu)化模式和后來的面向?qū)ο竽J绞莵頋M足大型程序和巨型團(tuán)隊(duì)的要求,如今的因?yàn)橐筇幚砀嗟臄?shù)據(jù)的趨勢而出現(xiàn)的關(guān)鍵問題就是并行性(parallelism)。基于這個(gè)背景出現(xiàn)的微軟的F#語言的目標(biāo)就是并行性——為了更好的在多處理器的電腦上并行工作。很顯然,我們不停的向前發(fā)展是為了更好的利用最新的硬件。但是,這就可以說面向?qū)ο蟪蔀檫x修、我們的學(xué)生就可以等到畢業(yè)后再學(xué)習(xí)這些知識(shí)嗎?我還沒有被說服。
即使是在面向?qū)ο鬅岢边_(dá)到頂峰的時(shí)候,我就堅(jiān)稱,并不是任何東西都可以成為對象,各種模式的混合使用在過去,在將來,都是正確之道。即使現(xiàn)在函數(shù)式編程正趨于流行、使用量增加的情況下仍然會(huì)是這種情況。那些古老的編程模式會(huì)完全的消失嗎?我不這么認(rèn)為。以后大家都不用對象了嗎?不可能的。我想,那些大學(xué),特別是聲稱“提供教育而培訓(xùn)”的大學(xué)其實(shí)是對學(xué)生的一種傷害,他們沒有看到當(dāng)今這個(gè)領(lǐng)域的真實(shí)情況。不祥之兆不斷顯現(xiàn),函數(shù)式編程日顯重要。但忽略面向?qū)ο缶幊滩粫?huì)給任何人帶來好處。只是我的個(gè)人意見。
it知識(shí)庫:面向?qū)ο缶幊桃阉溃?/a>,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。