【知乎整理】優(yōu)秀的程序員應(yīng)該掌握多少門編程語言淹仑?

一個(gè)程序員是否優(yōu)秀跟他掌握語言的數(shù)量沒有任何關(guān)系。而是跟他的接受能力扁达、思維能力學(xué)習(xí)能力有關(guān)。優(yōu)秀的程序猿蠢熄,應(yīng)該掌握需要時(shí)可極快掌握一門編程語言的能力跪解。@川杏之

從人角度來講,優(yōu)秀跟語言無關(guān),優(yōu)秀是一種能力叉讥,有的人只用一種語言窘行,但是鉆的很深,有的會(huì)很多種語言图仓,涉獵面廣罐盔。

鉆的深的要成為某領(lǐng)域?qū)<遥娅C廣的要成為一個(gè)方便好使的多面手救崔。前者在大公司更多惶看,后者創(chuàng)業(yè)型更多。大公司分工細(xì)六孵,容易出專家纬黎,長期深耕在一兩個(gè)領(lǐng)域,小公司快速靈活劫窒,偏向多面手本今,需要的時(shí)候你能快速搞出來。

從語言角度來講主巍,每種語言都有自己更專長的范疇冠息。導(dǎo)致語言有分工的原因既和語言本身有關(guān),不過更多的還是語言背后的生態(tài)圈有關(guān)孕索。C/C++偏向性能苛刻的場景逛艰,Java目前BAT三家web開發(fā)的主流語言,有很多開源框架和中間件來支撐高并發(fā)大流量的web架構(gòu)搭建檬果,PHP小網(wǎng)站快速開發(fā)瓮孙,只要你沒太多代碼潔癖只求快速上線有流量再說,PHP非常適合這種起步場景选脊,Python靈活快速的各種工具開發(fā)杭抠,python后面的開源包足夠多,語言本身也不重恳啥,依賴這些包和庫能快速產(chǎn)出工具或者web網(wǎng)站偏灿,obj-c/swift做蘋果app專用,JSCSS做web前端钝的。@楚中天

至少學(xué)6種程序語言翁垂。

其中包括一種支持類抽象的(Java和C++),一種支持函數(shù)抽象的(如Lisp或ML)硝桩,一種支持語義抽象的(Lisp)沿猜,一種支援聲明規(guī)范的(如Prolog或C++模板),還有一種支援協(xié)程的(Icon或Scheme)碗脊,另外一種支持并發(fā)的(Sisal)啼肩。@ Google 研究總監(jiān) Peter Norvig。

2015年2月編程語言排行榜,JS排名創(chuàng)歷史紀(jì)錄

JavaScript不斷走強(qiáng)祈坠。本月它超過了php害碾,現(xiàn)在的位置排名第六。另外赦拘,Objective-C的日子似乎已經(jīng)結(jié)束慌随。一年時(shí)間,Objective-C份額下降超過5%√赏現(xiàn)在排到第四的位置阁猜,在C++之后。Objective-C之前排在第三位的位置長達(dá)超過2.5年笋籽。

首先是C語言:這門語言應(yīng)該不用多少了蹦漠,很多程序員的入門語言都是這門,但是很少有人能學(xué)的精通的车海,C語言更偏向于底層,是面向過程的語言隘击,我目前正在研究操作系統(tǒng)的內(nèi)核結(jié)構(gòu)侍芝,很多情況下是要有C語言的匯編的功底的。所以C語言強(qiáng)烈建議掌握埋同。

其次是Java:Java應(yīng)該算是比較優(yōu)秀的面向?qū)ο蟮拈_發(fā)語言了州叠,所以,如果要想掌握面向?qū)ο蟮乃枷氲脑捫琢蓿瑢W(xué)習(xí)Java是一個(gè)非常不錯(cuò)的選擇咧栗,并且Java的資料也是非常之多。而且針對于Java的開源項(xiàng)目也是很多的虱肄。

接著是C++:這門就不用了致板,是C語言的擴(kuò)展版本,屬于面向?qū)ο蟮姆懂犛搅芏嗖僮魈峁┑膬?nèi)核也使用了C++進(jìn)行開發(fā)斟或,有必要掌握一下。

接著是Objective-C:如果要進(jìn)行IOS的開發(fā)的話集嵌,這門要掌握了萝挤,但這們也是以C語言為基礎(chǔ)的,所以題主可以看到C語言的強(qiáng)大了吧根欧。

接著是幾個(gè)腳本語言:PHP怜珍、Python、JavaScript凤粗、Perl酥泛、Ruby等,我認(rèn)為腳本語言還是要掌握一門的,比如Python揭璃、Perl還有Shell Code都是不錯(cuò)的選擇晚凿,畢竟有時(shí)候腳本還是非常方便的。@杜一

越多越好

語言其實(shí)是件非常重要的事情瘦馍,它很大程度上決定了個(gè)體的思考方式和群體的文化特征歼秽,首先,你是用語言在思考問題情组,它的表達(dá)能力和邏輯結(jié)構(gòu)燥筷,直接影響了對問題如何進(jìn)行抽象,其次院崇,你還需要用語言和他人進(jìn)行交流肆氓,擁有共同的文化背景和審美趣味的人,會(huì)用更少的詞匯底瓣,更短的時(shí)間谢揪,進(jìn)行更有效的溝通,這直接帶來了效率的提高捐凭,以及更優(yōu)雅合理的產(chǎn)出物拨扶。

我想簡短地描述我所用過的一些值得學(xué)習(xí)的語言,并給出對學(xué)習(xí)這門語言的推薦程度茁肠,1-3星患民,篇幅有限,會(huì)非常簡短垦梆,更多的介紹請自行查找匹颤。


以下按各語言誕生的時(shí)間排序:

-----? 2014.5.12 更新 PHP,Perl托猩,AWK ------

----- 2014.5.30 更新 Unix Shell ------

Lisp 1958印蓖,3星

Lisp是我最喜歡的語言,盡管它的誕生年代已經(jīng)相當(dāng)久遠(yuǎn)站刑,但它的特性遠(yuǎn)遠(yuǎn)超越了時(shí)代另伍,動(dòng)態(tài)類型,垃圾回收等等當(dāng)今已經(jīng)司空見慣的特性略去不談绞旅,最重要的是摆尝,它是第一門homoiconicity language,簡單說就是代碼的結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)保持一致因悲,這意味著堕汞,它擁有所有抽象可能性中最強(qiáng)大的一種抽象,即用代碼來生成和表現(xiàn)代碼晃琳,比如宏讯检,了解這件事情琐鲁,對學(xué)習(xí)編程,其實(shí)也就是學(xué)習(xí)如何抽象事物人灼,非常围段,非常地有幫助,其次投放,Lisp的列表結(jié)構(gòu)和完全函數(shù)式編程奈泪,讓理解和學(xué)習(xí)遞歸這種基本而重要的思考邏輯,變成了非常自然的事情灸芳,這是程序員必須要學(xué)習(xí)涝桅,并且要花相當(dāng)多時(shí)間學(xué)習(xí)的語言。

Smalltalk 1972烙样,3星

第一門真正的面向?qū)ο笳Z言冯遂,而且在今天,它對面向?qū)ο笏悸返拿枋鲒嘶瘢聪鬟f機(jī)制蛤肌,幾乎已經(jīng)得到了廣泛的認(rèn)可,所有后續(xù)的面向?qū)ο笳Z言批狱,如Java寻定,Ruby,Python精耐,都受到了直接的影響,還有大量的設(shè)計(jì)模式琅锻,比如眾所周知的卦停,用于設(shè)計(jì)用戶界面的MVC模式,都是從Smalltalk中誕生的恼蓬。而后面這些面向?qū)ο笳Z言惊完,都或多或少地對Smalltalk的設(shè)計(jì)進(jìn)行了一定的改動(dòng),想要真正理解面向?qū)ο蟠τ玻枰J(rèn)真學(xué)習(xí)一下Smalltalk小槐。

C 1972,3星

C語言不用多說了荷辕,因?yàn)樗蚒nix的綁定關(guān)系凿跳,使他成為了必須學(xué)習(xí)的語言,關(guān)于語言本身疮方,指針的概念和操作也對于了解計(jì)算機(jī)系統(tǒng)的實(shí)現(xiàn)相當(dāng)有幫助控嗜,而函數(shù)指針和宏,也賦予了C一定的抽象能力骡显,盡管大部分情況下疆栏,是對智力很嚴(yán)峻的考驗(yàn)曾掂。

Scheme? 1975,? 3星

Lisp的一種最簡化的方言,它是最適合入門Lisp壁顶,尤其相較繁雜的Common Lisp來說珠洗。

AWK 1977,1星

和C一樣若专,它也來自于Unix(AWK中的K就是 Unix創(chuàng)造者之一的Brian Kernighan)许蓖,而且本身就是個(gè)很強(qiáng)大的文本處理工具。不過富岳,語言自身相對簡單蛔糯,構(gòu)筑復(fù)雜程序時(shí)比較力不從心。它非常適合于和Sed一起窖式,進(jìn)行各式各樣快捷而強(qiáng)大的文本處理蚁飒,直到有了Perl。

Unix shell (Bourne shell/C shell)? 1977,? 3星

Shell一直是跟隨著操作系統(tǒng)誕生而成長的萝喘,但直到第七版Unix淮逻,Stephen Bourne編寫的Bourne shell(也許你更熟悉sh這個(gè)命令名),它才真正成為了完善的腳本編程語言阁簸,而之后編程奇才 Bill Joy(嗯爬早,他寫了那個(gè)我不喜歡的vi)開發(fā)的C shell(csh)則更勇于向前邁進(jìn)。時(shí)至今日启妹,Shell的一些語法特征從編程上來說筛严,稍顯老舊,但是饶米,它依然是最值得學(xué)習(xí)的語言之一桨啃。原因有二,首先檬输,Shell語言是非常好的粘合劑 照瘾,它有很多種方式,讓不同的程序之間丧慈,不同的進(jìn)程之間協(xié)同工作析命,這種從進(jìn)程角度組織復(fù)雜程序的思想(也是Unix哲學(xué)的核心,簡潔而單純地將一件事做好)是非常有意義的逃默,其次鹃愤,出于命令行(CLI)的要求,Shell程序天生就追求更短更簡化的寫法(有時(shí)不免有些晦澀)笑旺,這讓Hacker們感覺非常爽昼浦,直接啟發(fā)了日后Perl等Hacker專屬語言的誕生。所以筒主,我認(rèn)為Shell是程序員必須熟識(shí)的語言之一关噪。

C++ 1983鸟蟹,2星

C++也是用途非常廣泛,不用再多說的語言使兔,它的泛型是一種相對獨(dú)特的抽象建钥,值得學(xué)習(xí),而其他方面虐沥,如果你熟悉了C熊经,Lisp和Smalltalk,那么C++對你來說不會(huì)有太多需要花大力氣研究的東西欲险。

Common Lisp 1984镐依,2星

Lisp當(dāng)前最流行的實(shí)現(xiàn),非常龐大而復(fù)雜天试,除了Lisp本身的特性之外槐壳,還有面向?qū)ο蟮鹊仍谄渌Z言中引入的特性,但Common Lisp對這些特性的實(shí)現(xiàn)喜每,有賴于Lisp本身的強(qiáng)大务唐,而變得非常精巧和簡潔,比如多重繼承带兜。

Emacs Lisp? 1985,? 2星

Emacs中的Lisp方言枫笛,相較Common Lisp,功能和特性省略了太多刚照,在編寫復(fù)雜程序時(shí)刑巧,會(huì)相當(dāng)捉襟見肘,但是无畔,它依然是Lisp海诲,而且可能是我們工作中最常用到的Lisp方言。

Perl 1987檩互,2星

Perl也是我非常喜歡的語言,它誕生于Unix文化咨演,受Shell闸昨,Awk等語言影響極深,深深執(zhí)著于以行為單位對文本的操縱薄风,它的哲學(xué)實(shí)際上是非常受Hacker文化的影響饵较,強(qiáng)調(diào)用讓人驚訝的方式完成代碼。這在高手眼中酷的一塌糊涂遭赂,但在新手眼中則猶如天書循诉。隨著無數(shù)高手加入社區(qū),Perl也逐漸發(fā)展壯大成了能夠獨(dú)擋一面的泛用編程語言撇他,但盡管如此茄猫,即使到了Perl 6狈蚤,它也沒有丟掉骨子里那種崇尚酷炫,欣賞創(chuàng)造力的精神划纽,這也是我喜歡它的原因脆侮。時(shí)至今日,Perl的Hacker精神和創(chuàng)造力逐漸被Ruby所繼承勇劣,而用它寫實(shí)用性Unix腳本的人也轉(zhuǎn)向了Python靖避。但無論如何,如果想知道Hacker是怎樣思考比默,怎么做事情的幻捏,那么Perl和Perl社區(qū),實(shí)在可以說是非常好的選擇命咐。

Python 1991篡九,2星

非常流行的Python,可能最主要的意義就是Python之道侈百,即無比強(qiáng)調(diào)代碼的可讀性瓮下,以至于強(qiáng)制隨進(jìn)來控制代碼塊,“做一件事情只有一種顯而易見方法”的哲學(xué)钝域,我覺得Python是非常適合工程學(xué)的語言讽坏,比Java更好,更規(guī)整而又相對來說靈活例证,同時(shí)Python又足夠簡單路呜,因此,可以認(rèn)為Python是所有語言中最適合首先入門來接觸計(jì)算機(jī)科學(xué)的語言织咧,很多大學(xué)也都是這么做的胀葱。

Ruby 1995,3星

Ruby是除了Lisp之外我最喜歡的語言笙蒙,也是我現(xiàn)在做KnewOne最主要用到的工作語言抵屿,它的主要設(shè)計(jì)哲學(xué)是“一切為了讓編程更快樂”,因此捅位,Ruby繼承了Perl的Hacker精神轧葛,同時(shí)又相當(dāng)統(tǒng)一和優(yōu)雅,它強(qiáng)調(diào)發(fā)揮程序員的創(chuàng)造力艇搀,語義模糊而多樣尿扯,對同一個(gè)任務(wù),有多種不同的解決之道焰雕,這和上面Python的哲學(xué)背道而馳衷笋,也是我喜歡Ruby的原因。函數(shù)式編程矩屁,面向?qū)ο蟊僮冢烊耄∕ixin)爵赵,元編程(用代碼來生成代碼),種種不同的設(shè)計(jì)思維慢蜓,在Ruby中得到了很好的融合貫通亚再。不過,正因如此晨抡,在Ruby社區(qū)中氛悬,人們想要互相理解對方的設(shè)計(jì)思考過程,相比Python來說是要更費(fèi)力耘柱,對程序員要求更高的如捅,所以,Ruby并不適合做為學(xué)習(xí)編程的入門語言调煎,而更適合在你學(xué)習(xí)了很多編程語言镜遣,熟悉了編程之后,成為最長久(目前來看)的陪著你一起完成日常工作的伴侶士袄,因?yàn)槊繒r(shí)每刻悲关,Ruby都讓編程充滿愉悅,Code Ruby娄柳,Be Happy寓辱。

Java 1995,1星

Java可能是世界上最流行的語言赤拒,不過我對它持有非常強(qiáng)烈的偏見秫筏,我一直認(rèn)為這是一門由聰明的人設(shè)計(jì),用來控制一幫智力平庸的碼農(nóng)挎挖,讓他們不至于捅出什么簍子的語言这敬,基本上所有的設(shè)計(jì)特性,都是為了壓抑創(chuàng)造力蕉朵,讓程序員變成按部就班擰螺絲釘?shù)臋C(jī)器來考慮的崔涂。不過,Java擁有可能是所有語言中最強(qiáng)大的虛擬機(jī)平臺(tái)JVM始衅,在其上誕生了無數(shù)優(yōu)秀的軟件堪伍,為了JVM,Java還是值得學(xué)習(xí)一下的觅闽,不過這門語言也是實(shí)在太簡單了,假設(shè)一個(gè)人學(xué)習(xí)Lisp或C需要一個(gè)月涮俄,學(xué)習(xí)Python或Ruby或Perl需要一周蛉拙,那么學(xué)習(xí)Java,也許只需要一天就可以彻亲,因?yàn)榫驼Z言本身來說實(shí)在沒那么多可學(xué)的孕锄。

PHP 1995吮廉,0星

六七年前,在還不能自主選擇公司的技術(shù)框架的時(shí)候畸肆,我被迫用過兩三年的PHP做為主要的工作語言』侣現(xiàn)在,在接觸很多語言之后轴脐,想起PHP调卑,最主要的感覺就是拼湊,一種無原則的實(shí)用主義大咱,它在九十年代末期為web開發(fā)誕生恬涧,并非一開始就以泛用型編程語言為目標(biāo),在整個(gè)發(fā)展過程中語言的進(jìn)化相當(dāng)混亂碴巾,不斷從各種其他語言中拼貼特性溯捆。其實(shí),PHP在web開發(fā)領(lǐng)域相當(dāng)強(qiáng)大厦瓢,有很多不錯(cuò)的web框架及函數(shù)庫提揍,語言自己也內(nèi)置了不少很好的支持。但做為學(xué)習(xí)編程用的語言煮仇,它會(huì)非常劳跃,非常有害,我?guī)缀鯖]有見過一個(gè)PHP程序員有代碼潔癖的欺抗,語言自身的混亂售碳,造成了程序員表達(dá)上的混亂,久而久之绞呈,就形成了“能用就好贸人,實(shí)現(xiàn)功能就行”的習(xí)慣。這門語言做為糊口的工具還是可以的佃声,但遠(yuǎn)遠(yuǎn)談不上編程的美艺智,完全不推薦學(xué)習(xí)。@李路


編程語言語言的確就是工具

所謂掌握圾亏,你說了解語法算掌握十拣?語言之后的思想和設(shè)計(jì)思路?還有相關(guān)的各種工具志鹃?你說你會(huì)Java,是不是jvm,多線程夭问,spring,hadoop相關(guān)的工具都熟悉了曹铃?而且不同語言的design pattern還有區(qū)別缰趋,博學(xué)多門不如專精一門。此外,解決問題的能力秘血,對系統(tǒng)的了解才是更重要的東西味抖。

別忘了,除非競賽灰粮,程序員的價(jià)值還是體現(xiàn)在產(chǎn)品上仔涩。我不清楚SmallTalk具體是如何實(shí)現(xiàn)MVC的,但不妨礙我拿Java做一個(gè)完整的后臺(tái)粘舟。與其花太多時(shí)間在學(xué)習(xí)那么多語言上熔脂,不如做一個(gè)精通一套完整前后臺(tái)開發(fā)工具的全棧工程師。碰到設(shè)計(jì)問題能夠用最順手和方便的工具去解決蓖乘,當(dāng)一個(gè)攻城獅而不是程序猿锤悄,才是程序員的努力方向。

一句話總結(jié)嘉抒,從做好產(chǎn)品出發(fā)零聚,而不要糾結(jié)于語言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末些侍,一起剝皮案震驚了整個(gè)濱河市隶症,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岗宣,老刑警劉巖蚂会,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耗式,居然都是意外死亡胁住,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門刊咳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彪见,“玉大人,你說我怎么就攤上這事娱挨∮嘀福” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵跷坝,是天一觀的道長酵镜。 經(jīng)常有香客問我,道長柴钻,這世上最難降的妖魔是什么淮韭? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮贴届,結(jié)果婚禮上靠粪,老公的妹妹穿的比我還像新娘足丢。我一直安慰自己,他們只是感情好庇配,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绍些,像睡著了一般捞慌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柬批,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天啸澡,我揣著相機(jī)與錄音,去河邊找鬼氮帐。 笑死嗅虏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的上沐。 我是一名探鬼主播皮服,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼参咙!你這毒婦竟也來了龄广?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蕴侧,失蹤者是張志新(化名)和其女友劉穎择同,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體净宵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敲才,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了择葡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紧武。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刁岸,靈堂內(nèi)的尸體忽然破棺而出脏里,到底是詐尸還是另有隱情,我是刑警寧澤虹曙,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布迫横,位于F島的核電站,受9級特大地震影響酝碳,放射性物質(zhì)發(fā)生泄漏矾踱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一疏哗、第九天 我趴在偏房一處隱蔽的房頂上張望呛讲。 院中可真熱鬧,春花似錦、人聲如沸贝搁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雷逆。三九已至弦讽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膀哲,已是汗流浹背往产。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留某宪,地道東北人仿村。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像兴喂,于是被迫代替她去往敵國和親蔼囊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容