本文探讨了学习区块链开发的挑战,强调学习Solidity的重要性,无论是对于希望在非EVM区块链上开发的Rust程序员还是初学者。文章详细讨论了区块链与传统编程框架的不同点,并建议先熟悉区块链环境,再深化对Rust的学习,避免同时学习两种新概念。总结了学习路径和资源的选择,强调了方法论的重要性。
一个普遍的误区是认为学习区块链就是学习一种新的编程语言。其实并不是。学习区块链更像是学习一个框架,而不是一种编程语言。
例如,仅仅因为你会用 python 或 go 编程,并不意味着你就自动成为了一个前端开发者,学习 javascript 或 typescript 也不意味着你就是前端开发者。要成为后端开发者,你需要了解像 express js、react js、java spring 等框架。
让我们直奔主题。
即使你知道自己想在使用 Rust 的区块链上开发(如 NEAR、Solana、Elrond 等),你仍然应该先学习 Solidity。
我敢说 如果你已经知道 Rust 并且想在非 EVM 区块链上开发智能合约,你仍然应该学习 Solidity。
Solidity 非常容易学习。它看起来类似于 javascript。只有大约十个经常使用的关键词和类型可能会让人感到陌生。一个相对有经验的开发者通过一个好的 Solidity 教程 和一段长时间无干扰的学习时间,可以在周末变得熟悉 Solidity。RareSkills 的每个学生在一周后都会熟练掌握它。学习这门语言是简单的部分。
Solidity 有一些奇怪之处,这让开发者感到困惑,但许多令人惊讶的特性来自于区块链环境中的意外抽象。
学习区块链环境才是真正的学习,而不是语言本身。
以下是开发者在向区块链过渡时常见的障碍。
移动资金的函数调用一开始感觉笨拙。
哈希映射的行为并不像你预期的那样(这对于以太坊和 Solana 都成立)。
尽管区块链是一个数据库,但与其交互以持久存储数据并不像使用你可能有经验的任何其他数据库。
一些函数的行为像远程过程调用,尽管它们看起来与普通函数相同。
你不能认为计算能力是理所当然的。计算成本快速累积,即使在自称计算能力强大的区块链上也是如此。
开发者(确实)假设 web2 应用程序中的函数默认是受保护的,因为如果没有中间件将它们连接起来,它们只能通过 API 层访问。但在区块链环境中,函数与 API 之间的区别非常模糊,因此访问控制的行为也会有所不同。
从计算成本的角度思考对大多数开发者来说感觉不自然。看似微不足道的代码重安排如何导致执行成本的显著变化,似乎很奇怪。
开发者常常感到惊讶地了解到,NFT 只是一个拥有者和代币 ID 的哈希映射。接受代币存在于智能合约中,而非钱包(对于大多数区块链)需要一些调整。
以上只是部分列表。如果你查看我们提供的课程,我们一般希望学生在处理 Solana 之前先学习 EVM 链(以太坊、Avalanche、Polygon 等)。这种学习顺序并不是因为学习 Solidity 需要四个月时间,绝非如此。
这是因为学习一种全新范式需要时间。
如果你有作为后端开发者尝试快速搭建前端 web 应用的经验,那么你就对第一次在区块链上编程的感觉有所了解。这并不是说你很难理解 javascript,而是框架很难。
区块链与大多数开发者熟悉的几乎每个其他框架都不同。云计算?不同。前端框架?没有共同之处。后端框架?不可能。移动应用开发?别开玩笑了!系统编程?有点,但也不完全。
一旦你掌握了一个框架,在同一类别中学习另一个框架就会更容易。例如,如果你第一次学习前端,Vue js 可能不容易,但如果你已经知道 React js,那么 Vue 将相对简单。Ruby on Rails 和 Django 也可以这样说。
因此,由于学习一个全新框架是具有挑战性的,学习一个有很多有用在线教程的简单框架会更容易。一旦你习惯了新的范式并掌握了框架,你就可以继续学习你真正想学的框架。
如果这是一篇关于“React Native 与 Flutter”的文章,我会说,“掷个硬币;没关系。两者都有很好的资源。”但目前,以太坊与其他智能合约链之间的学习资源差距很大。尽管以太坊有众多适合初学者的教程,但在更高级主题的教育资源方面仍然不足。这一短缺表明,学习新兴区块链的高级主题不会是一帆风顺的!
在你尝试在这个新范式中感到舒适时,拥有很多可以在 StackOverflow 上复制的资源以及在 Google 上能找到的在线教程,使学习过程更快。
花费数小时寻找简单问题的简单答案只会不必要地延长学习过程。
Rust 是一种因奇怪(但有用)概念,如所有权、借用和变量生命周期而闻名的棘手语言。现在再加上对 async 和并发的处理,你就会有一门需要掌握的复杂语言。
幸运的是,区块链使用的 Rust 子集非常小。我的粗略估计是,只有大约 25% 到 30% 的 Rust 实际上被区块链使用,约 10% 到 15% 被广泛使用。因此,如果你掌握了那个重要的 10% 到 15%,Rust 不会成为你在 web3 开发中的障碍。
注意:这适用于 智能合约(或者 Solana 所称的 程序)。如果你是在 Rust 中构建区块链客户端或智能合约工具,你将需要对这门语言更为流利。
你需要知道多少 Rust?如果你能在 Rust 中自如地解决 leetcode 的简单问题,你将能够无过多困难地阅读 Solana 程序。当你遇到知识差距时,你会知道要在 Google 中输入哪些关键词。如何去做取决于你,但我建议从书籍 Programming Rust 中选择特定章节进行阅读,以帮助你了解大纲。但通常的提示适用:不要陷入教程地狱。你是通过实践学习,而不是通过学习、阅读或观看视频。
一般而言,达到前述 Rust 熟练程度大约需要一个月的兼职学习。
但是,即使在这 30 天学习之后,你仍然对区块链范式一无所知。那段时间本可以用于熟悉区块链本身。
无论你做什么,不要试图同时学习区块链和 Rust。你将面临两个不熟悉的概念,并且很难决定要在 Google 中输入什么。
而且,你会觉得自己像这只标志性的狗:
宇宙或任何社会约定没有法律规定你必须在学习 Rust 之前学习 Solidity。如果上面列出的障碍没有阻止你,那就不要让我来告诉你如何生活。另一方面,如果你想学 Rust,完全没有问题。谁会来评价呢?无论你选择哪条道路,你都会成为一个更好的开发者。
然而,听取良好论证的意见建议将比模棱两可、试图避免冒犯任何人的建议要更好。
如果你问我,先学习 Solidity。了解我们的 Rust and Solana Bootcamp 和 Solidity Bootcamp。
最初发布于 2022年11月24日
- 原文链接: rareskills.io/post/solid...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!