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