區塊鏈技術由于其安全、快速以及去中心化的特性(雖然不是所有項目都滿足這些特性,但是大多數項目是符合的)已經迅速滲透到了各種業務場景、我們的生活以及身邊的企業中。
數以千計的區塊鏈項目正在開發,或者已經開發完成并且部署到了網絡中。各個企業都在尋求區塊鏈的新點子或者試圖去改進其他公司正瘋狂創造的東西,然而這僅僅是區塊鏈技術驅動這個世界的開始。
作為開發者來說,在區塊鏈行業找到一個薪水高、待遇好的工作是讓人夢寐以求的。因此,這就引出了一個很重要的問題:
哪種編程語言最適合區塊鏈?
在區塊鏈開發圈子里,我們找到了一些流行的編程語言,有 JavaScript、C#、C++、Python、Golang、Solidity、Java 和 Rust。
接下來我會簡短介紹一下這些編程語言,它們都有哪些優缺點,上手難度以及哪些區塊鏈項目在應用這些語言。
1. JavaScript
JavaScript 是一門解釋型高級編程語言。
JavaScript 是基于原型編程的動態弱類型語言,是出眾的 Web 技術之一。
JavaScript 在近些年非常流行,像 Angular、React、Vue、Node.js 這些流行的開發框架都是基于 JavaScript 的。
優點
面向對象
原型編程設計
支持函數式編程
非常流行,幾乎所有 IT 公司都需要 JavaScript 框架
缺點
動態語言
弱類型(但是可以使用 TypeScript 解決這個問題)
上手難度
JavaScript 屬于一種入門難度比較低的編程語言,我們甚至不需要深入進行學習就能將其應用于生產。
使用 JavaScript 進行編程,我們只需要學習一下基本知識,當有需要的時候再去深入了解就好。
目前,在網上有非常豐富的課程和教程能夠幫助我們學習 JavaScript,不僅僅可以學習 JavaScript 這門語言,還可以學習很多流行的開發框架。
區塊鏈應用
最著名的應用是 web3.js 和 ethereum.js 這兩個 JavaScript 庫,他們能夠幫助開發者在前端應用中和以太坊網絡以及智能合約進行交互。
開發者用到的比較多的另外一個 JavaScript 庫是基于 node.js 的 Hyperledger Fabric SDK。Hyperledger Fabric SDK 在大公司和企業中應用比較廣泛。
JavaScript 另外一個在區塊鏈智能合約方面的應用場景是 NEO。NEO 是一個高效的區塊鏈公鏈,能夠每秒處理數以千計的交易。
另一個使用也比較頻繁但是不那么著名的 JavaScript 應用是閃電應用,它是構建于比特幣網絡上的快速支付通道。還有一個我想提的是 Raiden 網絡,它是構建于以太坊網絡之上的高速基礎架構設施。
2.C-Sharp
C# 是一門 20 世紀 90 年代末創造出來的高級面向對象編譯型編程語言,20 世紀初為 Microsoft 所開發。
它是一門非常類似于 C++ 或者 Java 的編程語言,采用了類集合和繼承。
優點
支持 .NET
比較易于上手
流行度高
面向對象
強類型語言
動態代碼支持
缺點
欠缺 Linux 系統支持
面向 Windows 開發者
上手難度
對于我來說,C# 由于其語法和強類型,不像 JavaScript 那么簡單易學,但是也不像 Go 語言學起來那樣困難和復雜。
除此之外,也有比較豐富的學習資源和材料使得這門編程語言比較易于學習。
應用場景
C# 在許多區塊鏈項目中都有應用,其中最著名的是 NEO 公鏈,它號稱中國版的以太坊。
NEO 是一個高效的區塊鏈平臺,每秒可處理的交易數量可達數千條。
另外一個流行的使用 C# 的區塊鏈項目是 IOTA,它面向的場景是物聯網,它是一個具有高拓展性以及 0 交易手續費的公鏈項目。
3. C++
C++ 是一門強類型的、高效的、面向對象的編譯型語言。
重要的是,C++ 是一門非常高效并且能夠對硬件進行訪問的語言。
有趣的是,C++ 是在上世紀 70 年代~80 年代發明出來的,當時是作為 C 語言的擴展。
優點
獨立和多平臺
運行高速
和 C 語言類似
強靜態類型
缺點
代碼冗余程度高
不易學習
調試復雜
不支持垃圾回收機制
上手難度
由于 C++ 比 C 語言要更復雜,所以學起來也更困難。
對于初學者來說,C++ 確實是一門不那么易于學習的編程語言。
應用場景
C++ 在許多著名的區塊鏈加密貨幣以及重要的區塊鏈項目中得以應用:
比特幣(最著名的加密貨幣)
瑞波幣(中心化高速加密貨幣)
比特幣現金(加密貨幣)
萊特幣(加密貨幣)
門羅幣(匿名加密貨幣)
EOS(高速區塊鏈網絡,其中的系統加密貨幣也叫做 EOS)
Stellar(支付網絡,其中一位創始人是 eDonkey 的創始人之一)
QTUM(某種意義上來說,它是以太坊技術和比特幣技術的結合)
Cpp-ethereum(C++ 實現的以太坊客戶端)
4. Python
Python 是一門流行的動態類型的高級編程語言。
Python 也支持面向對象編程以及函數式編程。
這門編程語言比起以前更加流行了,在機器學習以及人工智能方面的開發中表現非常出眾。
許多 IT 巨頭使用 Python 開發了許多智能工具和框架(比如 dialogflow 以及 TemsorFlow)。
在開發聊天機器人時,Python 也是一門被選用比較廣泛的語言。
優點
非常易于學習
有很多現成的庫和框架,比如 Django 或 Tensorflow
快
缺點
通常被用于服務端
上下文環境不那么智能
各種類庫的文檔并不足夠完善
上手難度
Python 非常流行并且經常被選為第一門用于入門的編程語言。
互聯網上有非常豐富的教程和課程,使得 Python 這門語言非常易于學習。
應用場景
Python 在許多優秀的區塊鏈項目中得到應用,比如說有使用 Python 實現的以太坊客戶端。我們也能用 Python 在 NEO 和 Hyperledger 上部署智能合約。
另一個我想要提到的是:steempython。它是 steemit 的 Python 實現版本,steemit 是一個流行的社交媒體、內容提供生態。
5. Golang
Go 是由 Google 員工發明的一門靜態類型的編譯語言。
Go 想要做的是將 Python 這種易于開發的特性和 C++ 這種編譯語言的高效特性結合起來。
優點
內存安全
垃圾回收機制
強類型語言
運行速度快
學會之后,開發易于上手
可擴展性強
缺點
學習起來不那么容易
非常年輕的語言,社區規模不大
不像 Python 或者 JavaScript 有眾多庫和開發包
對于一些開發者來說,Go 語言的語法不清晰甚至有些丑陋
上手難度
Go 語言在互聯網上沒有那么多像 JavaScript 教程這樣多隨處可見的好教程,人們不得不更深入地尋找一些學習資料,而且 Go 是一門復雜的語言,所以大家普遍覺得它是一門難學的語言。
其實,這個觀點更多的是來自于 Python/JavaScript 開發者,因為 Go 語言和這些語言的差異的確很大。
如果你之前學習過 C++ 或者 Java,學習 Go 語言對你來說應該會比較輕松。
應用場景
和 Golang 相關的區塊鏈項目非常之多,我這里只介紹一些最流行的。
Go 語言編寫的最著名的一個項目是 Go-ethereum,它是一個 Go 語言編寫的以太坊客戶端。
另一個著名項目 Hyperledger Fabric 項目也是使用 Go 語言來實現的,Hyperledger Fabric 是一個可以為大公司提供區塊鏈解決方案的項目。
Loom Network 也是用 Go 編寫的一條鏈,它目標的方向是為去中心化在線游戲提供解決方案。不那么出名的項目還有 Btcd,它是比特幣的 Go 語言實現版本。還有一個項目叫做 Gochain,它是一個用 Go 實現的與以太坊兼容的區塊鏈項目。
除此之外,我還想介紹的一個項目是 Dero,它也是用 Go 實現的一個高效的區塊鏈項目,目標是解決智能合約的隱私性問題。
6. Solidity
Solidity 是一門面向智能合約的靜態類型語言,它是由以太坊開發者發明的。
它是為 EVM (以太坊智能合約執行虛擬機)而生的,是智能合約開發的主要編程語言,也是以太坊智能合約的主要編程語言。
優點
靜態類型語言
易于學習
使用人群增長迅速
缺點
非常年輕的一門語言
社區規模小,能夠得到的支持比較少
不通用(僅用于以太坊生態)
非常脆弱(易被攻擊)
非常容易犯關鍵性錯誤,因此需要反復對代碼進行全面測試
上手難度
Solidity 不是一門很復雜的編程語言,而且和 JavaScript 很類似,像是加入了類型特性的 微縮版的 JavaScript(在 JavaScript 項目中使用 TypeScript 來加入類型這一特性也是很常見的)。
因此許多有經驗的 JavaScript 開發者能在幾天之內就學會 Solidity,尤其是當 duomly.com 這樣的網站提供了許多交互式學習教程之后,學習 Solidity 就變的更容易了。
應用場景
我們通常使用 Solidity 來開發以太坊的智能合約。
我沒有看到其他項目有使用 Solidity 的,但是目前以太坊的開發生態是一個很龐大的生態,是區塊鏈開發領域中非常重要的組成部分,因此,Solidity 也是區塊鏈產業中應用最廣泛的編程語言之一。
7. Java
Java 是一門強類型的、基于類的編譯型編程語言,它是由 Sun Microsystems 開發的。
Java 是面向對象的語言,在大公司之中很流行。
優點
跨平臺,不依賴操作系統
強類型語言
對面向對象編程支持非常友好
社區龐大并且類庫豐富
比起 C、C++ 開發更容易
具有垃圾回收機制
內存清理容易
缺點
需要 Java 虛擬機運行環境
比 C++ 和 Go 慢
上手難度
Java 和 C# 難度相當,比 JavaScript 或者 Python 稍難一些,也更復雜一些。但 Java 是一門非常流行的編程語言,有很多學習材料。
一般來講,Java 比 Golang 和 C++ 都簡單一些。
應用場景
Java 語言在區塊鏈行業中是很流行的,比較流行的項目 IOTA(在 C# 那部分內容已經介紹了 IOTA)用到了 Java。一個比較有名的 P2P 加密貨幣平臺 NEM 也用到了 Java(NEM 是使用 Java 編寫的)。
還有一些用到 Java 的區塊鏈項目有:
Neo 的智能合約
Hyperledger 的智能合約
IBM 區塊鏈
BitcoinJ(比特幣的 Java 實現)
以太坊
8. Rust
Rust 是一個系統級、強類型的編譯型編程語言,自 2009 年以來,Mozilla 一直在對 Rust 進行開發和贊助。
Rust 的語法類似于 C++。
優點
強類型語言
安全
支持函數式編程
和 C++ 一樣快
基于特征的繼承
運行環境精簡
缺點
學習難度大
不是特別有名,因此社區規模不大,可用類庫不多,因此經常需要開發者從頭開始寫代碼解決一些問題
沒有清晰的標準方式對數據庫進行訪問
應用場景
并沒有特別多的區塊鏈項目用到了 Rust。
其中一個用的 Rust 的項目是 Parity,它是一個 Rust 編寫的以太坊客戶端,它運行速度快并且很安全。
另一個流行的項目是以太坊經典,這個項目的產生源于以太坊歷史上一次重大的黑客事件,它是從以太坊分叉產生出來的加密貨幣項目。
介紹的最后一個項目是 Exonum,它是一個面向區塊鏈安全的框架,它每秒鐘能處理上千條交易。
總結(獲勝者)
不同編程語言在區塊鏈行業中的工作招聘數量:
JavaScript:565 份
Solidity:424 份
Python:394 份
Go:361 份
C#:301 份
C++:289 份
Java:289 份
Rust:54 份
JavaScript 勝出
工作待遇排名:
為了獲取到最優工作待遇的排名,我們挑出了各個編程語言的工作機會中薪水年薪超過 15 萬美金的招聘信息,以數量多少的形式進行了排名。
結果如下:
JavaScript:89 份
Go:81 份
Solidity:77 份
Python:71 份
C#:61 份
C++:61 份
Java:52 份
Rust:14 份
JavaScript 勝出
易學性排名
盡管學習是非常有個體性差異的事情,但是編程語言或復雜或相對簡單,互聯網上的學習資源也良莠不齊,因此,我決定根據我的個人經驗和互聯網統計數據進行一個排名。結論如下:
1. Solidity
2. Python
3. JavaScript
4. Java / C#
5. C++
6. Go
7. Rust
Solidity 勝出
綜合排名
在列出了以上的關鍵點之后,我們可以結合這幾項選出一個綜合排名最高的語言了。
由于 JavaScript 廣泛用于前端應用中,在后端和中間件中也有不少應用,同時也是工作機會最多的以及工作待遇最好的,理應勝出。
易于學習對于 Solidity 來說是一個明顯優勢,直到 dApp 不再流行之后,Solidity 的熱度可能會銳減。
優勝者:JavaScript 和 Solidity
然而,如果你仔細查看排名,你會發現所有的語言都有不少工作機會,而且很多工作機會的薪水都很不錯。
對于不同語言來講,工作機會的數量和語言難度的差異并不大,因此我可以負責任的告訴你,使用其中任何一門編程語言,你都可以在區塊鏈行業很快找到一份好工作。
責任編輯;zl
評論
查看更多