優秀的開發者為什麼要學習研究新的程式語言?

威靈頓發表於2018-03-05

新的語言,代表著對事物更新的理解和更好的闡述方式。

enter image description here

跟我交流較多的朋友們會知道,我是很早就堅持研發人員要多學會幾套程式語言的人,特別是新的開發語言。有段時間,我甚至都在準備嘗試自己設計一個有應用場景的程式語言。計算機語言是人設計的,瞭解了核心的原理,真的沒那麼困難。當然,要做的出色,有很多使用者,那就是另外一回事了。

基於C/C++語言的開發我做了10年以上。後來我逐漸的把應用需求分解到其它語言中去,PHP/Python/JavaScript(前端/Node.js),我都花了不少功夫研究。我在開發過程中能做到各種語言隨時切換,得心應手,沒有任何障礙。並且,仰仗著過去在C/C++時代打下的良好基礎,我可以在原始碼級研究並理解程式語言。特別是用C寫的各種指令碼語言,只要覺得手冊沒寫清楚的,我就直奔原始碼看個明白。這是開源時代給多語言開發者帶來的巨大優勢。

最近,我在研究Go語言。其它幾種感興趣的程式語言,我也有計劃鑽研一下。

為什麼我對新的計算機語言,這麼樂此不疲?很簡單,時代變革,與時俱進。參考:人要與時俱進,順應時代潮流

對當今的IT領域來說,單一語言包打天下的時間已經一去不返。未來的趨勢是,各種語言站住自己的核心應用地盤,相互借鑑、相互競爭,不斷擴充、侵蝕到其它語言的應用領域,逐漸發現更好的表達模式和方法。

新的語言,代表著對事物更新的理解和更好的闡述方式。

語言是人類思維的工具。人類之間的語言,與人類對計算機講的語言,實質都是要表達出思想。人依靠程式語言來指揮計算機執行。不同的語言,代表了對問題領域、對計算機系統不同的理解方式。

催生這些語言並促進其發展的,是背後的環境變革。更新的語言,常常是吸收了上一代語言的優點,再嘗試使用新的思想模型、新的方法去解決各種已知、未知的問題。有時候使用者會發現它很有效,很方便,這個語言就容易在一個問題域站穩腳跟了。

我們的開發環境、應用環境,一直在變化。但是人類往往對緩慢的變革熟視無睹,習慣的延續原來的假設和出發點,這就給創新留下了口子,經常可以從這裡獲取突破性進展。

比如,單機時代,CPU效能弱,儲存器速度、容量都很低。那麼在這個條件下,作出的各種軟體開發決策,都會帶上這個預設環境的影響。以至於後面的硬體突飛猛進,原本的假設不成立了,它的影響可能還在延續。原來的計算機網路物理層面不夠可靠,所以網路協議設計了很多校驗機制,但是後面的光纖時代,這些校驗就成了成本和負擔,檢驗並不是越多越好。參考:重要的技術創新節點容易發生在什麼地方?

從單機轉向網路應用,再做移動裝置開發,以及和網路的融合,以後再有各種智慧硬體裝置、萬物互聯,不同的應用發展,帶來了不同的需求和環境。而原本的程式語言,設計者考慮的平衡點可能就不合適了,需要新語言替代它,進行革新。

所謂的“平衡點”是說,設計決策裡面對相互衝突的特性,作出的妥協點在哪裡。你是要編譯式的靜態語言,還是動態語言解釋型的?重點是程式設計靈活還是執行速度?考慮多少安全問題?要不要垃圾回收?用什麼機制?比如CPU從單核進化成多核,如何在語言設計上充分利用硬體的能力?

如此多的應用需求變化,對各種不同設計思想的計算機語言的產生必然是催化劑。單一語言解決所有問題域,是不可能的了。強行上馬,只能讓開發者痛苦,大幅降低效率和質量水準。現在還有誰用C++寫Web應用?

慶幸的是,在計算機系統架構未得到根本變革之前,絕大部分程式語言都有很相近的語法結構,弄懂學會並不難。計算機演算法也是共通的。但是考慮到它建立並依賴的生態環境、設計思想、開發模式和習慣用法,應用自如還是需要耗費很多精力的。

這裡連結幾篇關於學習能力培養、學習方法的原創文章,供大家參考:

學得快,記得牢,花的少 – 請儘快開發你的大腦

職場人的學習方法

IT人永遠不老,老程式設計師價值何在?

IT領域,學無止境,各位繼續努力吧!

作者部落格

相關文章