{ 跳到内容 }

Solidity 开发者调查 2020 年结果

由 Franziska Heintel 于 2021 年 1 月 26 日发布

公告

在我们深入研究结果之前,我们要感谢所有参与首届 Solidity 开发者调查的 Solidity 开发者,我们在去年年底进行了这项调查!

我们对提交的高质量内容感到惊讶,很高兴能从您的意见中提取重要见解。

在这篇文章中,我们将总结和评论调查结果。

请注意,调查中的问题都不是强制性的。因此,每个问题的回复数量可能会有所不同。

总结和重要见解

  • 调查受众:来自世界各地的 193 位开发者参与了这项调查,他们来自 48 个不同的国家。大约 20% 的受访者住在美国,其次是印度 (8%) 和德国 (7%)。大多数受访者在工作中使用英语。
  • 开发者资料:大约 65% 的受访者使用 Solidity 超过一年,其中 43% 是“Solidity 专业人士”,具有 2 年或更长时间的语言使用经验。从受访者的整体编码资历来看,似乎相当多的 Solidity 用户在其他编程语言方面经验丰富,而不是使用 Solidity 首次学习编程。
  • Solidity 经验:43% 的受访者认为自己是 Solidity 专家,其专业水平为 8(满分 10 分)或更高。
  • Solidity 开发者体验:虽然注意到还有很多需要改进的地方,但总体而言,对 Solidity 的看法是积极/好的。大多数受访者认为,在过去的一年里,Solidity 开发者体验有所改善或极大改善。
  • Solidity 的挑战:对于大多数受访者而言,开发者体验中最大的挑战是工具的可用性和质量。错误处理、IDE 集成和更好的文档也被视为推动采用至关重要的方面。
  • 最喜欢、最反感和最期待:经常提到的需要改进的主题包括:错误处理、调试、对更多工具和库的需求以及依赖项中断。
  • 贡献和语言设计:令人惊讶的是,开发者对语言设计主题的兴趣和参与度很低,部分原因是开发者不知道如何参与,或者是因为他们没有兴趣。(我们会努力解决这个问题!促进协作语言设计的工作正在进行,我们很快就会分享更多信息。)
  • 社区:参与这项调查的受访者中,近 17% 的人从未与其他 Solidity 开发者进行过互动!

(1) 调查受众和开发者资料

首先,让我们看一下参与调查的开发者。总的来说,我们收到了来自 48 个不同国家的 193 份回复。

Survey Participants World Map

居住地

⚠️ 请注意,这项调查只以英语发布,这是在解释有关语言和居住国的结果时需要考虑的重要因素。

受访者表示他们住在阿尔及利亚、阿根廷、澳大利亚、奥地利、比利时、巴西、保加利亚、加拿大、中国、哥斯达黎加、丹麦、芬兰、法国、德国、加纳、希腊、洪都拉斯、香港、印度、印度尼西亚、伊朗、爱尔兰、以色列、意大利、日本、立陶宛、马来西亚、墨西哥、荷兰、新西兰、尼日利亚、巴基斯坦、菲律宾、波兰、葡萄牙、罗马尼亚、俄罗斯、塞尔维亚、新加坡、南非、西班牙、瑞士、台湾、泰国、东帝汶、乌克兰、英国和美国。

大约 20% 的受访者住在美国,其次是印度 (8%) 和德国 (7%)。

Survey Participants List of Countries

语言

开发人员使用各种不同的语言作为他们的主要语言,其中英语是迄今为止最受欢迎的语言。德语、西班牙语、俄语和法语紧随其后,使用率相似。

Primary Language

86% 的受访者在工作中使用英语。

几乎 90% 的受访者可以接受阅读英语版的 Solidity 文档,而大约 10% 的受访者希望将其翻译成他们的母语。尽管一些选择“母语”的受访者表示英语是他们的主要语言,这使得 95% 的参与者更喜欢用英语阅读文档。

请记住,这项调查只以英语进行,这极大地影响了这个问题的结果。因此,该结果对 Solidity 文档的改进翻译工作的影响不会太大,我们将进一步调查这一主题。

Language at Work

Documentation Language

就业

82% 的受访者表示他们目前受雇。4% 的受访者表示自己是学生,而 14% 的受访者表示目前没有工作。

Employment Status

行业

大多数受访者 (68%) 表示他们在科技行业工作。14% 的受访者在金融服务行业工作。能源、医疗保健、创意、媒体和游戏以及交通运输行业也是常见的选择,尽管比例较小。

Industry Overview

编码经验

受访者的整体(非 Solidity 相关)专业编码经验令人印象深刻。大约 48% 的受访者表示,他们在工作中从事编码工作 6 年或更长时间。只有大约 7% 的受访者表示他们拥有不到 1 年的编码经验。

Professional Coding Experience

操作系统

有趣的是,Linux 和 macOS 似乎同样受欢迎,两者都获得了大约 40% 的受访者投票。大约 18% 的受访者使用 Windows,虽然其中一部分用户也表示除了 Windows 外,他们还使用其他操作系统。此外,也有许多开发者使用 Linux 和 macOS,甚至所有三种操作系统。

Operating System

Solidity 使用情况

几乎所有受访者都在工作之外的个人项目中使用 Solidity (93%)。超过一半的受访者 (68%) 也表示他们在工作中使用 Solidity,或者在工作中用其他编程语言进行编码。

27% 的受访者表示他们管理着一个编程团队,而 8% 的受访者是学生。

Solidity Usage

开源代码

令人惊讶的是,大多数受访者 (61%) 很少甚至从未为用 Solidity 编写的开源项目做出贡献。21% 的受访者表示,他们每天都会参与其中。

Open-Source Coding

编码偏好

我们询问了参与者在选择编程语言时最看重什么。这个问题有一个自由文本回复字段,因此我们将回复分类到总体类别中。

许多受访者表示,最重要的方面是编程语言必须适合任务,并且必须“完成工作”。

排名非常高的还有工具、文档和社区,其次是语言的安全性、库、优质资源和学习资料的可用性以及清晰或熟悉的语法。

不太常被提及,但仍然很重要,是描述性错误信息 / 良好的调试、可读性、性能和强类型。

其他被多次提及的方面包括可用性、生产力/效率、便利性、表现力、维护和支持、简单性、良好的开发者体验和鲁棒性(规模化)。

Coding Preferences

最喜欢的编程语言

当被问及他们最喜欢的编程语言是什么时,大多数受访者表示是 JavaScript (40),其次是 Python (33) 和 Solidity (30)。其他受欢迎的编程语言包括 TypeScript (19)、Go (15) 和 Rust (14)。

Favorite Programming Language

最常用的编程语言

大多数受访者最常使用 JavaScript (36%),其次是 Solidity (21%) 和 TypeScript (11.5%)。其他被多次提及的语言包括 Python (9%)、Go (5%)、C++ (3%) 和 Java (3%)。

Most Used Programming Language

(2) Solidity 学习历程

接下来,我们想了解更多关于每个受访者的个人学习历程。虽然大多数受访者在不到半年时间内就能够高效工作,但相当一部分人 (17%) 仍然没有达到高效工作状态。

Productivity Learning

学习

对于大多数受访者而言,Solidity 文档 是最主要的学习材料和主要资源。

阅读大型项目的开源 Solidity 代码以及观看编码教程视频的做法被经常提及。

另一种开始学习 Solidity 的常用方法是CryptoZombies 编码游戏。

许多受访者使用 Ethereum StackExchange 来查找问题的答案。

Udacity、Udemy 和大学课程等大规模开放式在线课程 (MOOC) 被许多受访者提及,其次是积极的编码方法,例如使用 RemixOpenZeppelin 合约 进行“边学边做”以及通过 ConsenSys 学院 学习。

Primary Learning Resources

解决问题

遇到 Solidity 问题时,大多数 Solidity 开发者会访问 Ethereum StackExchange 寻求帮助。

其他常见的解决方案包括向朋友或同事寻求帮助、观看教程视频或做其他工作,稍后再尝试解决问题。

Problem Solving

当被问及开发者是否会反复遇到类似的问题时,大多数受访者回答“不”,或者解释说随着经验的积累和使用,一旦他们知道如何解决问题,就不会再反复遇到相同的问题。

以下问题被提及仍然会定期出现或令人讨厌

  • 堆栈过深错误。
  • 错误信息无法指出问题的根源。
  • 燃气不足错误。
  • 编译错误。
  • 工具问题。
  • 验证困难。
  • 重大更改和依赖项中断。

(3) 了解 Solidity 开发者体验

Solidity 使用情况

大约 65% 的受访者使用 Solidity 超过一年,其中 43% 是真正的 Solidity 专业人士,具有 2 年或更长时间的语言使用经验。

有趣的是,相当一部分人 (35%) 刚刚开始使用 Solidity,使用时间还不到 12 个月。

从受访者的整体编码资历来看,该数据表明大多数 Solidity 开发者是在其他编程语言方面有经验的开发者,而不是首次使用 Solidity 学习编程的人。

Solidity Usage

43% 的受访者认为自己是 Solidity 专家,其专业水平为 8(满分 10 分)或更高。只有 10% 的受访者将自己归类为初学者,其专业水平为 3 分或更低。

Expertise

大多数受访者每周 (31%) 甚至每天 (41%) 都使用 Solidity。近 18% 的受访者每月使用一次,而剩下的 9% 的受访者表示他们很少使用 Solidity 进行编码。

Frequency of Usage

大多数受访者目前使用的是 Solidity 的 0.6.x 或 0.7.x 版本。一小部分人仍在使用 0.5.x 版本,或已经尝试过最近发布的 0.8.0 版本。

一些人不知道他们使用的版本,或者仍在使用 0.4.x 系列的非常旧的版本。

🚨 请确保经常更新您的代码,因为自 0.4.x 版本以来,已添加了一些重要的错误修复 和安全改进!

Versions Used

IDE/工具

50% 的受访者表示他们使用 VSCode 作为首选编辑器来编写 Solidity。第二受欢迎的编辑器是 Vim(12.6%),其次是 Remix(9.2%)、IntelliJ(8.8%)和 Atom(7.1%)。

IDEs / Tooling

当被问及他们是否使用以太坊特定的开发环境时,5% 的人说他们没有使用。Truffle 最受欢迎,几乎占 60%,紧随其后的是 Remix(50.3%)和 Hardhat(38.6%)。

Ethereum-specific IDEs / Tooling

总体 Solidity 开发者体验

大约 62% 的人认为,在过去的一年里,Solidity 开发者体验有所改善或甚至有了很大改善。15% 的人认为有所改善,而只有 9% 的人认为没有变化或 Solidity 开发者体验变得更糟。

Overall Developer Experience

对于大多数受访者来说,开发者体验中最大的挑战是工具的可用性和质量。

其他被视为促进语言采用的关键方面是:错误处理、IDE 集成和更好的文档。

投票率较低但仍然相关的方面包括:语言复杂度的增加、泛型的可用性、编译时间的改进和调试,以及燃气成本、存储处理和安全的改进。

Solidity's Challenges

未来功能的重要性排名

我们要求调查参与者根据其重要性对讨论中的选定功能进行排名。

燃气优化被评为最重要,其次是与外部调试工具的接口。SMTChecker、泛型和定点类型被评为同等重要。

参与者认为,显式复制语义、带数据的枚举、文件级别的函数和 WebAssembly 输出不太关键。

Future Features Ranking

(4) 最受欢迎、最令人恐惧和最期待的功能

我们询问了调查参与者他们最喜欢和最不喜欢 Solidity 的什么,以及他们希望在即将发布的 Solidity 版本中看到什么。这些问题有自由形式的回复字段,因此我们总结了回复,并在下面列出了最常提到的功能和方面。

最喜欢的功能

简单性和简洁性一直是参与者最重视的 Solidity 的首要方面。

此外,开发人员赞赏可用工具的改进,尤其多次强调了 Remix 和 Hardhat。

受访者赞赏的另一个方面是 Solidity “易于学习”且“代码简单”。

有些人表示 Solidity 是他们正在做的事情的正确工具,他们喜欢专注于智能合约,以及 Solidity 作为它的“专用工具”。

其他反复被提及为珍贵和赞赏的功能和方面是

  • 映射。
  • 人机可读性。
  • 结构体。
  • 修饰符。
  • 强类型。
  • 类似于 JS。
  • 汇编访问。
  • 默认情况下使用 SafeMath。
  • 良好的库支持。
  • 类似于 C++。
  • SMTChecker。
  • 可组合性。
  • 不变性。
  • ABI 编码器 V2。
  • 显式性。
  • 继承。
  • 紧凑的代码大小。
  • 语法。
  • 语言的稳定改进。

最令人恐惧或最不喜欢的功能

目前 Solidity 最令人恐惧的方面显然是调试,其次是 Solidity 库的缺乏。

受访者还抱怨继承冲突以及需要用汇编/低级代码编写更多特定代码。

其他反复被提及为令人恐惧或不喜欢的方面和功能是

  • 错误处理。
  • 内存管理。
  • 重大更改和依赖项中断的频率。
  • 合约和堆栈大小限制。
  • 与其他语言不一致。
  • ABI 编码。
  • 燃气使用情况不明确/燃气效率低下。
  • 工具。
  • 复杂性。
  • 由于元数据导致重新编译失败。
  • 冗长。
  • 动态数组处理。
  • 测试。

最期待的功能

到目前为止,最期待的功能是“不再使用 SafeMath”。默认情况下使用 SafeMath 已在 0.8.0 中引入,因此不再是一个问题。🥳

第二受欢迎的功能是更好的调试和更多调试工具。

排名也很高的还有更好的文档,尤其是专注于更多教程和代码示例。

其他期待的和经常被提及的功能是

  • 燃气效率优化功能。
  • 泛型。
  • console.log()。
  • 动态数组。
  • 更好的工具。
  • 更好的 IDE。
  • LSP 支持。
  • 丰富的回退原因/错误代码。
  • 标准库。
  • 自定义优化功能。
  • 发布 v1.0.0。
  • SMTChecker。
  • 稳定的 ABIEncoderV2。
  • 不再出现堆栈过深错误。
  • 小数/定点类型。
  • WASM。

(5) 社区

超过 55% 的受访者定期与其他 Solidity 开发者互动,而 27% 的人表示他们只是偶尔这样做。近 17% 的人根本不与其他 Solidity 开发者互动。

Developer Interaction

大多数受访者觉得在 Solidity 社区中受到欢迎,并且对 Solidity 核心团队的工作充满信心。

71% 的人同意或有点同意觉得受到欢迎,可以为 Solidity 贡献力量。

只有 22% 的人完全同意 Solidity 团队理解他们的需求。14% 的人表示他们不同意,并且认为 Solidity 团队不理解他们的需求。

41% 的受访者表示,他们对如何为 Solidity 贡献力量的过程感到清楚或有点清楚,而 32% 的人不同意,因此表示他们对贡献过程感到不清楚。

⚠️ 请注意,对最后三条陈述,“我不知道”的回复比例相对较高。

Community Statements

语言设计

近 85% 的受访者表示,他们从未参与任何与 Solidity 语言设计相关的活动。大约三分之二的人表示他们没有这样做是因为他们不知道怎么做,而三分之一的人根本不感兴趣。

7-8% 的人表示他们加入了语言设计邮件列表,参加了一个或多个语言设计讨论电话会议,或通过提交 GitHub 问题提出语言功能或更改建议。

Language Design

保持最新

57% 的人更喜欢 Twitter 来了解最新情况。21% 的人喜欢邮件列表,14% 的人更喜欢 Reddit,而 6% 的人更喜欢论坛。

Staying Up-To-Date

为了紧跟 Solidity 更新,例如新版本、安全警报和公告,大多数受访者表示他们关注Twitter 上的 Solidity,关注Solidity GitHub 发布页面Solidity 博客。还提到了但受欢迎程度较低的是r/ethdev RedditSolidity 文档以太坊周报

一些声称不进行上述任何操作的参与者解释说,他们主要是通过同事或朋友了解情况,或者根本不关注最新情况。

Staying Up-To-Date 2

感谢您!💙

作为结束语,我们询问参与者是否还有其他想告诉我们的话。我们没想到会收到这么多善意,并想对你们每一个人说一声感谢!阅读你们振奋人心和温暖的评论让我们感到无比快乐。

我们将继续努力进一步增强和塑造 Solidity,并期待下一次调查,再次与您进行交流!

如果您对调查结果的细节有任何进一步的问题,请随时通过电子邮件与我们联系,或者与我们聊天

上一篇

下一篇

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

博客文档用例贡献关于论坛

2024Solidity 团队

安全策略

行为准则