一名優秀的多語言程序員,有多“搶手”?

全文共2600字,預計學習時長9分鐘


一名優秀的多語言程序員,有多“搶手”?

圖源:unsplash


“編程小忍者”、“搖滾巨星開發者”、“編程高手”、“開源專家”、“多處理大亨”、“服務器大師”……一些奇怪術語的狂熱分子這樣稱呼多語言程序員。


我對多語言程序員的定義有所不同。韋氏詞典將“多語種”定義為語言或術語的混合或混淆。 聽起來好像帶有警告意味對嗎?


通常,多語種編程這一術語被認為是尼爾·福特在2006年的一篇博客文章中提出的。2010年,迪安·萬普勒在演講中進一步詳細解釋了福特的論文,他在其中重申了不同語言在不同領域的優勢,並且程序員應使用最適合的語言工具來完成工作。


多語言編程的思想起源於2000年代中期,是在身處Java生態系統的程序員群體中萌發的。


那時Java 語言已停滯不前,但Java虛擬機(JVM )是蓬勃發展的“非Java”語言社區的基礎。2003年的Groovy、2004年的Scala 、和2007年的Clojure都是很好的例子。


一名優秀的多語言程序員,有多“搶手”?

圖源:medium


這些語言都提供了Java所沒有的功能,高階函數是其中最明顯的功能之一。有了這些新功能的幫助,程序員顯然可以輕鬆做到這些:使用Groovy處理可擴展標記語言(XML),或使用Scala處理嵌套結構,等等。


10多年過去了,多語言程序員的概念依舊方興未艾。


具體而言,多語言程序員至少要精通三種不同的編程語言。在理想情況下,混合使用語言可以提供強度、深度和多樣性,關鍵在於“截然不同”。


從技術角度來說,通曉Java、C++和ABAP的人可能會被視為多語言程序員。但是,由於上述三種語言都具有相似的、面向對象的概念和結構,因此就算學了這三種語言也沒什麼用。


正如加利福尼亞大學爾灣分校信息學的高級講師RichardPattis說得那樣:“編程語言不僅是用於不同工作的工具,也是一項能夠塑造你對於編程觀念的技術。學習類似的編程語言,可能不會對你思想的進步帶來多大貢獻。”


為了拓寬思路,Pattis建議掌握多種編程語言的程序員要從不同的語言範式中學習,無論是面向對象的語言(如C++ /Java)、函數式語言(如ML和Haskell)、腳本語言(如Lisp和Python)、基於邏輯的語言(如Prolog)或底層語言(如C語言、Java虛擬機或機器語言)。關鍵不是要流利使用語言,而是掌握方法論,以全新方式處理問題。


優秀程序員不僅會編寫代碼,而且還會不斷學習關鍵概念,進而幫助他們以新方式解決問題,並找到最有效的解決方案。


成為一名多語言程序員在筆者看來益處良多以下這些就足以吸引人。

一名優秀的多語言程序員,有多“搶手”?

讓你在職場中更搶手


精通多種編程語言,不僅為你的簡歷增光添彩,也能表現出你很靈活、適應能力強,能夠使用最佳工具來完成工作的能力。


一名優秀的多語言程序員,有多“搶手”?

圖源:unsplash


它給了你更多機會,也會讓你從容面對行業衰退。有能力探索多種編程範式,你會感到快樂和高產,這將反映在你的編碼風格中。


通過利用業內所有的最佳方案,你將開發出更好的方法來編寫代碼。多語言程序員能夠嘗試不同的句法,瞭解不同的社區——對於任何程序員而言,這種不斷的探索都會是他們能經歷的最好的體驗之一。


掌握多語言還有助於你開展自己的業務。當客戶找到你,並需要你的專業知識來解決他們的問題時,你的“工具庫”中有更多工具可選,並且可以為他們帶來最大的價值。


一名優秀的多語言程序員,有多“搶手”?

成為最會解決問題的人,而不僅是程序員


如何最簡潔地定義程序員的工作?那就是“解決問題”。優秀的程序員不能只編寫出色的代碼,還需使用手頭的最佳工具來解決業務問題。


你也許不同意;“嘿,我是Java方面的佼佼者,我知道如何使用Java解決所有問題”。如果這樣想,你可能患有“錘子和釘子”綜合症。


一名優秀的多語言程序員,有多“搶手”?

圖源:unsplash


該綜合症表現為,如果你有把錘子,那麼每個問題對你來說就像一顆釘子。在這種情況下,你只有一把錘子(即Java),最終,你的思想將被侷限於,不管是什麼問題都要找出用Java解決的最佳方法。換種說法,如果Java無法解決你的問題,你可能會陷入不知所措的困境。


現實中的確會遇到以前從未解決過的問題,你可能的方案很可能並不夠高效,但這是你唯一瞭解的辦法了。


學習一門新語言開闊瞭解決問題的思路。你的思維將擺脫特定語言的束縛,並開始從不同角度看待問題。這將顯著提高你使用當前語言的能力,你可能會發現自己冒出了更有效的解決問題的新想法。


一名優秀的多語言程序員,有多“搶手”?

進入學習模式


當你開始學習一門新的編程語言時會發生什麼呢?


你會認真鑽研書籍、消化示例代碼、並嘗試多樣的示例。你會發現一些可以幫助你正確學習語言的論壇、當地團體、同事或其他任何在使用新語言方面經驗更為豐富的人。這些人可以在學習過程中幫助指導思考過程。你會開始活躍在社區論壇中,並開始定期提問。


簡而言之,你將立即進入學習模式。這就像在健身房鍛鍊。最初,肌肉痠痛不堪,但一段時間後,肌肉適應了鍛鍊週期,便不再像之前一樣痠痛。且肌肉生長的同時,耐力和力量也增加了。


一名優秀的多語言程序員,有多“搶手”?

圖源:unsplash


學習對你的大腦也有同樣的作用。大腦一旦適應了新概念學習曲線,如一門新編程語言,最終會使大腦更加敏捷,適應能力更強。這將幫助你在日常工作中更有效地完成任務,並更輕鬆地適應日常使用的各種技術之間的細微差別。


例如,一位掌握如ABAP這樣的業務語言的Java開發人員,可以很輕鬆地將共享對象概念與業務術語建立聯繫,併發揮其用途。


最終,你的學習能力得到了增強。隨著時間的流逝,學習新事物對你而言,將變得越來越容易、也越來越快。


一名優秀的多語言程序員,有多“搶手”?

注意事項


儘管學習多種編程語言有許多益處,但其帶來的挑戰也不少。


在《JavaScript:語言精粹》一書中,道格拉斯·克羅克福德討論了JavaScript的優缺點。每種語言都有其自身的一系列挑戰,如果頻繁更換編程語言的學習,卻不花足夠時間鑽研,你可能最終會“萬事通,萬事松”。


一名優秀的多語言程序員,有多“搶手”?

圖源:unsplash


如果不能達到精通新語言的程度,那麼多語言能力很可能會成為你的致命弱點。不斷地學習和適應新語言與技術的過程也可能使開發人員疲於奔命。同步保持所有技術的學習進度是很難的,且你很可能會發現自己在學習道路上四處奔波,結果卻一無所獲。


關鍵是要學習難度適中、專注於自己能夠消化的知識,並在達到學習極限後及時收手。一旦選擇好完成工作的最佳工具,並獲得最佳表現後,可停止學習並專心鞏固習得。凡事應有度,切莫過頭。


恰如艾倫·佩利(Alan Perlis)所說:“如果一種語言不能影響你對編程的思考方式,你就用不著學它了。”


請記住,智慧在於理解學習新語言的成本,從中獲得的收益應始終大於成本。


一名優秀的多語言程序員,有多“搶手”?

留言點贊關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範


分享到:


相關文章: