哪种编程语言最适合区块链开发
对比 Javascript、C#、C++、Python、Golang、Solidity、Java、Rust 在区块链行业的优劣势和使用场景
原文地址 https://www.blog.duomly.com/which-programming-language-is-the-best-for-blockchain/
区块链安全、快速而且去中心化(并非始终如此,但多数情况确实如此),因此这项技术正迅速进入我们的世界、商业、生活和企业。
数以千计的区块链项目正在开发中,或已经开发完成并部署到互联网上。企业正疯狂寻找新的区块链创意,或尝试改进其他公司已经创造的成果,而这只是区块链技术开始影响世界的起点。
对于我们这些开发者或想进入区块链行业的人来说,这就像梦想成真。我们可以很快找到一份薪资很高、条件很好的工作。不过,这里有一个重要问题。
哪种编程语言最适合区块链开发?
区块链开发领域最流行的几种语言包括 Javascript、C#、C++、Python、Golang、Solidity、Java 和 Rust。
下面我会尝试简要介绍每种语言,分析它们的优点和缺点、从零开始学习的难度,以及哪些区块链项目正在使用它们。
1. Javascript
Javascript 是一种高级解释型编程语言。
对我们来说最重要的是,Javascript 基于原型、具有动态和弱类型特征,也是领先的 Web 技术之一。
过去几年里 Javascript 一直很流行,许多公司为它创建了 angular、react、vue、node.js 等新框架,帮助我们开发代码。
优点
– 面向对象
– 基于原型
– 支持函数式编程
– 非常流行,几乎每家 IT 公司都需要 Javascript 及其框架
缺点
– 动态类型
– 弱类型(但可以使用 typescript 解决这个问题)
学习难度
Javascript 的入门难度较低,我们不需要先把它学得非常深入才能开始工作。
要开始使用 Javascript,只需先学习基础知识,等真正需要时再继续深入。
互联网上有大量课程和教程,不仅涵盖原生 Javascript,也涵盖各种流行框架,这一点对学习很有帮助。
在区块链中的应用
最常见的应用是 web3.js 和 ethereum.js,它们帮助应用的前端连接 Ethereum 网络和智能合约。
另一个常见场景是面向 node.js 的 Hyperledger Fabric SDK。它是大型企业和公司经常使用的庞大框架;如果你喜欢这种工作方式,它可能是不错的选择。
NEO 是另一个可以使用 Javascript 编写合约的热门区块链。它速度很快,每秒甚至可以处理数千笔交易。
知名度稍低但仍很常见的 Javascript 使用场景还包括 Lightning 应用——这是构建在 Bitcoin 区块链之上的超高速网络;另一个是 Raiden Network,它是构建在 Ethereum 区块链之上的高速基础设施。
2. C#
C# 是 Microsoft 在 20 世纪 90 年代末至 21 世纪初创建的高级、编译型、面向对象编程语言。
它与 Java 或 C++ 非常相似;和 Java 一样,C# 代码由类组成并使用继承。
优点
– 支持 .NET
– 比较容易学习
– 非常流行
– 面向对象
– 强类型
– 支持动态代码
缺点
– 对 Linux 的支持没有那么丰富
– 更偏向 Windows 平台
学习难度
对我来说,C# 因为语法和类型系统而比 Javascript 更难学,但它并不像 Go 那样困难和复杂。
此外,大量优质且免费的学习资源使它成为最容易学习的语言之一。
应用场景
C# 用于一些热门区块链项目,其中最著名的项目之一是 NEO,它被称为中国版 Ethereum。
NEO 是一个高速区块链平台,每秒甚至可以处理数千笔交易。
另一个使用 C# 的热门项目是 IOTA。这是一个面向物联网、具有高度可扩展性并支持零手续费交易的 Tangle 类型项目。
3. C++
C++ 是一种强静态类型、高速、面向对象的编译型语言。
C++ 的关键优势是效率很高,而且可以访问硬件。
有趣的是,C++ 于 20 世纪 70 至 80 年代作为 C 语言的扩展而诞生。
优点
– 独立且跨平台
– 高速
– 与 C 相似
– 强静态类型
缺点
代码冗余
不太容易学习
复杂,有时很难调试
不支持垃圾回收
学习难度
C++ 更为复杂,因此比 C 更难学习,而 C 本身的学习难度至少也达到中等或困难。
它绝对不是适合初学者的简单语言。
应用场景
C++ 用于许多热门区块链加密货币和重要区块链项目,例如:
– Bitcoin(最著名的加密货币)
– Ripple(中心化的超高速货币)
– Bitcoin Cash(加密货币)
– Litecoin(加密货币)
– Monero(加密货币)
– EOS(拥有名为 EOS 的自有加密货币的高速区块链网络)
– Stellar(支付网络,其中一位创始人是 eDonkey 的创建者)
– QTUM(Ethereum 和 Bitcoin 的混合体)
– Cpp-ethereum(Ethereum 的 C++ 实现)
4. Python
Python 是一种流行的高级动态类型编程语言。
Python 支持面向对象编程和函数式编程。
这门语言比以前更受欢迎。Python 非常适合开发机器学习和人工智能功能。
IT 巨头通过创建 dialogflow 或 tensorflow 等智能工具和框架来支持 Python。
Python 也是创建聊天机器人时最常被选择的语言之一。
优点
– 非常容易学习
– 有大量现成的库和框架,例如 Django 或 Tensorflow
– 快速
缺点
– 主要用作服务端语言
– 上下文能力没有那么智能
– 库的文档并不总是足够完善
学习难度
Python 非常流行,也经常被选作第一门编程语言。
互联网上有海量教程和课程,使 Python 成为最容易学习的编程语言之一。
应用场景
在区块链行业,Python 用于许多优秀项目。例如,它拥有自己的 Ethereum 实现 pyethereum;我们还可以用它为 NEO 创建合约,也可以为 Hyperledger 创建智能合约。
我还想提到 steempython。它是面向 steemit 的 Python 实现;steemit 是一种流行的社交媒体和内容提供生态系统。
5. Golang
Go 是由 Google 员工创建的静态类型编译型编程语言。
它最初的构想是兼具 Python 那样简单的代码开发体验,以及 C++ 等编译型语言的效率。
优点
– 内存安全
– 垃圾回收
– 极强的类型系统
– 速度极快
– 学会之后开发非常容易
– 可扩展
缺点
– 不太容易学习
– 语言非常年轻,因此社区不算大
– 软件包不如 Python 或 Javascript 丰富
– 一些开发者认为它的语法不清晰、不美观
学习难度
Go 不像 Javascript 那样到处都有优质教程,人们必须更深入地寻找资料;它本身也比较复杂,因此 Go 有很难学习的名声。
不过,这种看法往往来自 Python 或 Javascript 开发者,因为 Go 与这些语言差异很大。
无论如何,如果你有 C++ 或 Java 背景,学习 Go 应该非常容易。
应用场景
与 Golang 相关的项目多到说不完,下面只介绍最流行的几个。
Go 最重要的项目之一是用 Golang 编写的 Go-Ethereum。
另一个用 Go 编写的重要项目是 Hyperledger Fabric,它是最受大企业欢迎的区块链解决方案之一。
面向去中心化网络游戏的有趣项目 Loom Network 也使用 Go 编写其链。知名度较低的项目包括 Btcd——用 Go 编写的 Bitcoin 实现,以及 Gochain——用 Go 编写、速度很快且兼容 Ethereum 的区块链。
最后一个我想介绍的 Golang 项目是 Dero,它是一个高速且注重智能合约隐私的区块链。
6. Solidity
Solidity 是由 Ethereum 开发者创建、面向合约的静态类型语言。
它为 EVM 而创建,是智能合约开发的主要语言,也是 Ethereum 智能合约的首选语言。
优点
– 静态类型
– 非常容易学习
– 流行度增长得非常快
缺点
– 非常年轻
– 社区还不大,因此支持较少
– 不通用(用于 Ethereum 生态系统)
– 非常容易受到攻击
– 很容易犯下严重错误,因此必须非常细致地测试代码
学习难度
Solidity 并不复杂,有点像加入类型等少量变化后的精简版 Javascript(Javascript 项目中也经常使用 typescript 来提供类型)。
因此,有一定经验的 Javascript 开发者可以在几天内学会 Solidity,尤其是在有 duomly.com 等大量交互式教程的情况下。
应用场景
我们使用 Solidity 开发 Ethereum 智能合约。
我没有看到其他使用 Solidity 的项目,但 Ethereum 开发生态系统十分庞大,也是当前区块链开发最重要的组成部分之一,所以 Solidity 是区块链行业最流行的语言之一。
7. Java
Java 是 Sun Microsystems 创建的编译型、强类型、基于对象和类的编程语言。
Java 非常注重面向对象编程,在大型企业中也很流行。
优点
– 独立于操作系统
– 强类型
– 强大的面向对象编程支持
– 庞大的社区和丰富的库
– 比 C 或 C++ 等语言更容易开发
– 无需担心内存分配
– 内存清理简单
缺点
– 运行时需要 Java Virtual Machine
– 比 C++ 或 Go 慢
学习难度
Java 的难度可以和 C# 相比,可能比 Javascript 或 Python 更难,也更复杂;但它非常流行,并且有大量学习资源。
可以明确地说,Java 仍然比 Golang 或 C++ 更容易。
应用场景
Java 在区块链行业非常流行。比较知名的项目包括 IOTA(我在 C# 一节介绍过 IOTA)。热门的 P2P 加密货币和平台 NEM 也使用 Java,NEM 本身就是用 Java 编写的。
其他可以使用 Java 的热门项目包括:
– NEO 合约
– Hyperledger 合约
– IBM blockchain
– BitcoinJ(Bitcoin 的 Java 实现)
– Ethereum
8. Rust
Rust 是一种系统级、编译型、强类型编程语言,自 2009 年起由 Mozilla 负责开发并提供赞助。
Rust 的语法与 C++ 相似。
优点
– 强类型
– 注重安全
– 支持函数式范式
– 像 C++ 一样快
– 基于特征的继承
– 运行环境小
缺点
– 非常难学
– 知名度不高,因此社区不像 Javascript 那样庞大,可用库更少,开发者必须从头重写许多问题的解决方案
– 缺少清晰、标准化的数据库访问方式
学习难度
Rust 的语法与 C++ 相似,所以这门编程语言绝对不容易学习。
此外,它的社区小得多,因此我认为入门门槛很高,可以将学习难度归为困难。
应用场景
有几个非常流行的区块链项目使用 Rust。
其中之一是 Parity,这是一个用 Rust 编写、速度很快且安全的 Ethereum 客户端。
下一个项目或许也是最流行的项目是 Ethereum Classic,它是 Ethereum 遭遇重大黑客攻击后诞生的加密货币。
最后一个用 Rust 编写的项目是 Exonum。Exonum 是注重区块链安全的框架,每秒甚至可以处理数千笔交易。
总结(胜出者)
区块链行业职位数量最多
Blockchain Javascript — 565 个职位
Blockchain Solidity — 424 个职位
Blockchain Python — 394 个职位
Blockchain Go — 361 个职位
Blockchain C# — 301 个职位
Blockchain C++ — 301 个职位
Blockchain Java — 289 个职位
Blockchain Rust — 54 个职位
胜出者:Javascript
薪资最高的职位
为了找出薪资最高的职位,我们筛选了年薪超过 $150k 的范围,并按照使用每种技术的职位数量排序。
结果如下。
Blockchain Javascript — 89 个职位
Blockchain Go — 81 个职位
Blockchain Solidity — 77 个职位
Blockchain Python:71 个职位
Blockchain C# — 61 个职位
Blockchain C++ — 61 个职位
Blockchain Java — 52 个职位
Blockchain Rust — 14 个职位
胜出者:Javascript
容易学习
当然,学习是一件因人而异的事,但不同编程语言的复杂程度有高有低,互联网上的学习资源也有多有少,因此我决定结合个人经验和互联网统计数据进行判断。
研究编程语言难度统计并结合自己的经验后,我可以按以下顺序排列:
Solidity
Python
Javascript
Java / C#
C++
Go
Rust
胜出者:Solidity
综合结果
检查完所有项目后,我们可以选出综合胜出者。
Javascript 始终用于应用的前端,也经常用于后端和中间件,因此它拥有最多的职位总量和最多的高薪职位。
它的学习难度没有那么高,与 Solidity 组合使用时效果很好。当然,前提是 dApp 不会失去流行度。
胜出者:Javascript 和 Solidity。
不过,从我的排名可以看到,所有这些语言都有大量职位,也都有许多薪资优厚的职位。
因此,各语言在职位数量和学习难度上的差异很小。可以说,无论选择其中哪一种语言,你都能很快找到一份很好的工作。









