題圖:by click_vision From Instagram
注:本文節(jié)選自「極客時間」大前端專題,有刪改。
編程語言到底有沒有生產(chǎn)力之分呢,當(dāng)然是有的,尤其對于初中級選手。功夫到了絕頂,拈花飛葉皆是武功,工具就不重要了。但能到絕頂?shù)模吘故巧贁?shù),所以對大多數(shù)人來說,工具和編程語言的選擇同樣重要。《黑客與畫家》的作者保羅·格雷厄姆(Paul Graham)就在文章中寫過,他決定在公司使用 Lisp,就是因為他認(rèn)為 Lisp 比當(dāng)時所有的語言都高出一籌,獨特、深邃,能夠表達難以描述的事物。保羅說,自己公司相比競爭對手的優(yōu)勢就在于 Lisp。
Lisp 始終沒有成為程序員主要的開發(fā)語言,但是另一門類似英語表達一般的編程語言 JavaScript 在最近幾年卻獲得了突飛猛進的發(fā)展,目前成為 Github 上使用最廣泛的開發(fā)語言,可謂編程語言生產(chǎn)力的代表。
然而,JavaScript 仍未得到與其他語言同等的尊重。盡管它的使用率在創(chuàng)業(yè)公司和大型公司中持續(xù)增長,但很多人依然不認(rèn)為它是一門有用的語言。大公司的高級工程師聲稱它不是一門「真正的」編程語言,許多人還以為 JavaScritp 只能操作一些表單和樣式,并彈出一個警示框。
作為一名老程序員,我希望通過這篇文章讓大家深入了解公眾對這門語言的看法。在我來看,一些批評有失水準(zhǔn),有一些批評則是有意義的。
除了樣式效果外,JavaScript 也被越來越多地應(yīng)用于軟件開發(fā),例如后端任務(wù)、Web 服務(wù)器以及數(shù)據(jù)處理和原生移動應(yīng)用的開發(fā)。JavaScript 并不是人為設(shè)計出來的一門語言,它是在進化過程中找到了自己的位置。它成型很快,起初只關(guān)注一個很小的目標(biāo),后來是市場的力量改造了這門語言。
Rauch 的公司提供了一個可以同時在瀏覽器和服務(wù)器上使用 JavaScript 的開源 Web 框架。事實證明,許多公司都在做同樣的事情。根據(jù)統(tǒng)計公司技術(shù)棧信息的網(wǎng)站 StackShare.io 的數(shù)據(jù),在后端語言的選取上,相比 Python(4000)或 Java(3900),更多公司使用 JavaScript(6000)。這個網(wǎng)站面向的更多是創(chuàng)業(yè)公司,但它從側(cè)面反映出 JavaScript 是一個不斷增長的生態(tài)系統(tǒng)。
再來看看編程工作的數(shù)據(jù),Indeed.com 上的一篇文章告訴我們,在美國,大多數(shù)編程工作都使用 Java,但 JavaScript 并不落后。比如:
1、在 Github 上 JavaScript 開源項目的數(shù)量最多(比 Java 多出 50%)
2、NodeJS 被評為 StackOverflow 2017 年開發(fā)者調(diào)查中最受歡迎的框架
3、JavaScript 是 Stack Overflow 中最流行的編程語言
并沒有致命的批評。
我咨詢過一位 Oracle 的朋友,他們的工程師對 JavaScript 有什么顧慮。他說“由于 JavaScript 是一門解釋型無類型語言,對于系統(tǒng)編程來說它不是一門理想的編程語言”,這種針對 JavaScript 的投訴非常普遍。JavaScript 函數(shù)接受任意類型的參數(shù),但在 Java 中,如果參數(shù)不是特定類型就會引發(fā)錯誤。
我又咨詢另外一位在谷歌工作的朋友,他向我指出 NodeJS 的一些公開的問題,他說,一些錯誤雖然微乎其微,但他會認(rèn)為這個框架不夠成熟。
上述幾位工程師都曾提到,每當(dāng)討論編程語言時,經(jīng)常聽到其他工程師貶低 JavaScript。大家對于 JavaScript 用于后端任務(wù)依然心存疑慮,但是大部分?jǐn)骋馑坪跤峙c語言和生態(tài)系統(tǒng)的現(xiàn)狀無關(guān)。
JavaScript 在過去 5 年中已經(jīng)走過很長一段路,早期 JavaScript 實現(xiàn)類似 Facebook 的“Like”按鈕這樣的功能,都需要刷新頁面,點一下,刷一次。后來可以做到點一次頁面不刷新,但會改變頁面狀態(tài)。
再后來開發(fā)者開始通過 JavaScript 來制作單頁面應(yīng)用程序(SPA)。SPA 指在瀏覽器中應(yīng)用程序只加載一次,所有后續(xù)視圖都是通過 JavaScript 生成的。反對者認(rèn)為,用戶需要花很長時間才能完成初始下載,在手機上時間更長。在過去的兩年中,向管理和打包 JavaScript 代碼的技術(shù)已得到顯著提高(比如 webpack)。這解決了 JavaScript Web 應(yīng)用緩慢的加載速度,提升了性能并創(chuàng)建更好的用戶交互體驗。
隨著技術(shù)進步,JavaScript 出現(xiàn)了新的編程范式。狀態(tài)管理庫將計算機和操作系統(tǒng)的設(shè)計原理使用到了用戶的交互體驗上,JavaScript 工程師的門檻變高了。在這些變化的背景下,對于早期階段的公司來說,使用 JavaScript 作為后端語言就開始變得有意義。如果您已擁有了優(yōu)秀的前端 JavaScript 攻城師,這種做法可以讓他們更輕松地協(xié)作,審核和共享代碼。
盡管 JavaScript 最初是一門瀏覽器中的語言,但在計算機科學(xué)的各個方面 —— Web、移動端、物聯(lián)網(wǎng)和后端服務(wù)中,它都變得更加普遍。無論你是否承認(rèn)這一點,JavaScript 都在各個編程領(lǐng)域大展身手。
毫無疑問,JavaScript 已經(jīng)成為了一門一流的編程語言,使用 JavaScript 的程序員們正變得無所不能。質(zhì)疑 JavaScript 是否是一種「真正的」編程語言的時代已經(jīng)過去,現(xiàn)在的問題是,你有沒有準(zhǔn)備好投入到這門語言中,進行真正的學(xué)習(xí)。
如何成為一名優(yōu)秀的前端工程師呢?學(xué)習(xí)和實踐。如果你已經(jīng)是一名前端工程師了,自然具備實踐的機會。如果從零開始,實踐機會就比較少,耗時也會比較長,對自制力的要求也很高。
最有效率的方式是跟著一門課程學(xué)習(xí),比如優(yōu)達學(xué)城的前端開發(fā)課程。這門課程幫助你從零基礎(chǔ)體系化學(xué)習(xí)前端開發(fā),并提供實戰(zhàn)項目、一對一碼審閱和技術(shù)輔導(dǎo)。課程是和 Google、GitHub 公司合作開發(fā),按照真實工作中的需求設(shè)計的課程和實戰(zhàn)項目,相比傳統(tǒng)的IT教育,硅谷工程師的情景化短視頻 + 互動問答,容易保持注意力和即時鞏固知識,讀者可以在家利用業(yè)余時間學(xué)習(xí)一門新的技術(shù)。
聯(lián)系客服