優秀的開發者為什麼要學習研究新的程式語言?
新的語言,代表著對事物更新的理解和更好的闡述方式。
跟我交流較多的朋友們會知道,我是很早就堅持研發人員要多學會幾套程式語言的人,特別是新的開發語言。有段時間,我甚至都在準備嘗試自己設計一個有應用場景的程式語言。計算機語言是人設計的,瞭解了核心的原理,真的沒那麼困難。當然,要做的出色,有很多使用者,那就是另外一回事了。
基於C/C++語言的開發我做了10年以上。後來我逐漸的把應用需求分解到其它語言中去,PHP/Python/JavaScript(前端/Node.js),我都花了不少功夫研究。我在開發過程中能做到各種語言隨時切換,得心應手,沒有任何障礙。並且,仰仗著過去在C/C++時代打下的良好基礎,我可以在原始碼級研究並理解程式語言。特別是用C寫的各種指令碼語言,只要覺得手冊沒寫清楚的,我就直奔原始碼看個明白。這是開源時代給多語言開發者帶來的巨大優勢。
最近,我在研究Go語言。其它幾種感興趣的程式語言,我也有計劃鑽研一下。
為什麼我對新的計算機語言,這麼樂此不疲?很簡單,時代變革,與時俱進。參考:人要與時俱進,順應時代潮流
對當今的IT領域來說,單一語言包打天下的時間已經一去不返。未來的趨勢是,各種語言站住自己的核心應用地盤,相互借鑑、相互競爭,不斷擴充、侵蝕到其它語言的應用領域,逐漸發現更好的表達模式和方法。
新的語言,代表著對事物更新的理解和更好的闡述方式。
語言是人類思維的工具。人類之間的語言,與人類對計算機講的語言,實質都是要表達出思想。人依靠程式語言來指揮計算機執行。不同的語言,代表了對問題領域、對計算機系統不同的理解方式。
催生這些語言並促進其發展的,是背後的環境變革。更新的語言,常常是吸收了上一代語言的優點,再嘗試使用新的思想模型、新的方法去解決各種已知、未知的問題。有時候使用者會發現它很有效,很方便,這個語言就容易在一個問題域站穩腳跟了。
我們的開發環境、應用環境,一直在變化。但是人類往往對緩慢的變革熟視無睹,習慣的延續原來的假設和出發點,這就給創新留下了口子,經常可以從這裡獲取突破性進展。
比如,單機時代,CPU效能弱,儲存器速度、容量都很低。那麼在這個條件下,作出的各種軟體開發決策,都會帶上這個預設環境的影響。以至於後面的硬體突飛猛進,原本的假設不成立了,它的影響可能還在延續。原來的計算機網路物理層面不夠可靠,所以網路協議設計了很多校驗機制,但是後面的光纖時代,這些校驗就成了成本和負擔,檢驗並不是越多越好。參考:重要的技術創新節點容易發生在什麼地方?
從單機轉向網路應用,再做移動裝置開發,以及和網路的融合,以後再有各種智慧硬體裝置、萬物互聯,不同的應用發展,帶來了不同的需求和環境。而原本的程式語言,設計者考慮的平衡點可能就不合適了,需要新語言替代它,進行革新。
所謂的“平衡點”是說,設計決策裡面對相互衝突的特性,作出的妥協點在哪裡。你是要編譯式的靜態語言,還是動態語言解釋型的?重點是程式設計靈活還是執行速度?考慮多少安全問題?要不要垃圾回收?用什麼機制?比如CPU從單核進化成多核,如何在語言設計上充分利用硬體的能力?
如此多的應用需求變化,對各種不同設計思想的計算機語言的產生必然是催化劑。單一語言解決所有問題域,是不可能的了。強行上馬,只能讓開發者痛苦,大幅降低效率和質量水準。現在還有誰用C++寫Web應用?
慶幸的是,在計算機系統架構未得到根本變革之前,絕大部分程式語言都有很相近的語法結構,弄懂學會並不難。計算機演算法也是共通的。但是考慮到它建立並依賴的生態環境、設計思想、開發模式和習慣用法,應用自如還是需要耗費很多精力的。
這裡連結幾篇關於學習能力培養、學習方法的原創文章,供大家參考:
IT領域,學無止境,各位繼續努力吧!
相關文章
- 為什麼要學習一門新的程式語言?
- 何為程式語言?為什麼要學C語言?C語言
- 為什麼要學習Go語言呢?Go
- 為什麼要學習和使用C語言?C語言
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 為什麼要學習Python語言?Python入門Python
- 學習Python語言為什麼要參加培訓?Python
- 為什麼要學習Python語言?哪些人適合學習?Python
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計
- Python優勢是什麼?為什麼要學習?Python
- 中文程式語言——易語言,到底是用來幹什麼的?易語言值得學習嗎?易語言的優勢有什麼?
- 成為優秀Angular開發者所需要學習的19件事Angular
- 用於數學的 10 個優秀程式語言
- 進入IT行業,為什麼要選擇學習Python語言?行業Python
- 到底該學習什麼程式語言
- 是什麼讓C#成為最值得學習的程式語言
- Python語言具有哪些優秀特徵?為什麼受歡迎?Python特徵
- 為什麼需要更多的程式語言
- 為什麼學習web前端開發,必須要掌握好JavaScript這門程式語言?Web前端JavaScript
- 為什麼要學習 RustRust
- 為什麼要學習 Julia
- 為什麼要學習 Vim?
- Google 大佬們為什麼要開發 Go 這門新語言?Go
- 松本行弘:我為什麼要開發新語言Streem(上)
- 為什麼要學習Netty?Netty
- 為什麼我要學習“機器學習”?機器學習
- 為什麼會有這麼多的程式語言?
- Linux學習之Shell指令碼語言的優勢是什麼?Linux指令碼
- 什麼是NLP,NLP主要有什麼用,為什麼要學自然語言處理?自然語言處理
- 為什麼自制指令碼語言是程式語言的最高境界?指令碼
- 為什麼 Laravel 這麼優秀Laravel
- 成為優秀程式設計師的最佳學習方式程式設計師
- 學習遊戲要學習程式語言嗎?十大主流程式語言解析遊戲
- 以dart語言為例說說如何學習一門新的語言Dart
- 為什麼我們需要一門新語言——Go語言Go
- 為什麼優秀的程式設計師喜歡命令列?程式設計師命令列
- 學習C++程式語言的最大難度是什麼(轉)C++