天天看點

TypeScript真香,Go未來可期

TypeScript真香,Go未來可期

20 世紀 40 年代,世界上第一個進階程式設計語言 Plankalkül 在德國誕生,這甚至發生在電腦發明之前。從那開始,每年都有新的程式設計語言被創造出來。到目前為止,計算機領域已有上千種語言。而關于“誰是世界上最好的程式設計語言”這個問題的争論,也從未停止過。

JavaScript 仍在繼續流行,與此同時,越來越多的前端項目嘗試使用更安全、開發效率更高的 TypeScript 重構。

Go 在伺服器開發領域不斷開疆拓土,前景光明。Rust 也在性能敏感的領域逐漸獲得應用,大有替代 C/C++ 等傳統語言之勢。

沒有最好的語言,隻有最适合的語言。

創新者:版本常更新,同名不同命

2020 年 3 月,Java 14 如期釋出,而根據其每六個月更新一個版本的釋出周期,Java 15 已經在路上。頻繁的更新讓人有些審美疲勞,甚至有點懶得去看有什麼新特性。相較而言,長期支援版本 Java 8、Java 11 以及将于 2021 年 9 月釋出的 Java 17 更值得關注,相關調查報告顯示,目前仍有超過半數的開發者在使用 Java 8,還有一部分開發者在使用 Java 11,至于其他短期版本的使用者則寥寥無幾。

為什麼沒什麼人用,Java 還在不斷釋出新版本呢?我們認為這些短期支援版本可以看做是長期支援版本的超前點播,并非為生産而創造。而語言本身也需要根據時代的需求不斷引入新的特性,向社群表示自己還在與時俱進。

新特性看起來不錯,為什麼你的項目仍停留在 Java 8 而不去遷移到更高的版本呢?大多數時候,更新版本是一件吃力不讨好的事情。而且,就算很多團隊已經用上了 Java 8,但像 Lambda 表達式等 Java 8 中引入的新特性,普及率并不高。

早期采用者:Strings 有幾種寫法?

Go 語言很火,但沒有你想象的那麼火。在 TIOBE 近一兩年的榜單中,Go 語言在前 20 位中,總體呈現穩中有升的趨勢,今年 3 月又一次沖進前十。而在國内,沒有哪個大廠不做 Kubernetes,微服務和 Serverless,這些正是雲原生語言 Go 的主場。

有親爹谷歌的扶持,有大廠背書,社群和生态持續良好發展,Go 語言的前途一片光明。是以,我們認為 Go 語言有希望越過早期采用者階段,進入早期大衆階段。

那麼,Go 會擠走 Java 成為下一個企業級程式設計語言嗎?你可能想得有點多。雖然 Go 語言可以勝任那些業務簡單和追求極緻性能的項目,但是複雜業務還是要靠 Java——業務越複雜,Java 越厲害。不過能在 Java 身上啃一口,已經足以證明這個語言的優秀。

早期大衆:都是太子,誰更穩?

在說 TypeScript 之前,必須得說一下它的主創,傳奇人物 Anders Hejlsberg,他在 Borland 開發了 Delphi,後被 Bill Gates 親自邀請到微軟,接連創造了 C#、TypeScript,還主持了.NET 的開發工作。

TypeScript 是一門 KPI 語言嗎?沒事兒重構一下,彰顯自身價值?那你就想岔了。如今,前端項目正在變得越來越複雜,項目規模越來越大,作為 JavaScript 生态的一部分,TypeScript 的強類型限制雖然帶來了開發成本的增加,但是也幫助開發者減少了寫出低級 bug 的機率,減少了後期維護成本。Vue3.0、Angular 2+、VSCode、Echarts 等知名項目都在用 TypeScript 重構,不經意間,TypeScript 已經在前端領域處處開花。TypeScript,真香!

晚期大衆:小衆與領域主流不沖突

JavaScript 在前端領域的地位不用多說,哪怕 TypeScript 等新語言出現,也不會對它造成太大的沖擊,最終的結果就是這些語言統統變成了它的頭花。著名的 Atwood 定律寫道——任何可以用 JavaScript 來寫的應用,最終都将用 JavaScript 來寫。但業界還有一句話——JavaScript 的優點是可以寫任何東西,缺點是你真的這樣幹了。

擁簇者愛之,嫌棄者有之,不管怎樣,目前 JavaScript 在浏覽器端依然無可替代,有了 Node.js,它在伺服器端也不容小觑。至于火不火什麼的,這不是 JavaScript 會關心的事,它已經不是小孩子了。

寫在最後

程式設計語言,對程式員有着來自靈魂的緻命吸引力。也許,一個普通程式員,他有限生命的每一分鐘都在寫經驗重複性的業務代碼,但這不會阻止他探索一門老語言,學習一門新語言,哪怕這門語言他可能永遠不會在工作中用到。

百家峥嵘,各有千秋,所有的程式設計語言,是人類積攢了半個多世紀的财富,是專門為你們準備的禮物,秃頭吧,程式員!擁抱變化,一起奔湧在代碼的河流!