首頁>技術>

如果你有機會從頭做一個專案,你會怎麼選擇技術棧?

這是演講開始之前Richard提的問題, 相信很多人都會選擇成熟穩定的、主流的技術棧。

如果時間回到2006年,這個主流的技術棧就是LAMP:

L : Linux

A: Apache

M: MySQL

P : Perl 或者 Python 或者PHP

Richard在2006年創業的時候,就選擇了LAMP, 選擇了Perl 。但是選擇穩定的東西並不能保證安全,Perl很快就走了下坡路,慢慢地連Perl 程式設計師都不好招聘到了。

所以Richard 說:“不管我們選擇的技術多麼流行,多麼主流,在今天多麼吸引人,我們依然是在下注賭博。所以預測當前技術會向什麼方向發展並且跟隨,要比一開始就盲目接受別人所用的技術要更安全一些。”

有了這麼一個前提, 他的預測開始了:

1. TypeScript將會接管JS世界

到2020年底,TypeScript將會成為新的商業專案最常見的選擇。

到2025年底,每天使用TypeScript程式設計的程式設計師將超過使用普通JavaScript的程式設計師。

TypeScript很多人都知道,它是JavaScript的一個超集,對JS增加了靜態型別的檢查, 這個關鍵的特性受到了很多程式設計師的歡迎,很多錯誤可以在編譯時就被發現,而不是遺留到執行時,並且有了靜態型別以後,閱讀、修改、重構現有程式碼也變得更加輕鬆。

從Google 趨勢來看,TypeScript正處於蓬勃發展的階段,而CoffeScript則走向下坡路。

不僅如此,很多框架都已經支援TypeScript:

儘管如此,還有很多人不喜歡TypeScript,覺得TypeScript程式碼變得像Java一樣冗長,設計也不健全,在某些情況下給人以錯誤的安全感。

Richard說預測未來的最重要因素就是看看這門技術如何影響團隊, 很多團隊都會說:“我們會嘗試TypeScript, 我們已經使用TypeScript”, 從來沒有團隊說:“我們嘗試了TypeScript,後來又回到了JavaScript。”

值得一提的是,現在微軟養著兩位大神,都在TypeScript和JavaScript領域耕耘,一個就是TypeScript的設計師Anders Hejlsberg, 他同時是Turbo Pascal , Delphi, C#等知名語言的設計者。另外一位是Erich Gamma ,他專注於編輯器和IDE,設計模式,Eclipse,VS Code就是他的得意之作。

2. WebAssembly 會擴大WebApp的領域

到2020年末,WASM對Web的組成不會有太大影響。

到2025年末, WASM將會建立一個新的領域:“重量級的Web App”。

WebAssembly 是什麼東西?可以簡單理解為在瀏覽器中執行的“組合語言”, 可以提供接近原生代碼的速度,肯定要比JavaScript快得多。

程式設計師肯定不會直接寫“組合語言”,程式設計師可以用C/C++/Rust來寫程式,編譯成WebAssembly後在瀏覽器中執行,當然,WebAssembly程式碼也可以被JavaScript呼叫。

可能會有人說,現在有了V8 之類的執行引擎,大家覺得JavaScript的效能已經不錯了啊,為什麼還要搞個Web彙編?

Richard舉了一個例子:Figma,這是一個重量級的影象編輯軟體,像Photoshop, Sketch 那樣,但是它與眾不同的是在瀏覽器中執行的。

這個軟體是用C++開發的,最早的時候編譯成了JS的一個子集ASM.js在瀏覽器中執行,採用了WebAssembly以後,速度提升了3倍之多。

另外一個更好的例子是遊戲。比如下面這個場景,如果想使用CSS,估計是不行的, 但是WebAssembly可以搞定。

這就意味著WebAssembly打開了一扇門, 那些重量級的本地應用,可以通過Web的方式來安裝,分發了。Web瀏覽器將會和傳統的App Store, 安裝程式做競爭了!

以後你想用某個應用,只需要瀏覽器中輸入網址,立刻開始使用,不用安裝。和別人分享也非常的方便,發個link就行了。 (是不是和小程式的理念有點像?但是本質是不同的。)

HTML/CSS/JS就此死去?當然不會,WebAssembly擴大的Web開發的基本盤, WebApp 的盤子會更大。

3. npm將在更多的問題中艱難生存

到2025年末, 至少一個惡意的npm package 感染大量開發者的機器。

這幾年,開發人員已經目睹了好幾次npm的災難。

2016年, 一名 npm(Node.js Package Manager)的貢獻者 Azer Koçulu 出於對 npm管理層的怨憤,刪除了自己在 NPM 的250個模組,其中一個叫做left-pad,非常簡單,就是用特定字元填到一個字串的左邊,達到指定的長度,但是這個模組被引用得非常廣泛, 導致了一次NPM生態系統的大地震,Node.js, Babel , 還有其他數千個專案直接罷工。

2018年npm又爆發了著名的event-stream事件, 一個叫right9ctrl的傢伙,騙取了event-stream這個著名package的作者的信任,獲取了程式碼所有權,然後向其中植入了惡意程式碼。

此外npm的packagte安裝指令碼中的也存在安全隱患,Richard建議在本機執行:npm config set ignore-scripts true 。

4. JS的替代品會穩健成長

到2020年末,編譯成JavaScript的那些語言會繼續增長,但是都沒有TypeScript增長快速。

到2025年末, 那些非JS的方言還會穩健成長,雖然TypeScript會很流行。

JavaScript有兩類替代品,一類是JavaScript方言,如TypeScript, Dart, Coffeescript等,還有一類是非JavaScript方言,例如ClojureScript, ReasonML, 和Elm, 雖然都是編譯到JavaScript來執行,但是它們提供的體驗和JavaScript不同。

Richard本人是Elm的開發人員,自然給Elm做了廣告,渲染速度快,體量小,不崩潰,有自己的生態體系,並且因為有非常詳細的錯誤資訊而廣受讚譽。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 直到面試官問起 才知道Spring Boot + electron 如此強大!