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