哪些編程語言會在 Web 3 時代脫穎而出?

作者:莫奇

審校:千山

伴隨着去年元宇宙概念的走紅,Web 3 已經成爲今年最火熱的賽道之一。客觀來講,Web3 目前仍然處於早期發展階段,全新的方案、商業模式、新奇的概念和想法層出不窮。與此同時,這個勢不可擋的行業創造了巨大的人才需求,掌握區塊鏈技術、懂得 Web 3.0 開發的技術人員更是成爲衆人追捧的香餑餑。

如果你是一名新晉的 Web 3 開發人員,那麼你將面臨衆多編程語言的抉擇問題。Web3 時代,哪些編程語言能夠脫穎而出?

PART 01

Solidity:面向合約,生而強大

根據國外網站 devjobsscanner 今年發佈的調查報告顯示,排名第一的編程語言是 Solidity。作爲一種面向合約的高級編程語言,Solidity 主要用於在以太坊區塊鏈網絡上實現智能合約。

根據官網的介紹,Solidity 借鑑了一些高級語言,比如 Python 和 JavaScript 的特性。它是一種靜態類型的語言,運行在 Ethereum 虛擬機(EVM)之上。支持繼承、庫和用戶自定義類型以及其他功能。使用 Solidity 可以開發類似於投票、衆籌、拍賣、多重簽名錢包等功能。

簡而言之,Solidity 就是爲智能合約而生。此外,使用 Solidity 開發智能合約還有以下兩大優勢:

安全性

智能合約的代碼需要非常嚴謹和安全,Solidity 作爲靜態類型和強類型的語言,保證開發者通過編譯能夠迅速捕捉到一些常見錯誤,增強了語言的安全性。而諸如弱類型語言 JavaScript,似乎並不能寫出足夠安全的代碼;而 Java/C++ 等語言如果移植到區塊鏈上,可能會對系統造成較大的負擔,因爲整個移植過程的工作量非常大。因此,小巧和專用是 Solidity 語言的優勢。

特殊支持

Solidity 對智能合約特定業務的支持力度很大。智能合約是需要實現的,常見的編程語言對於這一點是沒有特殊支持的,而 Solidity 專門對此進行優化,新添了一種類型——contract。除此之外,Solidity 還有一種數據類型叫做 address,可以在發代幣時設置鑄幣人地址。

需要說明的是,Solidity 不是一門很複雜的編程語言,很像微縮版的 JavaScript,因此對很多開發人員來說更容易上手。

雖然 Solidity 相對比較年輕,規模較小,可重複使用的標準庫也少,但是自從 2020 年以來,Solidity 羣體及其代碼庫迅速發展。此外,由於以太坊是目前最龐大的開發生態,Solidity 也仍然會是區塊鏈產業中應用最廣泛的黃金編程語言之一。

PART 02

Rust:速度快、效率高,理想之選

與 Solidity 等其他基於區塊鏈的編程語言不同,Rust 並不針對加密貨幣,主要還是應用於區塊鏈以外的行業。不過應用於 Web3 領域的 Rust,同樣非常優秀。

由於 Web3 協議在處理數千萬個不可信輸入時需要快速且強大的性能,Rust 具有明顯的優勢。他能以閃電般的速度處理功能複雜的任務,同時還減少了與內存、邊界、空變量、初始化變量或整數溢出等錯誤。

使用 Rust 開發 Web3 應用程序的優勢如下:

速度快

Rust 語言擁有驚人的速度和內存效率。豐富的類型系統和所有權模型保證了其內存和線程的安全,從而能夠在編譯時消除很多典型的錯誤。此外,它可以併發(和並行)代碼,快速地處理事務。這爲 Rust 程序提供了可擴展性。因其吞吐量高,每秒事務(TPS)處理量就比其他語言更多。

效率高

Rust 還提供文檔和編譯器,這有助於輕鬆診斷問題,提高工作效率。開發人員不用花費太多時間優化代碼,因爲編譯器會將他們的編譯抽象化。值得一提的是,用 Rust 編寫應用程序的運行速度比其他語言更快。

互操作性

此外,Rust 可以很好的與其他語言結合使用,從而輕鬆調用另一種語言。這個特性在萬物互聯的網絡中更能凸顯其互操作性的價值。

因此,Rust 的速度非常快,內存效率很高,同時還保持了極高的可靠性。它的併發能力正是每秒處理數萬甚至數十萬筆交易所需要的,這使得 Rust 成爲 Web3 應用程序和虛擬世界交易的理想選擇。

PART 03

Go:簡單高效,頭部語言

Go 是一種開源的通用編程語言,它是一種併發的、帶垃圾回收的、快速編譯的語言。Go 語言可以在不損失應用程序性能的情況下,降低代碼的複雜性。

谷歌首席軟件工程師 Rob Pike 直言,我們之所以開發 Go,是因爲過去 10 多年間軟件開發的難度令人沮喪。

除比特幣是由 C++ 開發以外,目前最主流坊的客戶端均由 Go 語言開發,這足以彰顯 Go 語言在整個區塊鏈行業的地位。

Go 語言能夠在區塊鏈領域發揮的優勢如下:

多模塊異步協同工作

區塊鏈是多模塊異步協同工作的,分成了 P2P 層、錢包層、內核層。其中,內核層、錢包層裏都有很多不同的子模塊,在負責不同的事情。Go 語言的特點就很適合這方面的開發。

社區共同協作

區塊鏈項目主要依賴社區參與,Go 語言在編譯上相較於其他語言更嚴格,在制定規範後可以使不同開發者的代碼風格趨於相近,有利於協同工作的展開。

豐富支持

Go 語言的社區生態比較完善,有很多非常好的開源庫支持,使用起來非常方便,體驗良好。

主流語言的頭部效應

在區塊鏈項目中,有超過 85% 的項目都是基於 Go 語言開發的,比如 Go-Ethereum(用 Go 語言編寫的以太坊客戶端)、Hyperledger Fabric(爲大公司提供區塊鏈解決方案的項目)、Loom Network、Btcd、Gochain、Dero 等。此外,大部分區塊鏈工程師都擅長 Go 語言,所以當新項目開始的時候,基本都會首選 Go 語言。

總的來說,區塊鏈開發所使用的編程語言,需要滿足執行率高、高併發、跨平臺,對於網絡開發的要求也很高等條件,而 Go 語言恰恰滿足以上這些特性。 

PART 04

Haskell:純函數式,潛力黑馬

Haskell 是一種通用的函數式編程語言,在區塊鏈的應用中,Haskell 通常被定位爲 Cardano 的智能合約編程語言 Plutus 的底層定製語言。

Haskell 是一門非常數學,也非常純粹的語言。由於它是一種靜態類型的語言,代碼在編譯過程中很容易被評估,所以類型檢查可以確保代碼的簡潔、清晰和正確。

從本質上來說,Haskell 爲描述和評估函數提供了一個理論框架,其中每個函數都是數學意義上的函數,具有高度安全性。在 Hskell 中,函數執行低層次的任務,並指定程序所需完成的任務。

Hskell 使用惰性求值,在無必要的情況下,它會繞過不相關的代碼,程序運行速度更快。此外,Hskell 使用起來也非常方便,因爲它利用了自動內存管理(AMM),開發者在開發他們的 DAPP 時不需要將內存管理任務寫入代碼中。

需要說明的是,截至 2021 年,使用 Hskell 語言的 Web3 開發者的數量依然較少,該語言尚未被多數開發者所接受。儘管學習 Hskell 的門檻較高,庫很少,開發者人數較少且增長緩慢,但是 Hskell 在生產高質量軟件方面仍然發揮着至關重要的作用,掌握額外的 Haskell 對開發者來說,更容易脫穎而出。

PART 05

寫在最後

事實上,Web3 正在快速發展,我們無法預測哪門編程語言能夠成爲 10 年後的主流,也不知道接下來區塊鏈領域會發生什麼,但可以確定的一件事是,編程語言的整體發展趨勢是越來越通用且易於上手。

參考鏈接

https://solidity-cn.readthedocs.io/zh/develop/

https://www.likecs.com/show-204071385.html

https://zhuanlan.zhihu.com/p/472152487

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/YrWNIYkaBPK2cYLwjM3hYQ