【玖哥亂彈】神通廣大的JavaScript

一切可以用 JavaScript 編寫的程序,最終都會使用 JavaScript 編寫

——Atwood 2007

 

就在前幾天“JavaScript是世界上最好的語言”這句話火了,PHP的地位遭受了前所未有的挑戰。JavaScript到底有何神通,能登上世界上最好的語言的寶座?

 

JavaScript是誕生於1995年的一種直譯式腳本語言,原名Mocha。JavaScript是一種動態類型、弱類型、基於原型的語言,內置支持類型。JavaScript具備簡單靈活和跨平臺的優勢,會成爲解決大部分IT問題的優選方案。著名程序員 Jeff Atwood 在2007年發佈了著名的 Atwood's Law: “Any application that can be written in JavaScript, will eventually be written in JavaScript. (一切可以用 JavaScript 編寫的程序,最終都會使用 JavaScript 編寫)”。就像世界上大多數人都是白種人一樣,GitHub上用JavaScript寫的代碼也佔據了大多數,JavaScript的開放性和簡潔性功不可沒。

 

網頁前端

JavaScript最初是用來給HTML網頁增加動態功能的。與JavaScript同時出現的JScript、ActionScript和ScriptEase等都幾乎銷聲匿跡,但JavaScript仍然被廣泛用於Web應用開發,也用來爲網頁添加各式各樣的動態功能,爲用戶提供更流暢美觀的瀏覽效果,甚至成爲了前端開發的代名詞,這就說明了JavaScript的強大之處。

 

爲傳統企業做一個展示網站通常耗時以周計,此時開發者只要找一個模板就夠了。而開發時間以月計的互聯網公司前端開發工作就不得不選擇一個合適的框架了,以下是世界主流的JavaScript前端開發框架和類庫:

 

出自Google的前端開發框架Angular.js自帶MVC框架,通過新的屬性和表達式擴展了 HTML,並且通過被稱爲指令(directives)的結構讓瀏覽器能夠識別新的語法,現在已經憑藉數據雙向綁定成爲了使用人數最多的前端開發框架。

 

來自FaceBook的前端開發框架React.js設計思想是用組件套組件的方式來繪製Web畫面現在大家開發前端的思路早已不是當年的 Web page,而是 Application——傳統的HEML+CSS已經不適合這個時代了,組件化開發即將成爲主流。

 

國內前端專家尤雨溪的前端開發框架Vue.js在GitHub的Star數量已經非常接近React.js,Vue.js能像織蓆販履的劉備一樣與出身名門的Angular.js和React.js鼎足而立的原因在於提供了更加簡潔、更易於理解的API, 更加輕量級也更加容易上手自帶MVVM架構的Vue.js必將以開源世界中國人的驕傲載入史冊。

 

體量並不能稱爲一個“框架”的jQuery是一個號稱“Write Less,Do More”的JavaScript類庫,封裝了大多數常見、但寫起來複雜的實用代碼段,如優化HTML文檔操作、事件處理和動畫設計等。

 

服務端和大數據

JavaScript不僅適合前端開發,Node.js的出現使得JavaScript程序員進行後臺開發成爲可能。Node.js是一個基於 Chrome V8 引擎的 JavaScript 運行環境其包管理器 npm是全球最大的開源庫生態系統。無論公司自備機房還是使用阿里雲、金山雲等雲服務,Node.js都是創業團隊的最佳選擇。但因爲JavaScript是單線程語言,在處理高併發和大數據等問題上常常力不從心。

 

如果你是一個Android或iOS開發者,服務器僅僅是給自己業餘項目或開源項目用的,那麼Bmob雲(沒錯,Bmob雲端代碼也是JavaScript)也能爲你提供一個小而美、並且價格低廉的服務器。

 

網頁遊戲

網頁遊戲不都是粗製濫造的“一刀999級”或“屠龍寶刀,註冊就送”等圈錢產品,用瀏覽器玩的遊戲也能做到畫面精美、特效絢麗。

 

Cocos2d-x-js是全世界最著名遊戲框架Cocos2d-x專爲HTML5遊戲設計的JavaScript版本,採用原生JavaScript語言編寫。隨着Flash退出歷史舞臺,掌握Cocos2d-x-js技術的程序員就是新一代的閃客。

 

2014年2月創立於北京的Egret是一套完整的HTML5遊戲開發解決方案,其核心產品白鷺引擎(Egret Engine)憑藉上手簡便、性能強大已佔據國內超七成的手機頁遊引擎市場份額。Egret佈道師徐聰(筆名:臭臭打不死人)不但能用自己精益求精的技術和助人爲樂的精神幫助開發者解決使用Erget時遇到的技術問題,還經常向有探索精神、幫助其他開發者瞭解Erget的開發者贈送禮物。

 

移動端

最著名的HTML5移動開發框架當屬Facebook發佈於2015年的React Native(顧名思義,是上文提到的React.js的一個分支),這是一套跨平臺、動態更新的 Javascript 框架,口號是“Learn once, write anywhere”。與之類似有同屬舶來的PhoneGap等。

 

國產的HTML5開發框架在國內也百家爭鳴,常見的有HBuilder和AppCan,二者共同特點是都爲了便於新手入門製作了專用的編譯器。2016年,在Qcon大會上宣佈開源的Weex也異軍突起,來自阿里的它因爲開發的軟件與原生App別無二致受到很多人的青睞。

 

掌握JavaScript的程序員在國內還有一個新出路,就是微信開發。在國內有7億用戶的微信向廣大JavaScript程序員提供了無數公衆號和小程序開發的就業崗位,並且現在的移動互聯網創業公司或者想涉足移動互聯網的傳統企業都可以先用微信公衆號和小程序試水而不必一開始就開發成本高昂、進度緩慢的原生App

 

VR

2016年被譽爲“中國VR元年”,其實VR並不神祕,只要掌握了眼球追蹤和立體視覺,一切3D引擎都可以搖身一變成爲VR引擎。而JavaScript恰好編寫過幾款著名的2D引擎

 

Three.js是3D繪圖協議webGL的一款框架,也是增長最迅速的和討論最熱烈的3D遊戲引擎;React VR是FaceBook今年推出的基於JavaScript框架的虛擬現實創建工具……這些五光十色的框架大大降低了JavaScript程序員涉足VR的門檻。

 

Egret Engine3D遊戲引擎是國產的3D遊戲引擎,不但網頁兼容性更好,更支持手機瀏覽器,加載也更快,還配套了3D骨骼等配套工具,更具備支持將VR遊戲發佈到微信公衆號及小程序的中國軟件的種族優勢。

 

儘管目前VR領域仍然是Unity-3d的時代,VR程序員都是寫C#的,但JavaScript征服VR世界只是一個時間問題。

 

AI

AlphaGo擊敗柯潔的新聞在科技界引發了軒然大波,AI一夜之間登上了各大送索引擎的搜索榜首。

 

理論上一切圖靈完備的語言都能成爲AI開發語言,而JavaScript正是圖靈完備的。無數JavaScript程序員致力於JavaScript在自然語言處理和手寫識別等領域的研究,目前國外已經出現用JavaScript編寫的人臉識別工具Landmarker.io

 

儘管目前業界主流觀點還是“AI入門用Python,AI追求性能用C++,AI工業化用Java”,但我們仍然可以堅信克服了AI專業庫缺失和無法精確控制內問題的JavaScript終將在AI領域佔據一席之地。

 

loT

loT比一般的軟件系統多了一個硬件層,這就決定了loT的架構的複雜程度,常常需要多種語言的配合才行:

1、用Arduino給硬件編寫一個控制器

2、用使用C語言編寫的Raspberry Pi連接網絡,並傳輸控制信號給硬件

3、用“鉤子語言”Python連接以上兩條

4、用Java語言編寫一個Android應用,用手機作爲遙控器

……

萬幸這個需要掌握多種語言才能進行loT工作的時代即將成爲過去式。三星設計了用JavaScript編寫的物聯網引擎loT.js,它的運行內存小於64kb,而且全部代碼能夠存儲在不足200KB的ROM上,如此輕量的體積在智能家居等硬件設備上有明顯的優勢。由此可見,物聯網也將成爲JavaScript工程師的新藍海。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章