優(yōu)秀的開發(fā)者為什么要學(xué)習(xí)研究新的編程語(yǔ)言?
新的語(yǔ)言,代表著對(duì)事物更新的理解和更好的闡述方式。

跟我交流較多的朋友們會(huì)知道,我是很早就堅(jiān)持研發(fā)人員要多學(xué)會(huì)幾套編程語(yǔ)言的人,特別是新的開發(fā)語(yǔ)言。有段時(shí)間,我甚至都在準(zhǔn)備嘗試自己設(shè)計(jì)一個(gè)有應(yīng)用場(chǎng)景的編程語(yǔ)言。計(jì)算機(jī)語(yǔ)言是人設(shè)計(jì)的,了解了核心的原理,真的沒那么困難。當(dāng)然,要做的出色,有很多用戶,那就是另外一回事了。
基于C/C++語(yǔ)言的開發(fā)我做了10年以上。后來(lái)我逐漸的把應(yīng)用需求分解到其它語(yǔ)言中去,PHP/Python/JavaScript(前端/Node.js),我都花了不少功夫研究。我在開發(fā)過(guò)程中能做到各種語(yǔ)言隨時(shí)切換,得心應(yīng)手,沒有任何障礙。并且,仰仗著過(guò)去在C/C++時(shí)代打下的良好基礎(chǔ),我可以在源碼級(jí)研究并理解編程語(yǔ)言。特別是用C寫的各種腳本語(yǔ)言,只要覺得手冊(cè)沒寫清楚的,我就直奔源代碼看個(gè)明白。這是開源時(shí)代給多語(yǔ)言開發(fā)者帶來(lái)的巨大優(yōu)勢(shì)。
最近,我在研究Go語(yǔ)言。其它幾種感興趣的編程語(yǔ)言,我也有計(jì)劃鉆研一下。
為什么我對(duì)新的計(jì)算機(jī)語(yǔ)言,這么樂此不疲?很簡(jiǎn)單,時(shí)代變革,與時(shí)俱進(jìn)。參考:人要與時(shí)俱進(jìn),順應(yīng)時(shí)代潮流
對(duì)當(dāng)今的IT領(lǐng)域來(lái)說(shuō),單一語(yǔ)言包打天下的時(shí)間已經(jīng)一去不返。未來(lái)的趨勢(shì)是,各種語(yǔ)言站住自己的核心應(yīng)用地盤,相互借鑒、相互競(jìng)爭(zhēng),不斷拓展、侵蝕到其它語(yǔ)言的應(yīng)用領(lǐng)域,逐漸發(fā)現(xiàn)更好的表達(dá)模式和方法。
新的語(yǔ)言,代表著對(duì)事物更新的理解和更好的闡述方式。
語(yǔ)言是人類思維的工具。人類之間的語(yǔ)言,與人類對(duì)計(jì)算機(jī)講的語(yǔ)言,實(shí)質(zhì)都是要表達(dá)出思想。人依靠編程語(yǔ)言來(lái)指揮計(jì)算機(jī)運(yùn)行。不同的語(yǔ)言,代表了對(duì)問題領(lǐng)域、對(duì)計(jì)算機(jī)系統(tǒng)不同的理解方式。
催生這些語(yǔ)言并促進(jìn)其發(fā)展的,是背后的環(huán)境變革。更新的語(yǔ)言,常常是吸收了上一代語(yǔ)言的優(yōu)點(diǎn),再嘗試使用新的思想模型、新的方法去解決各種已知、未知的問題。有時(shí)候使用者會(huì)發(fā)現(xiàn)它很有效,很方便,這個(gè)語(yǔ)言就容易在一個(gè)問題域站穩(wěn)腳跟了。
我們的開發(fā)環(huán)境、應(yīng)用環(huán)境,一直在變化。但是人類往往對(duì)緩慢的變革熟視無(wú)睹,習(xí)慣的延續(xù)原來(lái)的假設(shè)和出發(fā)點(diǎn),這就給創(chuàng)新留下了口子,經(jīng)??梢詮倪@里獲取突破性進(jìn)展。
比如,單機(jī)時(shí)代,CPU性能弱,存儲(chǔ)器速度、容量都很低。那么在這個(gè)條件下,作出的各種軟件開發(fā)決策,都會(huì)帶上這個(gè)默認(rèn)環(huán)境的影響。以至于后面的硬件突飛猛進(jìn),原本的假設(shè)不成立了,它的影響可能還在延續(xù)。原來(lái)的計(jì)算機(jī)網(wǎng)絡(luò)物理層面不夠可靠,所以網(wǎng)絡(luò)協(xié)議設(shè)計(jì)了很多校驗(yàn)機(jī)制,但是后面的光纖時(shí)代,這些校驗(yàn)就成了成本和負(fù)擔(dān),檢驗(yàn)并不是越多越好。參考:重要的技術(shù)創(chuàng)新節(jié)點(diǎn)容易發(fā)生在什么地方?
從單機(jī)轉(zhuǎn)向網(wǎng)絡(luò)應(yīng)用,再做移動(dòng)設(shè)備開發(fā),以及和網(wǎng)絡(luò)的融合,以后再有各種智能硬件設(shè)備、萬(wàn)物互聯(lián),不同的應(yīng)用發(fā)展,帶來(lái)了不同的需求和環(huán)境。而原本的編程語(yǔ)言,設(shè)計(jì)者考慮的平衡點(diǎn)可能就不合適了,需要新語(yǔ)言替代它,進(jìn)行革新。
所謂的“平衡點(diǎn)”是說(shuō),設(shè)計(jì)決策里面對(duì)相互沖突的特性,作出的妥協(xié)點(diǎn)在哪里。你是要編譯式的靜態(tài)語(yǔ)言,還是動(dòng)態(tài)語(yǔ)言解釋型的?重點(diǎn)是編程靈活還是運(yùn)行速度?考慮多少安全問題?要不要垃圾回收?用什么機(jī)制?比如CPU從單核進(jìn)化成多核,如何在語(yǔ)言設(shè)計(jì)上充分利用硬件的能力?
如此多的應(yīng)用需求變化,對(duì)各種不同設(shè)計(jì)思想的計(jì)算機(jī)語(yǔ)言的產(chǎn)生必然是催化劑。單一語(yǔ)言解決所有問題域,是不可能的了。強(qiáng)行上馬,只能讓開發(fā)者痛苦,大幅降低效率和質(zhì)量水準(zhǔn)。現(xiàn)在還有誰(shuí)用C++寫Web應(yīng)用?
慶幸的是,在計(jì)算機(jī)系統(tǒng)架構(gòu)未得到根本變革之前,絕大部分編程語(yǔ)言都有很相近的語(yǔ)法結(jié)構(gòu),弄懂學(xué)會(huì)并不難。計(jì)算機(jī)算法也是共通的。但是考慮到它創(chuàng)建并依賴的生態(tài)環(huán)境、設(shè)計(jì)思想、開發(fā)模式和習(xí)慣用法,應(yīng)用自如還是需要耗費(fèi)很多精力的。
這里鏈接幾篇關(guān)于學(xué)習(xí)能力培養(yǎng)、學(xué)習(xí)方法的原創(chuàng)文章,供大家參考:
學(xué)得快,記得牢,花的少 – 請(qǐng)盡快開發(fā)你的大腦
IT領(lǐng)域,學(xué)無(wú)止境,各位繼續(xù)努力吧!
本文轉(zhuǎn)載來(lái)源https://acejoy.com/2018/03/02/402/
程序員客棧(proginn.com)—— 領(lǐng)先的中高端程序員自由工作平臺(tái),未來(lái)互聯(lián)網(wǎng)企業(yè)的用人方式,更多文章請(qǐng)關(guān)注微信公眾號(hào):程序員客棧(微信號(hào):proginnwx)
