南通青鳥(niǎo)IT教育
作為程序員,要想在IT行業(yè)拿的高薪,必須脫穎而出。一個(gè)專注于編程的程序員需要掌握多種技能,正如一個(gè)武林高手需要掌握多種武功一樣,你掌握的編程語(yǔ)言越多,作為程序員解決問(wèn)題的方法和思路也越多。其實(shí),程序都是相同的,學(xué)會(huì)編程的思想和理念后,具體的只是技巧和經(jīng)驗(yàn)了。
1. 學(xué)習(xí)多門(mén)編程語(yǔ)言可以找到更加適合解決問(wèn)題的那一種語(yǔ)言
在《CTMOCP》一書(shū)中,對(duì)于一個(gè)編程語(yǔ)言中一個(gè)新概念出現(xiàn)的原因,做了很好的說(shuō)明:a new concept is added when programs become complicated for technical reasons unrelated to the problem being solved(在編程語(yǔ)言中一個(gè)新概念的出現(xiàn),通常是因?yàn)樵谝鉀Q的問(wèn)題中,出現(xiàn)了一些 和問(wèn)題本身無(wú)關(guān)的需要用復(fù)雜的技術(shù)手段解決的問(wèn)題)。我想,這種“新概念”,在淺層次可以是一些人們常用的API,在深一點(diǎn)的層次,可以是一種大的編程概念,比如面向?qū)ο?,遞歸,解釋性編程。通過(guò)合適地利用這些新概念、API,可以更加容易的解決一個(gè)現(xiàn)有問(wèn)題。
2. 一門(mén)良好的語(yǔ)言能更清晰的描述問(wèn)題,從而加快編碼和溝通的速度
在《黑客與畫(huà)家》里面,這句話寫(xiě)得很好:一個(gè)操作所需的代碼越多,就越難避免bug,也越難發(fā)現(xiàn)他們。對(duì)于我的一些低級(jí)應(yīng)用來(lái)說(shuō),在用慣了Java的高級(jí)庫(kù)函數(shù)之后,如果去用C做一些ACM題目,是一件很困難的事情(同時(shí)也是因?yàn)樽约簩?duì)于C++不夠了解)——算法可以想出來(lái),但對(duì)于基本的數(shù)據(jù)結(jié)構(gòu),比如哈希表、樹(shù)、棧 等等,都需要自己來(lái)實(shí)現(xiàn)——隨便一個(gè)小錯(cuò)誤都會(huì)導(dǎo)致bug,無(wú)疑增加了debug的難度。
3. 學(xué)習(xí)多門(mén)編程語(yǔ)言可以避免自己的思維被一種語(yǔ)言所限制
《黑客與畫(huà)家》:如果你長(zhǎng)期使用某種語(yǔ)言,你就會(huì)慢慢按照這種語(yǔ)言思維。在《CTMOCP》一書(shū)也有一個(gè)例子:學(xué)習(xí)Java的人認(rèn)為 concurrency很難操作,并且很消耗計(jì)算機(jī)資源,于是會(huì)盡量避免使用 concurrency;但實(shí)際上,如果語(yǔ)言本身能夠很好的處理concurrency,就可以把它變成一個(gè)很好的工具——比如Unix的“管道”就是一種很好用的concurrency形式。這和生活中實(shí)際用著的語(yǔ)言很類似——不同文化語(yǔ)言的差異,會(huì)限制這個(gè)文化中的人想問(wèn)題的方式(這里有很多例子://archives/501 )。更激烈的一個(gè)例子,是在小說(shuō)《1984》里面,當(dāng)局通過(guò)限制人們的用詞來(lái)限制人們的思維——所以大家都被強(qiáng)迫講“新語(yǔ)”。