本文作者:Solidity;编译:Cointime Freya
2022年Solidity开发者调查的结果已经出来了! 在本篇文章中,我们将对其进行总结与分析。
首先,非常感谢所有花时间参与调查的人,以及帮助我们宣传这个调查的人!今年,我们收到了1401份回复,与上一次的调查相比,这次的回应人数增加了3倍多,我们对投票情况感到非常满意。你的意见对我们来说是无价的,在帮助我们不断改善整个Solidity开发人员的体验方面发挥着至关重要的作用。
摘要和重要见解
- 调查对象:共有来自100个不同国家的1,401名开发者参与了2022年的调查。与之前的调查(435名调查对象)相比,答复率增加了222%以上!不同地域的覆盖范围也不断增加,从2020年的48个国家增加到2021年的73个国家,再到2022年的100个国家。大约18%的人表示居住在美国,其次是印度(10%)和法国(5%)。
- 开发者简介:编程经验水平保持在中等偏上水平,大多数调查对象具有3年以上的专业编程经验,12.5%的调查对象的编程经验甚至超过了15年。
- Solidity使用体验:超过一半的调查对象使用Solidity不到一年,而13.8%的调查对象已经使用了3年以上。41%的人每天使用Solidity,37.3%每周使用。·Solidity专业知识:许多人认为自己是Solidity专家,在专业知识方面的自我评价为7分或更高(满分10分)。4.6%的人将他们的专业知识评为10分(满分10分)。其中70%的人已经使用Solidity 2-3年或更长时间。
- 开发者经验:大多数人(+75%)认为Solidity的开发者体验在去年有所改善。0.9%的人认为它变差了。经常遇到调试问题,其次是堆栈过深的错误和字节码大小的限制。
- 未来的功能:对十进制数字和泛型的支持被提到最多的是“最值得期待的Solidity功能”。·喜欢和讨厌的功能:调查对象最喜欢Solidity的语法,学习、阅读、编程和编译的简单性,以及静态类型。最显着的痛点是“堆栈太深”,占所有投票的33.6%,其次是缺少内存优化(浪费内存)(24.4%)和冗余的检查(例如在检查算术中)(11.8%)。9.9%的人表示编译器性能是他们最大的问题。
一、调查对象的人口统计数据
像往常一样,我们首先了解参与本次调查的开发者:在第一章中,我们将介绍调查对象的一般信息,包括居住地和口语。
共有来自100个不同国家的1,401名开发者参与了2022年的调查。与之前的调查相比,这意味着答复增加了222%。
不同地区的覆盖范围从2021年的73个国家增加到2022年的100个国家。
1. 居住地
大约18%的调查对象表示居住在美国,其次是印度(10%)、法国(5%)和尼日利亚(4.5%)。


2. 语言
调查对象的多样性不仅在居住国家方面有所增加,而且在母语方面也有所增加。总共有70种不同的语言被提及为他们的母语。这比前一年增加了40%。
31.5% 的人以英语为母语,其次是印度语 (12.4%)、西班牙语 (8.4%)、法语 (6.9%)、俄语 (6.4%) 和德语 (4.7%)。
印地语、乌尔都语、泰卢固语、孟加拉语、泰米尔语、马拉雅拉姆语、古吉拉特语、马拉地语、卡纳达语和奥迪亚语被归类为“印度语言”。 中文、粤语和普通话被归类为“中国语言”。 波斯语、普什图语和奥塞梯语被归为“伊朗语言”。

近80%的调查对象主要在工作中使用英语。其他在工作中使用的语言:法语(3.2%)、俄语(3.1%)和中文(2.3%)。

在不以英语为母语的调查对象中,87%的人可以阅读英文版的Solidity文档。
12.9%的人更喜欢用母语阅读,其中提到最多的是西班牙语、印度语和俄语。


二、开发者简介
在 Solidity 开发者调查的第二部分,我们将了解更多关于调查对象的专业经验和编程偏好。
1. 工作经验及就业情况
大约71%的调查对象在调查时有工作,大约12%的人表示他们是学生,17%的人表示他们目前没有从事专业工作。
与上次调查相比,学生人数和目前失业的开发者人数均略有增加。

就业的调查对象主要在加密货币”(58.2%)、技术(21.6%)和金融服务(5.4%)领域工作。

37.1%的调查对象是老年人,并且已经从事编程工作6年或更长时间,其中12.5%的人甚至已经从事了15年以上的时间。
另一方面,大约12%的人是编程新手,专业编程的时间不到一年。
最大的群体大约占22%,位于分布的中间,拥有3-5年的专业编程经验。
总体而言,编程经验水平处于中高水平,大多数调查对象(59.2%)有3年或以上的专业编程经验。7.7%的人从未将编程作为其工作的一部分,其中37%是学生。

2. 坚固的Solidity
和上一次调查一样,大多数调查对象(75.7%)仍在使用Solidity来完成他们的个人项目。
大约有64%的调查对象在工作中使用Solidity。
超过20%的人表示他们正在领导一个编程团队。

只有23.4%的调查对象每天或每周为用Solidity编写的开源项目做出贡献。其余的人表示每月(27.4%)或从不(47.1%)这样做。

3. 编程语言偏好
Solidity是调查对象使用最多的编程语言(28.6%),紧随其后的是JavaScript(25.6%)和TypeScript(20.5%)。
其他较少被提及的语言是Python(8.7%)、Rust(2.7%)和Go(2.5%)。

与去年类似,调查对象最喜欢的编程语言在各种语言中的分布更加均匀。
Solidity是最受欢迎的,占所有条目的18.8%,其次是JavaScript(17.3%)、Python(15.2%)、TypeScript(15.0%)和Rust(8.6%)。

4. 操作系统
大多数调查对象使用MacOS作为他们的主要操作系统(41.8%)。Windows和Linux似乎比较受欢迎,分别为30.5%和27.7%。

三、Solidity用户简介
在这部分的调查中,我们询问了调查对象关于他们在Solidity方面的开发经验和使用习惯。
1. Solidity经验
几乎50%的调查对象认为自己是Solidity专家,在专业知识方面的自我评价为7或更高(满分为10分)。
4.6%的人将他们的专业知识评为10分,其中70%的人已经使用Solidity 2-3年,或者更长时间。
大约有23%的人可以被认为是初学者或低频率用户,自评专业知识水平为4或更低。
自我评价的分布与之前的调查相似,尽管调查对象的人数增加了两倍。

大约50%的调查对象使用Solidity不到一年,13%的人刚刚开始他们的Solidity之旅(使用时间不超过3个月)。
13.83%的人已经使用Solidity超过3年,因此可以被认为是“Solidity的前辈”。从时间的角度来看:“0.1.1版”是solc-bin上最旧的Solidity版本,是从2015年8月的,因此大约有7.5年的历史。该语言仍然比较年轻,而且还在不断发展。我们可能会在下一次调查中为 “3年以上”的Solidity经验增加更细化的选择选项,以更好地区分这一点。

与往年一样,Solidity似乎很容易学会,21.2%的调查对象在不到一个月的时间里就觉得有成效,39.3%的调查对象在不到半年的时间里感觉很有成效。
8.1% 的人需要一年多的时间才能熟悉这门语言。
17.8% 的人还没有感到有效,其中超过74.2%的人是初学者,使用solididity的时间不超过6个月,47%的人甚至不到3个月。

2. Solidity用户资料和使用习惯
在使用频率方面,超过40%的调查对象每天都在使用Solidity!
37.3% 的人每周使用一次,13.9% 的人每月使用一次。
大约8%的人表示“很少”或“从不”使用Solidity。
他们中的大多数人之前表示,他们在个人项目中使用Solidity,在工作中使用不同的编程语言编写代码。

令人震惊的是,81.8%的调查对象在编写Solidity代码时使用Visual Studio Code作为编辑器。Vim和IntelliJ分别以3.7%和3.4%的使用率排在第二和第三位。
与2021年的上一次调查相比,Visual Studio代码的受欢迎程度显着提高(从大约50%增加到81.8%)。

根据所选的 IDE,我们还询问了调查对象使用了哪些与Solidity相关的插件(如果有的话)。
Nomic Foundation的“HardHat VSCode”和Juan Blanco的“Solidity”扩展都用于Visual Studio Code)是最受欢迎的。

Hardhat仍然是最受欢迎的以太坊特定开发环境,大约75%的调查对象使用Hardhat。
Remix紧随其后,占42%。Foundry的份额从2021年的1.6%大幅增加到2022年的30%。
Truffle继续更多地进入后台,17%的调查对象表示他们使用Truffle。
相对“利基”的以太坊特定开发环境是Brownie(6.7%)、Ape(3.3%)、Dapptools(2.3%)和Embark(0.8%)。
4.4%的调查对象没有使用任何特定于以太坊的开发环境。
值得注意的是,这个问题是一个复选框问题,允许调查对象选择多个答案。

0.8.x Solidity版本仍然是迄今为止使用最多的版本,大约90%。0.7.x(10.2%)和0.6.x(7.7%)系列的使用份额相较上次调查以来继续下降。所有比这更早的版本几乎不再使用。

3. Solidity使用细节
今年,我们还询问了有关solididity使用习惯的具体问题。
关于这些的图表和数字,请参考带有所有图表和原始数据文件的演示文稿。
总结一下:
- 命令行:大约三分之二的调查对象不直接通过命令行使用 Solidity 编译器。 37.5%的人会使用。
- 命令行:在命令行上使用编译器时,61.3%的人仍然使用标准JSON。
- 优化器:93.6%的人没有禁用优化器。6.4%的人启用了优化器,他们表示这样做是由于合约大小的限制、编译速度慢、为了通过EtherScan验证、为了gas测试或出于安全考虑。
- gas estimator:23.4%的人使用编译器中内置的gas estimator。25%的人尝试过,但并不经常使用,而41.5%的人从不使用它。
- SMTChecker:81%的调查对象从未使用过SMTChecker。13.7%的人尝试过,5.4%的人经常使用。
- via-IR编译管道:70.8%的人不知道via-IR是什么。18.6%的人已经在使用通过via-IR管道。
- 元数据发布:53.5%的人发布了他们智能合约的元数据。27.8%的人没有,而18.7%的人不知道这意味着什么。
- Sourcify:11%的调查对象使用Sourcify进行智能合约验证,21.2%的调查对象声称不需要它。67.8%的人不知道Sourcify是什么。
4. 定点类型
大约91%的调查对象不使用定点类型。
9%(100人)主要使用PRB Math、solmate的FixedPointMathLib和自定义实现。


5. 其他EVM网络
超过一半的调查对象在以太坊主网和测试网之外使用Solidity。当被问及他们在哪些其他网络上部署智能合约时,最受欢迎的链是Polygon(前身为 Matic Network)。其他经常被提及的区块链包括Binance Smart Chain、Arbitrum、Avalanche和Optimism。


6. 其他智能合约语言
一半的调查对象在使用Solidity的同时还使用其他智能合约语言。使用最多的其他智能合约语言是Solidity的中间语言Yul,占17.2%;其次是pythonic EVM的语言Vyper,,占10.5%;Cairo(7.1%),一种针对StarkNet的基于STARK的语言;以及Huff(6.2%),一种用于EVM的低级汇编语言,也被多次提及。其他“新来者”如Sway(2.4%)和Fe(1.5%)也进入了榜单。

四、Solidity开发者体验
76.5%的调查对象认为Solidity的开发者体验在去年有所改善。25.1%的人认为他们注意到与前一年相比有了很大的改善。
7.8%的调查对象表示他们的经历没有任何改变,而0.9%的调查对象认为情况变得更糟了。
与前一年的结果相比,“变得更糟”和“我不知道”的比例有所下降,而“没有变化”的比例略有增加。总的来说,这两种情况是很有可比性的。
1. Solidity开发者体验

当遇到Solidity问题时,大多数调查对象会访问Ethereum StackExchange / StackOverflow寻求帮助或在互联网上搜索解决方案。许多人还向他们的同事寻求帮助或观看教程视频。

2. 反复出现的问题
60%的调查对象在用Solidity进行开发时不会多次遇到相同或类似的问题。
在这40%的人中,最常遇到的是调试问题,其次是堆栈过深错误和字节码大小限制。
关于调试问题,我们想借此机会强调一项,旨在为构建在EVM之上的语言定义一种通用调试数据格式的新举措:ethdebug。最终结果将是一个规范,允许调试器、分析器和其他工具在编译器生成的EVM字节码和高级语言特性之间进行可靠地映射。多年来,这一直是整个生态系统的一个共同痛点,并且随着在Solidity中引入新的基于IR的代码生成器(即via-IR管道),这个问题变得更加紧迫,它经常打破基于传统管道工作方式的隐含假设工具。我们鼓励所有从事此类工具的开发者加入该工作组。该小组每两周举行一次定期会议,并通过Matrix上的ethdebug频道进行协调。


3. 入门和文档
大多数调查对象认为开始使用Solidity编译器很容易或“还可以”。4.2%(55人)表示这对他们来说是困难的。当被问及是什么原因导致入门困难时,有人提到了之前缺乏技术背景或开发经验,还有一些人指出缺乏好的学习资源或学习资源过时

近64%的调查对象认为Solidity文档很有帮助,33%的人认为它“有点”用处。只有3.3%的人认为它完全没有用。
最突出的改进意见是要求有更多的代码实例,以及更好的语法高级概述、更好的文档内搜索,更好的SEO,以及更简单的措辞。

4. 最大的痛点
与往年不同的是,今年,我们试图围绕“最大的痛点”来构建问题,并将第一步分为几个突出的类别:堆栈到深度、与gas相关问题、编译器性能和“其他”。
最大的痛点是“堆栈太深”,占所有投票的 33.6%,其次是缺少内存优化(内存浪费)(24.4%)和冗余检查(例如在检查算法中)(11.8%)。 9.9% 的人表示编译器性能是他们最大的问题。
15.8%的人选择了“其他”,并且能够在自由文本框中指明他们最重要的痛点。最突出的内容是:合约大小限制、错误消息和调试问题。

5. 高影响的编译器错误
作为今年研究的一部分,我们也很想知道Solidity开发者是否受到任何高影响的编译器错误的影响(在Solidity博客上以安全警报的方式宣布的codegen错误)。
最初,4.7%的人回答是。然而,当被问及他们受到了哪一种影响时,63人中只有2人能够在后续问题中指出实际的Solidity漏洞。这让我们有理由假设本次调查中受影响的开发者的实际数量明显低于4.7%,一些调查对象可能只是误解了这个问题。

6. 语言设计和即将推出的功能
1)最喜欢的特性/Solidity方面
调查对象最喜欢Solidity的语法,在学习、阅读、编程、编译和静态类型方面的简单性。
最受欢迎的特征由高到低依次为:
- 语法
- 易于...阅读/编程/编译/学习
- 简单性
- 静态/强硬/严格的类型化
- 与其他语言的相似性(提到最多的是JS/TS和面向对象,也提到了Rust,、C++、 Python)
- 修饰符
- 内联汇编
- 映射
- 继承性
- (用户定义的)类型
- SafeMath/已检查和未检查
- Yul
2)最可怕的方面
今年,我们向调查对象提出了一个略有不同的问题:“如果你能改变 Solidity 的一件事,那会是什么?”
最多提及的“更改请求”由高到低依次为:
- 修复堆栈过深的问题
- 更好的数组处理
- gas优化
- 添加小数(定点类型/浮点类型)
- 更好的错误处理、描述
- 更好的调试
- 更高的接触字节码大小限制
7. 未来的功能
1)最令人期待的功能
对小数和泛型的支持被提到最多的是“最令人期待的Solidity特性”。
最常提及的预期功能按降序排列:
- 支持小数(定点类型/浮点)
- 泛型
- 更好的优化
- 没有太深的堆栈
- 更好的调试
- 瞬时存储
- 标准库
- 更好的错误消息
2)EIP支持
我们还想知道调查对象认为哪些与Solidity相关的EIP需要编译器的支持。
被提及最多的是EIP-2535“Diamonds, Multi-Facet Proxy”,其次是EIP-1153“瞬时存储”和EIP-3540“EOF - EVMObject Format”。

8. 限制性
关于语言的限制性,大约43%的调查对象希望Solidity保持“现状”。41%的人倾向于更严格的限制性/明确性,有更多的检查,而大约16%的人希望Solidity的限制性更少。

六、Solidity开发者社区
1. 语言设计社区的参与
只有不到10%的调查对象曾经参与过Solidity语言设计相关工作。
参与论坛讨论和作为Github问题提出功能或语言更改之间的分布非常相似,而语言设计讨论和反馈电话的参与度略低(均在 80 - 108 人之间,可多选)。
在大约90%没有参与语言设计的人中,大多数人表示他们不知道怎么做,其次是“工作或其他事情太忙”。大约30%的人表示,他们对讨论不感兴趣或没有资格参加。

2. 保持信息畅通
与往年类似,大多数人喜欢通过在Twitter或Mastodon上关注Solidity,来了解最新的Solidity版本、安全警报和公告。
其他常用的信息获取方式是Solidity博客和Solidity GitHub发布页面
有趣的是,近30%的人声称没有做上述任何事情。
作为“其他”的一部分,调查对象指定了几个基于社区的手段来保持最新状态:
- YouTube
- Crypto Twitter/社区聊天
- Solidity文档
- “以太坊新闻周”通讯
- “加密货币影响者”/受欢迎的Solidity开发者
- 更新RemixIDE / Hardhat / VS代码
- 合作伙伴
- 谷歌
- 时事通讯
- 会议/聚会
- OpenZeppelin论坛
- Solidity网站

3. 与其他Solidity开发者互动
超过一半的调查对象与其他Solidity开发者互动。
16.7%的人根本不与其他Solidity开发者互动。

像往年一样,作为调查的最后一部分,我们想听听有多少参与者同意或不同意关于Solidity社区和Solidity团队工作的几个陈述:
- 66%的调查对象在Solidity开发者社区中感到(在某种程度上)受欢迎。
- 大约77%的人同意或在一定程度上同意他们对Solidity团队的工作充满信心。
- 超过一半的人表示欢迎为Solidity做出贡献,然而,只有不到40%的人表示他们知道如何为Solidity贡献想法或反馈。
- 大约25%的人相信Solidity团队了解他们作为一个开发者的需求。另外35%的人在一定程度上,而大约9%的人不同意或强烈不同意。这个“社区和Solidity团队信心排名”的结果与前一年非常相似。
这个“社区和Solidity团队信心排名”的结果与前一年非常相似。
我们可以得出这样的结论:虽然社区似乎对Solidity团队的能力/资格充满信心,但围绕贡献方式的沟通以及对社区需求的理解,还可以改进。我们在过去几年中,一直在努力改进的这些问题,并将继续这样做。

*本文由CoinTime整理编译,转载请注明来源。
所有评论