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