
當(dāng)我說Java不會成功時,我的意思是它和Cobol一樣,進(jìn)化之路已經(jīng)走到了盡頭。
作者并非唱衰Java,只是這種語言太冗長了,在不長時間的學(xué)習(xí)中我也發(fā)覺了這一點(diǎn),再加上最近.net開源,Java的前景不會太樂觀。不過目前來看,這點(diǎn)擔(dān)心是多余的,畢竟還有那么多程序員使用這種語言。
一件垃圾會產(chǎn)生更多的垃圾。
很有道理,在《人月神話》中,有一個“破窗”理論,和作者的觀點(diǎn)如出一轍。冗余的代碼會產(chǎn)生更多的冗余代碼。
前期就做好優(yōu)化是非常必要的。
那些內(nèi)核很小、最干凈的編程語言才會存在于進(jìn)化的主干上。
正如作者所言,內(nèi)核干凈的語言把自由還給了程序員,比如Lisp這種語言,就具有干凈的特點(diǎn),它的分支scheme Lisp的函數(shù)式編程思想讓習(xí)慣了C系語言的我驚為天人。
正確的做法應(yīng)該是將語言的語義與語言的實(shí)現(xiàn)予以分離。
雖然作者總是不經(jīng)意間為Lisp做廣告,但是這個觀點(diǎn)的確是正確的。
關(guān)于語言的選擇
當(dāng)他向曲線的上方望去,他不會意識到自己正在看更高層次的語言,而是僅僅覺得自己正在看某些奇怪的語言。
通過歸納法我們就會知道,唯一洞悉所有語言優(yōu)劣的人必然是懂的最強(qiáng)大的那種語言的人。
他們都滿足于自己碰巧用熟了的那種語言,他們的編程思想都被那種語言主宰了。
怎么說呢,作者的觀點(diǎn)已經(jīng)很清楚了。根據(jù)圖靈完備,每個語言都可以完成同一個問題的解決,但是存在著最合適的語言,它更適合某一個問題的求解。
我想,雖然我還不夠格,但是對于語言,我們不應(yīng)該用宗教一般的思維去看待,“Python大法好,退C保平安”這類話我們還是少說一些,語言沒有優(yōu)劣,只有合適與否。
當(dāng)然,趁著好奇,多接觸一些語言未嘗不可。
現(xiàn)狀很可能真的會保持下去,因?yàn)榫幊陶Z言的特點(diǎn)之一就是它會使得大多數(shù)使用它的人滿足于現(xiàn)狀,不想改用其他語言。
編程語言不一樣,與其說它是技術(shù),還不如說是程序員的思考模式。
不能再同意,C的過程式,C++、Python、Java等的面向?qū)ο螅€有Haskell、Scheme Lisp的函數(shù)式,每一種都會帶來新的思維轉(zhuǎn)變,嘗試一下會讓我們的思維更為開闊。
編程語言本來就是為了滿足黑客(此處為正面意思)的需要而產(chǎn)生的,當(dāng)且僅當(dāng)黑客喜歡一種語言時,這種語言才能成為合格的編程語言,而不是被當(dāng)做“指稱語義”或者編譯器的設(shè)計。
在現(xiàn)實(shí)中,編程語言總是與它們依附的系統(tǒng)聯(lián)系在一起的。Hello-world本應(yīng)該是一個很簡單的程序,但是在Java語言中卻要寫上一大堆東西,這本身就差不多可以說明Java語言設(shè)計的有問題了。Java語言是為了給別人使用而設(shè)計的,而C、lisp都是設(shè)計者為了自己使用而設(shè)計的。
此處我也不加評論了,距離那樣的層次還很遠(yuǎn),我能做的就是憑借自己的實(shí)踐和經(jīng)驗(yàn)去體會經(jīng)典的經(jīng)驗(yàn),畢竟內(nèi)心的體會才是最重要的。