程序員學(xué)習(xí)JavaScript的7個(gè)理由
最近在和招聘經(jīng)理交流現(xiàn)在找一個(gè)好的程序員有多難的時(shí)候,我漸漸意識(shí)到了現(xiàn)在編程語(yǔ)言越來(lái)越傾重于JavaScript。Web開發(fā)人員尤其如此。所以,如果你是一個(gè)程序員,那么你應(yīng)該去學(xué)習(xí)JavaScript。
需求
我之所以這樣說(shuō)的主要原因是,隨著JavaScript的日漸成熟,以及Node.js方案變得越來(lái)越可行,我們對(duì)JavaScript程序員的需求正在持續(xù)增長(zhǎng)。 JavaScript在需求比例上已經(jīng)超過(guò)了C#,僅屈居于Java之下。如果你看看GitHub上可行的項(xiàng)目,你會(huì)發(fā)現(xiàn)JavaScript出現(xiàn)得越來(lái)越多,甚至領(lǐng)先于Java和C#。最后,再看看StackOverflow,你會(huì)發(fā)現(xiàn)JavaScript也處于頂層活躍中。
更好的薪酬
根據(jù)SitePoint,JavaScript的薪資要高于C#。當(dāng)然,雖然現(xiàn)在Java的薪水還是比JavaScript高上那么一點(diǎn)。但隨著JavaScript需求的增長(zhǎng),你可以預(yù)見(jiàn)它的薪酬肯定會(huì)提高。
在Gooroo,關(guān)于薪酬VS需求呈現(xiàn)的.畫面略有不同。雖然我們對(duì)JavaScript的需求是顯而易見(jiàn)的,但是很明顯,幾種需求較小的語(yǔ)言反而薪酬更高。我懷疑這是因?yàn)樵S多公司仍然認(rèn)為JavaScript是任何一個(gè)程序員都會(huì)用的語(yǔ)言。但是,當(dāng)他們認(rèn)識(shí)到“任何一個(gè)程序員都會(huì)JavaScript”,實(shí)際上是“任何一個(gè)程序員只會(huì)寫蹩腳的JavaScript代碼”的時(shí)候,也是他們經(jīng)歷慘痛教訓(xùn)的時(shí)候。然后需要真正的JavaScript程序員進(jìn)入清理留下的爛攤子。
在StackOverflow,我們看到了一份非常詳細(xì)的關(guān)于開發(fā)人員在過(guò)去三年時(shí)間中的歸類。當(dāng)你最后看到“使用的技術(shù)”部分的時(shí)候,我們發(fā)現(xiàn),如果你稱自己為JavaScript程序員(這里假設(shè)是在客戶端),那么你得到的報(bào)酬雖然比C#程序員低,但會(huì)比Java程序員要好,但如果你說(shuō)自己是一個(gè)Node.js程序員(全JavaScript),那么你能拿到第二高的工資。唯一比Node.js還高的是Objective-C(我假設(shè)以后會(huì)是,Swift)。
JavaScript正日趨成熟
新的JavaScript標(biāo)準(zhǔn)每年都會(huì)發(fā)布,而且現(xiàn)在很明顯,被添加到JavaScript的語(yǔ)法糖 (Syntactic Sugar)的數(shù)量每年都在增加。其中一個(gè)我期待的功能是,能在我的JavaScript代碼中使用異步和await關(guān)鍵字,以消除回調(diào)地獄(callback hell)。
你越早開始學(xué)習(xí)JavaScript,那么學(xué)習(xí)起來(lái)就越容易。所有的改變都是循序漸進(jìn)的,就像瀏覽器正在不斷地改進(jìn)處理JavaScript代碼的能力。可以預(yù)見(jiàn)在不久的將來(lái),瀏覽器不僅可以緩存JavaScript文件,還可以緩存JavaScript文件的編譯版本。
JavaScript程序員更能被委以重任
大概在一年前我和我的一個(gè)老朋友聊天的時(shí)候,他提到,他是他們小組(約20個(gè)程序員)唯一一個(gè)用這樣的方式寫JavaScript以消除變量對(duì)全局范圍的污染的程序員。這只是最簡(jiǎn)單的例子。很多人稱自己為JavaScript程序員,卻不知道這些基本知識(shí)。所以,JavaScript大有可為。
而且不要忘了,現(xiàn)在很多支持性能分析和內(nèi)存泄漏的工具才剛處于起步階段。如果你現(xiàn)在就掌握了這些技能,那么將來(lái)肯定可以更好地推銷自己。
如果你對(duì)這一類東西感興趣,那么可以閱讀PluralSight上的一些課程。只要搜索“JavaScript profiling”即可。
日趨完善的框架
Angular的新版本正在開發(fā)中,而且還有Aurelia作為候選。商業(yè)產(chǎn)品如Scencha的EXTjs。還有用于服務(wù)器端編程的Node.js。等等等等。用JavaScript開發(fā)實(shí)際的應(yīng)用程序并不太難。我敢保證,如果我愿意的話,我完全可以只用JavaScript來(lái)寫一個(gè)可以運(yùn)行的桌面應(yīng)用程序。嘿嘿。
JavaScript無(wú)處不在
JavaScript可運(yùn)行在所有主要平臺(tái)的所有主流瀏覽器上,也可運(yùn)行在每一個(gè)主流操作系統(tǒng)的服務(wù)器端上,F(xiàn)如今我們?cè)跒榫W(wǎng)站寫任何一個(gè)主要功能的時(shí)候都需要有懂能夠用JavaScript寫前端的開發(fā)人員。而后端代碼是用什么編寫的則無(wú)所謂——不管是Java,PHP,.NET,Node.js還是其他——但是客戶端就一定需要一個(gè)JavaScript開發(fā)人員。事實(shí)上,現(xiàn)在很多開發(fā)人員依然沒(méi)有認(rèn)識(shí)到JavaScript有多么強(qiáng)大。不知道正在閱讀的你是否也是這些井底之蛙的一員。如果你確實(shí)是一個(gè)了不起的JavaScript程序員,那么基本上所有有關(guān)于服務(wù)器端平臺(tái)的工作都能夠勝任。如果再了解這些平臺(tái)基本上就可以上任了。
JavaScript是一種編譯語(yǔ)言
這也許會(huì)嚇你一跳,從技術(shù)上說(shuō),JavaScript是一種編譯語(yǔ)言。這有兩個(gè)含義。首先,一旦代碼被編譯,它的運(yùn)行速度或許就能媲美于任何其他可執(zhí)行文件。其次,為JavaScript寫工具在技術(shù)上是可行,并且將會(huì)創(chuàng)建一個(gè)不必每次加載代碼到內(nèi)存中時(shí)就重新編譯的二進(jìn)制文件。