查看原文
其他

Web3开发有哪些编程语言?怎么选?

传DAO士 2023-07-20

The following article is from SupraOracles Author Supra Labs

传稻士社区:没有好问题,就没有好答案。



为什么Web3应用需要新的编程语言?


哪种新编程语言的开发者最多?


哪种通用编程语言最有前途?


能否用JavaScript开发Web3应用?


‍程序猿过渡到 Web3.0,Solidity 、Go、Haskell 、Rust,应该侧重哪种语言?


01

写在前面

元宇宙、NFT等词虽已耳熟能详,但对于身处该行业的人来说,仍然可以时刻感受到Web3.0 依然在早期阶段,全新的方案、商业模式、概念或想法层出不穷。同时,这个势不可挡的行业浪头创造了巨大的人才需求,区块链开发人员就是众人追捧的香饽饽之一。


 

2021 年,加入 Web3.0 的开发人员比以往任何时候都多,全年有超过 34,000 人加入该行业。与传统金融领域的情况类似,区块链领域的就业人数同样处于历史最高水平。


【如图】2017年比特币价格飙升后,招聘数量同比攀升,一直维持这个趋势

 

传统互联网开发人员已经掌握了许多像 Python 、C++、Truffle 、Javascript 、Golang等语言,因此具备 Web2 开发技术的人过渡到 Web3 还是很容易的。


Web3 和 Web2 应用程序之间的主要区别在于 web3 应用程序与区块链交互并具有基于区块链的后端。


目前最受开发人员欢迎的区块链除了以太坊,还有 Cardano、Solana、Avalanche、Tezos等。这些区块链使用各种编程语言,无论开发人员掌握哪种语言,都会有工作机会。当然,加入大的开发群体会更具优势,因为他们有更丰富的教程、兼容性库和其他用于移植 dApp 的即插即用工具。当然,如果能掌握多种编码语言的组合技能的话,区块链开发之路上必定是越走越宽的。

 

这篇文章主要总结目前比较受重视的一些开发语言,包括在以太坊上使用的 Javascript 和 Solidity,作为 Cardano 原生 Plutus 语言基础的 Haskell ,Cosmos 在用的Go,最后是Solana、NEAR 协议和 Polkadot 所使用过的 Rust。


02

Javascript & Solidity:以太坊


如果你会写JavaScript,那就可以开始进行以太坊Web3应用的开发了。JavaScript 作为全栈开发的编程语言。不仅可以用它编写前端(React、Vue 或 Angular 等框架依然有效),也能借助 Web3.js 和 Ethers.js 等库连接到以太坊区块链,这类 JavaScript 库能够允许用户通过本地或远程使用HTTP、IPC 或 WebSocket 与以太坊节点进行交互,同时,它们也允许开发人员使用即插即用工具,使 dApp 与以太坊兼容。



【如图】根据数据显示,掌握 Rust、Kotlin、Haskell 和 Go 是开发人员理想的技能组合。资料来源:HackerEarth 2021 开发者调查


但是,以太坊还具有四种专用语言:Serpent (受Python启发)、Solidity (受JavaScript启发)、Mutan (受Go启发) 和 LLL (受Lisp启发),都是为面向合约编程而从底层开始设计的语言。其中 Solidity是以太坊的首选语言,它内置了Serpent的所有特性,语法接近于Javascript,易于被掌握和使用。

 

为什么JavaScript已经能用,却还要创建新的合约语言呢?


因为每种编程语言都是为特定的操作环境和目标任务而设计的,而这些约束推动了几乎所有设计决策:支持哪些功能和舍弃哪些功能。

 

Solidity 很像微缩版的 JavaScript,因此对很多开发人员来说更易上手。市场上掌握了JavaScript语言的开发人员数以百万计,他们都已经具备了以太坊合约开发的基础。


Solidity比起Javascript有很多不同:


以太坊底层基于账户,而不是UTXO,所以增加了一个特殊的address数据类型用于定位外部账户(EOA)和合约账户,智能合约放在合约账户中。


语言内嵌框架支持支付。提供了payable等关键字,可以在语言层面直接支持支付。


使用区块链进行数据存储。数据的每一个状态都可以永久存储,所以在使用时需要确定变量使用的是内存还是区块链存储。


运行环境是在去中心化的网络上,所以需要强调合约或函数执行的调用方式。


不同的异常机制。一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。


而且,如果觉得配置编程环境觉得麻烦,直接可以用浏览器版本的IDE开发环境Remix(https://remix.ethereum.org/ 


尽管 Solidity 相对年轻,使用群体也相对年轻,规模相对较小,可重复使用的标准库也少,但自 2020 年以来,Solidity群体及其代码库的发展迅速,截至 2021 年底,拥有超过 2,000 名活跃的开发人员。加之以太坊仍然是目前最庞大的开发生态,毫无疑问,Solidity 仍然是区块链产业中应用最广泛的黄金编程语言之一。

 

随着以太坊 2.0 的出现,将 Solidity 与其他语言结合在以太坊上创建 dApp 具有很大优势。这对于许多想要进入 Web3 的开发人员来说也是一条捷径。


03

Haskell:纯函数式 Web3 编程语

Haskell 是一种通用的函数式编程语言,在区块链的应用中 Haskell 通常被定位为 Cardano 的智能合约编程语言 Plutus 的底层定制语言。


由于 Haskell 的安全性非常高,通过类型检查的程序基本就不会出问题,而且非常适合高并发,这些特性应用在区块链上简直是完美。


 

本质上讲,Haskell 为描述和评估函数提供了一个理论框架,其中每个函数都是数学意义上的函数,具有高度安全性。在Haskell中,函数执行低层次的任务,并指定程序需完成的任务。同时它是一种静态类型的语言,代码在编译过程中被很容易被评估,所以类型检查可以确保代码的简洁、清晰和正确。

 

它使用惰性求值,若无必要它就会绕过任何不相关的代码,程序运行速度更快。另外,开发人员用它编写也非常便利,因为它利用了自动内存管理 (AMM),开发人员在开发他们的 dApp 时不需要将内存管理任务写入代码中。

 

不过,Haskell 的掌握门槛较高,Haskell 库很少,开发人员人数也较少且增长缓慢,但Haskell在生产高质量的软件方面起着至关重要的作用,掌握额外的Haskell 对开发人员更容易脱颖而出。


04

Go :Cosmos 和 Polygon SD

Go 是一种开源的通用编程语言,由 Google 软件开发者于 2009 年推出。它是一种显式的静态类型语言,Go 想要做的是将 Python 这种易于开发的特性和 C++ 这种编译语言的高效特性结合起来。


以太坊和超级账本都选择使用Go作为开发语言;这两大超级区块链的影响力很大,不仅在生态中占据了大的坑位,事实上还隐性的制定了区块链的标准。不论是公链中的智能合约,还是联盟链的技术,都绕不开以太坊和Fabric。



对于一家想要做区块链技术选型的公司来说,最快捷的实现是什么?


自然是直接照搬这两个项目的创新,再捷径一点就是直接拿开源代码改,那么自然Go语言就成为后来者的首选,换种语言重新实现一遍难度也不小,而且如果选择一些创新但不是非常成熟的语言还会缺失一些特定库的支持从而导致项目无法开展。

 

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% 的人表示他们喜欢这种语言,并将继续用它开发。

05

Rust:简单性、并发性和高效率


Rust 可能是智能合约开发最有效的编程语言,由于 Web3 协议在处理数千万个不可信输入时需要快速且强大的性能,Rust 具有明显的优势。它以闪电般的速度处理功能复杂的任务,同时还减少了与内存、边界、空变量、初始化变量或整数溢出相关的错误。

Rust 语言允许程序员在没有任何麻烦或微管理的情况下控制底层细节,提供了技术能力和编码经验的良好平衡点。


最重要的是,Rust 通过实时编译器实现了一流的速度和稳定性。因此,这种语言符合区块链开发的所有主要需求。


所以,Rust为项目团队以及希望为该协议做出贡献的开放源码开发人员提供了高效的协作工作。


早在 2015 年,一名前 Mozilla 员工就首次发布了 Rust,它是一种专注于安全和性能的多范式编程语言,其构建考虑到了速度和效率,这意味着它可以提供零成本的抽象、继承和功能特性。


近两年的很多公链比如波卡,Grin都开始采用Rust语言开发了。

 

Rust 具有惊人的速度和内存效率。它丰富的类型系统和所有权模型保证了内存和线程的安全,从而能够在编译时消除许多典型的错误。此外,它可以并发(和并行)代码,快速地处理事务。这为 Rust 程序提供了可扩展性,因为它的高吞吐量,所以每秒事务 (TPS)处理量比其他语言更多。

 

零成本抽象确保你使用的抽象几乎没有运行时开销,意味着底层代码和使用抽象编写的代码之间没有速度差异。零成本的概念也成为了 Rust 开发的核心原则。

 

Rust 还提供了优秀的文档和简便的编译器,这有助于轻松诊断问题,提高工作效率。意味着开发人员不需要花太多时间来优化代码,因为编译器将会把他们的编译抽象化。与其他语言相比,用 Rust 编写的应用程序运行得更快,即便是优化后的其他语言代码,也比不上Rust的运行速度。

 

此外,Rust 可以很好地与其他语言结合使用,从而轻松调用另一种语言,反之亦然。这个特性在万物互联的网络中更能凸显其互操作性价值。


Rust 具有一定的学习难度,但仍有很多开发人员去学习。使用 Rust 可以创建更强大的 dApp,它可以减少许多常见的错误,使dApp 在发布后按预期运行。它的并发能力正是每秒处理数万甚至数十万笔交易所需要的,这使得 Rust 成为 Web3 应用程序和虚拟世界交易的理想选择。


由于这些优势,2020 年,一项针对开发人员的 Stack Overflow 调查显示,Rust 为“最受欢迎的编程语言”,大约 86% 的受访者表示他们希望在未来继续使用 Rust 进行编码。

 

Polkadot 的推出及其对 Rust 的使用,直接导致 Rust 开发人员的职位空缺。同时至 2021 年底,Solana 的活跃开发人数已从大约 180 人增加到近 1,000 名,增长了近 500%。表明了 Rust 强劲的应用潜力。 

Rust 最适合高吞吐量和并发操作。


06

总结


在Web3大量增长的现在,每种语言的工作需求量都在呈上升趋势,而掌握多种语言的开发人员会有更多机会选择工作。目前,对掌握 Solidity 的开发人员的需求非常大,Solidity 提供了一个庞大的群体和以太坊图书馆。这种网络效应促进了合作,也增加了特定 dApp 获得更多用途的可能性。


另一方面,学习 Go、Haskell 或 Rust 会更具优势,因为使用它们进行开发的程序员较少,同时这些语言也更受雇主青睐。



读完了,请你思考下列问题:

1 作为Web2程序员,应该如何上手做第一个dApp?

2 怎样从Web3的开源代码中学习?

3 在区块链上,dApp的测试该怎么做呢?

4 为Web3公司工作,假如是远程工作形式,该如何协作?

关注传DAO士,获得更多Web3有关的知识
推荐学习《芝麻开门吧,Web3入门10日谈》系列的10个主题,本文是主题3 区块链的第六篇,请持续关注。1 加密货币 2 数字钱包 3 区块链 4 NFT 5 DAO6 Web3 7 GameFi 8 DeFi 9 虚拟人 10 元宇宙
跟NFT、Web3和区块链相关的文章列表什么是NFT 2.0?为啥说动态NFT是未来?与现实场景怎么结合?
买 NFT,实际是在买什么?
解读上海市数字经济发展规划:启动 NFT 交易平台的令箭 ?
创建1年值50亿美元,出品无聊猿NFT的YugaLabs,就像Web3的罗马
NFT精神史:罐头、青蛙和平凡人的15分钟英雄梦想
天价 NFT 是庞氏骗局吗?有什么具体价值?
为什么说大部分 Web3 创业者在犯错?- Web3 创业的28个原则区块链的下半场,与 NFT 无关?为什么说中国 Web3 的机遇巨大?
为什么说大部分 Web3 创业者在犯错?- Web3 创业的28个原则
Token 经济是 Web3 应用必须的吗?
为什么说 DAO的本质是可编程组织?怎么做?
数字人民币的真正意义是什么?会带来哪些机会?
从暴雪到GameFi?谁的未来更灿烂?边玩边赚是扯淡吗?为什么总是会出现死亡螺旋?做个明白人,一文弄懂Web 进化简史:从文档互联到价值互联Token 经济是 Web3 应用必须的吗?
Web3 的本质是什么?为什么它不是下一代互联网?
下一个加密牛市新叙事的10大关键词预测
北大博士10分钟科普:Web3到底是咋回事?
为什么说 Web3 的今天,相当于互联网的 1993 年?
小白如何赢在Web3的起跑线上?
区块链是什么?人们是怎么挖矿的?
什么是智能合约?代币(Token)是怎么造出来的?
送你几个存有以太币的钱包、以及它们的密码假如你对Web3有兴趣,或需要跟DAO这种组织方式相关的知识,请去“传DAO士”社区索取,一群研究DAO实践DAO的人等着你,点“查看原文”看社区介绍。

欢迎扫码申请加入“传DAO士”社区,提高认知,结交志同DAO合的好友。

长按扫码!加微信

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存