你真的需要了解多種編程語(yǔ)言嗎?
我在謀殺自己的職業(yè)生涯。沒錯(cuò),很多人都這樣說(shuō)我。
我的同事剛剛得知我即將離開公司的消息。大多數(shù)表示理解。但讓他們困惑的是,我現(xiàn)在的公司是一家Windows商店,用C#和.net編寫代碼。然 而,我要去擔(dān)任的是Linux環(huán)境下主要語(yǔ)言為Java的開發(fā)工作。因?yàn)檎Z(yǔ)言的改變,他們覺得我拋棄了自己的優(yōu)勢(shì),拋棄了自己這么多年的工作經(jīng)驗(yàn),正在自 尋死路。很多人都秉持這樣的觀點(diǎn)。
編程語(yǔ)言很多很多,數(shù)以百計(jì)。有些很常見,如Java,C#,PHP,Ruby,Python和JavaScript,而有些則比較邊緣化或是新出 現(xiàn)的,如awk,Go,Julia,Rust。選擇如此之多,我們又該關(guān)注哪個(gè)呢?于是,我開始思考這個(gè)問題——我們真的需要知道多種語(yǔ)言嗎?
你會(huì)想要學(xué)習(xí)不止一種語(yǔ)言的9個(gè)原因
-
能用多種方式來(lái)解決同樣的問題。懂得不同的語(yǔ)言意味著擁有更多的選擇。正如古語(yǔ)有云,當(dāng)你只有錘子時(shí),你看什么都像是釘子。
-
更有競(jìng)爭(zhēng)力,擁有更多的就業(yè)機(jī)會(huì)。學(xué)習(xí)第二門編程語(yǔ)言,有時(shí)能增加一倍你可勝任職位的數(shù)量。不過(guò),這取決于你學(xué)習(xí)的語(yǔ)言。但是無(wú)論怎么說(shuō),這都能為你增加就業(yè)機(jī)會(huì)。
-
表明你能夠?qū)W習(xí)新的語(yǔ)言。你潛在雇主能夠從中了解到你不是死板的程序員。
-
一個(gè)很有趣的過(guò)程。學(xué)習(xí)新的東西可以充實(shí)你的大腦,幫助你在一個(gè)新領(lǐng)域中成長(zhǎng)和提高。
-
緊跟當(dāng)前的技術(shù)發(fā)展趨勢(shì)。知道哪個(gè)行業(yè)在獨(dú)領(lǐng)風(fēng)騷,就可以永遠(yuǎn)站在潮流的***。你的技能便不會(huì)過(guò)時(shí)。
-
讓你知道為什么你應(yīng)該喜歡你的“主”語(yǔ)言,或者讓你知道如何讓事情變得更好。有時(shí)候,你只是不知道你的主語(yǔ)言有多好,直到你嘗試新的東西。你會(huì)贊同于你喜歡的語(yǔ)言的概念。與此同時(shí),新的語(yǔ)言可能會(huì)有一些讓你很驚訝的某些新功能。
-
有助于成為一個(gè)更好的計(jì)算機(jī)程序員。學(xué)習(xí)新的語(yǔ)言可以幫助你提高能在所有語(yǔ)言之間轉(zhuǎn)移的技能,例如,設(shè)計(jì)和架構(gòu)算法,或處理不同的數(shù)據(jù)結(jié)構(gòu)。
-
針對(duì)工作使用***的工具。尺有所短寸有所長(zhǎng)——有的語(yǔ)言更善于處理某些特定方面的事情。知道更多的語(yǔ)言就可以為工作選擇更好的工具。
-
表明你是一個(gè)快速的學(xué)習(xí)者。通過(guò)學(xué)習(xí)第二門編程語(yǔ)言可以表現(xiàn)你學(xué)得很快。
你不想學(xué)習(xí)更多語(yǔ)言的9個(gè)原因
-
一種語(yǔ)言更容易掌握。專心致志和一心工作往往才是通往精熟通達(dá)的道路。如果你不斷地在多種語(yǔ)言之間進(jìn)行切換,那么真正掌握一門語(yǔ)言的概率就會(huì)降低。只涉及一種語(yǔ)言可以幫助你集中注意力。
-
大多數(shù)人只需要一份工作,大部分公司只使用一種語(yǔ)言。在你已經(jīng)被錄用后,知道多種語(yǔ)言不一定會(huì)幫到你。如果你知道該項(xiàng)目的語(yǔ)言,就ok了。
-
總有需要學(xué)習(xí)的地方:這意味著你可以深入研究你掌握的這一種語(yǔ)言。
-
專家在大多數(shù)情況下可以要求較高的薪酬,因?yàn)槿藗冊(cè)敢庵Ц督o專家更多的錢。John Sonmez在他的視頻“I’m Not Sure I Want To Be A Specialist”中,談到了為什么成為一個(gè)多面手并不總是***的主意。
-
即使只知道只有一種語(yǔ)言,仍然可以被認(rèn)為是一個(gè)偉大的開發(fā)者。是否是偉大的開發(fā)者與你知道多少種語(yǔ)言無(wú)關(guān)。 關(guān)鍵在于你構(gòu)建的內(nèi)容。因?yàn)橹簧婕耙环N語(yǔ)言,所以你可以花更多的時(shí)間來(lái)構(gòu)建。
-
你只需要學(xué)習(xí)有限的軟件開發(fā)工具。大多數(shù)語(yǔ)言只有為數(shù)不多的幾個(gè)工具。切換語(yǔ)言通常也意味著要切換工具。只了解一種語(yǔ)言,你就可以更快地掌握工具。這可以幫助你提高工作效率。
-
更易于定位自己的市場(chǎng)。因?yàn)橹涣私庖环N語(yǔ)言,基本上你只會(huì)朝這個(gè)方向安頓下來(lái)(即使不是出于自己的選擇)。
-
任意一種語(yǔ)言都可以解決大多數(shù)的軟件問題。如果制作東西是你的主要目標(biāo),那么知道更多的語(yǔ)言并不一定對(duì)你有幫助。
-
深入理解一件事比表面了解10件事要好。
這并非是一個(gè)非黑即白的問題。和其他問題一樣,***的解決辦法是取中間值:總會(huì)有一個(gè)灰色地帶。如果你是一個(gè)初學(xué)者,那么光學(xué)一種語(yǔ)言,然后用它開發(fā)個(gè)十幾個(gè)項(xiàng)目,明顯更容易。但在那之后,我建議你成為一個(gè)T形的軟件開發(fā)人員。
什么是T形的軟件開發(fā)人員?
所謂T形的軟件開發(fā)人員在某一個(gè)特定的區(qū)域擁有很深的造詣,而且是一種語(yǔ)言的專家,這就是T字母中非常堅(jiān)實(shí)的豎直線,而T的水平線則代表了在此基礎(chǔ)上還應(yīng)該繼續(xù)更廣泛地學(xué)習(xí)其他技能。
那么,這與軟件開發(fā),更具體地說(shuō),是學(xué)習(xí)編程語(yǔ)言有什么關(guān)系呢?我的建議精通一種語(yǔ)言。 這種語(yǔ)言將成為你解決大多數(shù)問題的左膀右臂。你應(yīng)該盡你所能掌握這門語(yǔ)言。然后你才可以學(xué)習(xí)最適合工作的第二種語(yǔ)言或技能??梢蚤喿x我先前寫的《 Finding What To Learn Next 》這個(gè)帖子。
T形軟件開發(fā)人員不光精通于某一領(lǐng)域,還是一個(gè)多面手。
在成為T形開發(fā)者的歷程中,你不但能享受成為某一領(lǐng)域?qū)<业暮锰帲€能因了解多種語(yǔ)言而增加靈活性和適應(yīng)性。
你應(yīng)該選擇掌握什么樣的編程語(yǔ)言?
看到這里,很多人或許就要問了,那么我們應(yīng)該選擇學(xué)習(xí)哪種編程語(yǔ)言呢。亦或者,你才剛剛步入編程這個(gè)時(shí)間,你想知道你應(yīng)該先學(xué)習(xí)什么語(yǔ)言。對(duì)于主要 語(yǔ)言,我會(huì)選擇那些已經(jīng)存在了一段時(shí)間的語(yǔ)言,而不是新出來(lái)的。語(yǔ)言應(yīng)為多個(gè)行業(yè)使用,并且有一個(gè)堅(jiān)實(shí)的社區(qū)基礎(chǔ),擁有大量的開發(fā)工具。 一些符合這些標(biāo) 準(zhǔn)的語(yǔ)言是:Java,C#,.NET,Ruby,Python和Swift。
軟件排行榜基于這些標(biāo)準(zhǔn)持續(xù)跟蹤軟件語(yǔ)言的人氣指數(shù)。你可以點(diǎn)擊這里查看完整的編程語(yǔ)言列表。指數(shù)每月更新,前20名中的大多數(shù)語(yǔ)言都是不錯(cuò)的選 擇。那么10年之后,這些語(yǔ)言還會(huì)依然名列前茅嗎?我也不知道。不過(guò)至少在未來(lái)4年內(nèi)是準(zhǔn)的,我想,4年時(shí)間應(yīng)該已經(jīng)足夠你從現(xiàn)在開始開發(fā)無(wú)論什么項(xiàng)目 了。
是否需要了解更多的語(yǔ)言取決于你的目標(biāo)
想開始新的業(yè)余項(xiàng)目或業(yè)務(wù)?你可能只需知道一種語(yǔ)言。
想換行業(yè)或駕馭技術(shù)發(fā)展趨勢(shì)?你可能需要知道不止一種語(yǔ)言。
想在企業(yè)環(huán)境中工作?你可能只需要知道一種語(yǔ)言。
想工作在前沿項(xiàng)目?你可能需要知道不止一種語(yǔ)言,因?yàn)槌绷骺偸窃谧兓?/p>
說(shuō)實(shí)話,關(guān)于是否需要了解更多的語(yǔ)言,其實(shí)并沒有絕對(duì)正確或絕對(duì)錯(cuò)誤的答案。***的決策結(jié)果取決于你。
你知道多少種語(yǔ)言?你的專業(yè)領(lǐng)域是什么,你如何擴(kuò)展它?歡迎分享。
譯文鏈接:http://www.codeceo.com/article/do-you-need-more-language.html
英文原文:Do You Need To Know More Than One Language?





























