程序猿過渡到Web3,Solidity 、Go、Haskell 、Rust,該側重哪種語言?
1. 寫在前面
元宇宙、NFT等詞雖已耳熟能詳,但對於身處該行業的人來說,仍然可以時刻感受到Web3 依然在早期階段,全新的方案、商業模式、概念或想法層出不窮。同時,這個勢不可擋的行業浪頭創造了巨大的人才需求,區塊鏈開發人員就是眾人追捧的香餑餑之一。
2021 年,加入Web3 的開發人員比以往任何時候都多,全年有超過34,000 人加入該行業。與傳統金融領域的情況類似,區塊鏈領域的就業人數同樣處於歷史最高水平。
【如圖】2017年比特幣價格飆升後,招聘數量同比攀升;Covid-19期間,比特幣價格持續上漲,招聘也一直維持這個趨勢
傳統互聯網開發人員已經掌握了許多像Python 、C++、Truffle 、Javascript 、Golang等語言,因此具備Web2 開發技術的人過渡到Web3 還是很容易的。
目前最受開發人員歡迎的區塊鏈除了以太坊,還有Cardano、Solana、Avalanche、Tezos等。這些區塊鏈使用各種編程語言,無論開發人員掌握哪種語言,都會有工作機會。當然,加入大的開發群體會更具優勢,因為他們有更豐富的教程、兼容性庫和其他用於移植dApp 的即插即用工具。當然,如果能掌握多種編碼語言的組合技能的話,區塊鏈開發之路上必定是越走越寬的。
這篇文章主要總結目前比較受重視的一些開發語言,包括在以太坊上使用的Javascript 和Solidity,作為Cardano 原生Plutus 語言基礎的Haskell ,Cosmos 在用的Go,最後是Solana、NEAR 協議和Polkadot 所使用過的Rust。
2. Javascript & Solidity:以太坊
以太坊具有四種專用語言:Serpent (受Python啟發)、Solidity (受JavaScript啟發)、Mutan(受Go啟發) 和LLL (受Lisp啟發),都是為面向合約編程而從底層開始設計的語言。
其中Solidity是以太坊的首選語言,它內置了Serpent的所有特性,語法接近於Javascript,易於被掌握和使用。因為JavaScript已經是Web開發人員的常用語言,因此市場上數以百萬計的開發人員都已經具備了以太坊合約開發的基礎。
作為同是面向對象的語言,Javascript和Solidity 有許多相似之處,但它們的功能卻不同。 Javascript 用於Web 開發已經有一段時間,其代碼增加了Web 顯示的交互性,通過動態用戶體驗和功能為Web 注入新的生命力。
就像網頁和移動應用程序一樣,Javascript 可用於Web3 開發過程中創建dApp, 但值得注意的是,在區塊鏈應用中,需要注意使用web3.js 和ethereum.js這類JavaScript 庫,它們能夠允許用戶通過本地或遠程使用HTTP、IPC 或WebSocket 與以太坊節點進行交互,同時,它們也允許開發人員使用即插即用工具,使dApp 與以太坊兼容。
【如圖】根據數據顯示,掌握Rust、Kotlin、Haskell 和Go 是開發人員理想的技能組合。 (資料來源:HackerEarth 2021 開發者調查)
Solidity 不是一門很複雜的編程語言,很像微縮版的JavaScript,因此對很多開發人員來說更易上手。
儘管Solidity 相對年輕,使用群體也相對年輕,規模相對較小,可重複使用的標準庫也少。但是自2020 年以來,Solidity群體及其代碼庫的發展迅速,截至2021 年底,擁有超過2,000 名活躍的開發人員。加之以太坊仍然是目前最龐大的開發生態,毫無疑問,Solidity 仍然是區塊鏈產業中應用最廣泛的黃金編程語言之一。
隨著以太坊2.0 的出現,將Solidity 與其他語言結合在以太坊上創建dApp 具有很大優勢。這對於許多想要進入Web3 的開發人員來說也是一條捷徑。
3. Haskell:純函數式Web3 編程語
Haskell 是一種通用的函數式編程語言,在區塊鏈的應用中Haskell 通常被定位為Cardano 的智能合約編程語言Plutus 的底層定制語言。
本質上講,Haskell 為描述和評估函數提供了一個理論框架,其中每個函數都是數學意義上的函數,具有高度安全性。在Haskell中,函數執行低層次的任務,並指定程序需完成的任務。同時它是一種靜態類型的語言,代碼在編譯過程中被很容易被評估,所以類型檢查可以確保代碼的簡潔、清晰和正確。
它使用惰性求值,若無必要它就會繞過任何不相關的代碼,程序運行速度更快。另外,開發人員用它編寫也非常便利,因為它利用了自動內存管理(AMM),開發人員在開發他們的dApp 時不需要將內存管理任務寫入代碼中。
截至2021 年,使用Haskell 編程語言的Web3 開發人員屈指可數,尚未被多數開發人員所接受。 Haskell 的掌握門檻較高,Haskell 庫很少,開發人員人數也較少且增長緩慢。但是Haskell在生產高質量的軟件方面起著至關重要的作用,掌握額外的Haskell 對開發人員更容易脫穎而出。
4. Go :Cosmos 和Polygon SD
Go是一種開源的通用編程語言,由Google 軟件開發者於2009 年推出。它是一種顯式的靜態類型語言,Go 想要做的是將Python 這種易於開發的特性和C++ 這種編譯語言的高效特性結合起來。
Cosmos 和Polygon SDK 通常使用Go。它擁有大量的本地庫,並且跨平台並與移動設備兼容。此外,它利用“Goroutines”,使dApp 快速啟動,並在不消耗太多內存的情況下執行任務。 Go 還可以同時運行多個線程,以便在大量使用的情況下高效地執行。
Go的Web3 實例包括Polygon Edge SDK,這是一個用於dApp 和區塊鏈的模塊化框架,用於構建與以太坊兼容的網絡。它將第三方網絡引導到以太坊的區塊鏈上,從而通過他們自己的解決方案傳輸ERC-20 代幣和ERC-721 NFT。以太坊的其他執行可以使用Go Ethereum 客戶端嵌入到Go 中。
Go的學習難度不大,因為Go初始階段的學習符合JS 或C 開發人員的邏輯,同時提供大量的學習資源。如果有C/C++/Java 經驗的開發者掌握起來會更快。
根據2020年Stack Overflow的開發者調查顯示,Go 相當受歡迎,超過62% 的人表示他們喜歡這種語言,並將繼續用它開發。
5. Rust:簡單性、並發性和高效率
早在2015 年,一名前Mozilla 員工就首次發布了Rust,它是一種專注於安全和性能的多範式編程語言,其構建考慮到了速度和效率,這意味著它可以提供零成本的抽象、繼承和功能特性。
Rust 具有驚人的速度和內存效率。它豐富的類型系統和所有權模型保證了內存和線程的安全,從而能夠在編譯時消除許多典型的錯誤。此外,它可以並發(和並行)代碼,快速地處理事務。這為Rust 程序提供了可擴展性,因為它的高吞吐量,所以每秒事務(TPS)處理量比其他語言更多。
零成本抽象確保你使用的抽象幾乎沒有運行時開銷,意味著底層代碼和使用抽象編寫的代碼之間沒有速度差異。零成本的概念也成為了Rust 開發的核心原則。
Rust 還提供了優秀的文檔和簡便的編譯器,這有助於輕鬆診斷問題,提高工作效率。意味著開發人員不需要花太多時間來優化代碼,因為編譯器將會把他們的編譯抽象化。與其他語言相比,用Rust 編寫的應用程序運行得更快,即便是優化後的其他語言代碼,也比不上Rust的運行速度。
此外,Rust可以很好地與其他語言結合使用,從而輕鬆調用另一種語言,反之亦然。這個特性在萬物互聯的網絡中更能凸顯其互操作性價值。
由於這些優勢,2020 年,一項針對開發人員的Stack Overflow 調查顯示,Rust為“最受歡迎的編程語言”,大約86% 的受訪者表示他們希望在未來繼續使用Rust 進行編碼。
Polkadot 的推出及其對Rust 的使用,直接導致Rust 開發人員的職位空缺;Solana 的活躍開發人數自2021年推出以來從大約180 人增加到近1,000 名,增長了近500%,事實表明了Rust 強勁的應用潛力。
【如圖】Rust 最適合高吞吐量和並發操作
6.最後:Rust 是個潛力股
由於Web3 協議在處理數千萬個不可信輸入時需要快速且強大的性能,Rust 具有明顯的優勢。它以閃電般的速度處理功能複雜的任務,同時還減少了與內存、邊界、空變量、初始化變量或整數溢出相關的錯誤。
Rust 具有一定的學習難度,但仍有很多開發人員去學習。使用Rust 可以創建更強大的dApp,它可以減少許多常見的錯誤,使dApp 在發布後按預期運行。它的並發能力正是每秒處理數万甚至數十萬筆交易所需要的,這使得Rust 成為Web3 應用程序和虛擬世界交易的理想選擇。
另一方面,Solidity 提供了一個龐大的群體和以太坊圖書館。這種網絡效應促進了合作,也增加了特定dApp 獲得更多用途的可能性。
每種語言的工作需求量都在呈上升趨勢,而掌握多種語言的開發人員會有更多機會選擇工作。目前,對掌握Solidity 的開發人員的需求非常大,但學習Go、Haskell 或Rust會更具優勢,因為使用它們進行開發的程序員較少,同時這些語言也更受雇主青睞。
(本文以及圖片為【SupraOracles】原創內容,未經賬號授權,禁止隨意轉載)