|
上周還是什么時候,和老大的一次談話,他提到,他覺得Java程序員只能是個半吊子(大概意思是這樣)。當(dāng)時,我反駁說,其實還是可以有牛人的。但元旦琢磨了下,覺得還是一個思考層次的問題。
如果單從Java語言來看,確實是很簡單的。沒有指針,內(nèi)存自動回收,大量的設(shè)計模式,簡化了遞歸的思考,真把人當(dāng)成了一個傻子,希望把所有復(fù)雜性都掩蓋好,這樣就不容易犯錯。好笑的是,現(xiàn)在大量的學(xué)校開始以Java作為教學(xué)語言,這有沒有問題?如果教學(xué)是以簡化編程,更注重計算機科學(xué)的學(xué)習(xí),那沒有問題。當(dāng)如果天天講一些Java的新特性,1.4 1.5的區(qū)別,講autobox,那就太好笑了。一個不適合做程序員的學(xué)生也可以達(dá)到及格。
我們再看看lisp,看看C。其實一個是遞歸的代言詞,一個是指針的代言詞。如果你無法從多個層次進(jìn)行抽象,那么你很難適應(yīng)lisp函數(shù)式編程的風(fēng)格,也就不奇怪理解不了Google的Mapreduce。如果你不了解指針,那你幾乎看不懂一行操作系統(tǒng)代碼。你幾乎就很難去架構(gòu)一個數(shù)據(jù)的存取方式。
但還是有一些Java大牛的,James Gosing就是其中一位,他們都是C和lisp或者說指針和遞歸的高手。我們可以更加一步來抽象,算法其實包含了大量的遞歸,編譯原理是lambda演算,里面也有大量遞歸,操作系統(tǒng)實現(xiàn)有大量指針,數(shù)據(jù)庫,網(wǎng)絡(luò)都是指針的天下。
所以什么是一個優(yōu)秀的Java程序員呢?從一個特別的層次下定義:他一定熟悉或者精通C和lisp/haskell/erlang等語言。。
同時,我們公司一博士也發(fā)表感慨,說感覺Javascript好難學(xué)啊,這門語言太復(fù)雜了。其實Javascript的復(fù)雜是由于它本身就吸收了C和lisp的精華。所以closure、pointer都可以得到體現(xiàn)。不了解Javascript指針的同學(xué)可以看看我的對象真經(jīng)。所以,Javascript是一門看似簡單,但很能體現(xiàn)水平的語言。不過,如果能一開始就抱有這樣的一個心態(tài),學(xué)習(xí)Javascript時就會少了些浮躁。請相信,將來Javascript會有更大的舞臺。
it知識庫:優(yōu)秀的程序員是懂指針和遞歸的,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。