天天看點

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

點選關注 異步圖書,置頂公衆号

每天與你分享 IT好書 技術幹貨 職場知識

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<a href="https://acejoy.com/2016/08/10/%E5%AD%A6%E5%BE%97%E5%BF%AB%EF%BC%8C%E8%AE%B0%E5%BE%97%E7%89%A2%EF%BC%8C%E8%8A%B1%E7%9A%84%E5%B0%91-%E8%AF%B7%E5%B0%BD%E5%BF%AB%E5%BC%80%E5%8F%91%E4%BD%A0%E7%9A%84%E5%A4%A7%E8%84%91/" target="_blank">學得快,記得牢,花的少 – 請盡快開發你的大腦</a>

<a href="http://www.epubit.com/selfpublish/articleDetail?id=C7E3EF9388600001141E75FC11BD16A0" target="_blank">職場人的學習方法</a>

<a href="http://www.epubit.com/selfpublish/articleDetail?id=C7E3EF96DCE0000192FE1B1CF8E0CD90" target="_blank">IT人永遠不老,老程式員價值何在?</a>

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

點選下方閱讀原文,檢視更多内容

<a href="https://mp.weixin.qq.com/s?__biz=MzA3NTIzMzIxNQ==&amp;mid=2652796779&amp;idx=2&amp;sn=0e3fe3071ead195c0592b4b2c843e4cd&amp;chksm=849975bbb3eefcad5cefd98dababf844609a7d61aedd41bb49beae331c6518ec2cb51881ebce&amp;mpshare=1&amp;scene=1&amp;srcid=0312RKLnuzkLtdAihkw9kI5b#%23">閱讀原文</a>

繼續閱讀