当前位置: 首页 > news >正文

知名开发者社区Stack Overflow发布《2023 年开发者调查报告》

Stack Overflow成立于2008年,最知名的是它的公共问答平台,每月有超过 1 亿人访问该平台来提问、学习和分享技术知识。是世界上最受欢迎的开发者社区之一。每年都会发布一份关于开发者的调查报告,来了解不断变化的开发人员现状、正在兴起或衰落的技术,以及未来的发展方向。

2023年是报告发布的第13年,今年有哪些变化与亮点呢?

全球概况

自 2022 年调查以来,通过在线资源学习编码的比例从 70% 增加到 80%。

18 岁及以下的受访者是最常选择在线资源(例如视频、博客、论坛)进行学习的人群。25 - 34 岁的受访者是从在线课程或认证中学习的最多的年龄段 (52%),但仍然从传统学校学到更多 (55%)。

今年的受访者年龄分布略有上升,37% 的受访者年龄在 35 岁或以上,而去年这一比例为 31%。

排名前五的关键地区与往年相同,但回复数量最多的国家/地区略有变化:美国一直是回复数量第一的国家,但今年我们看到印度从第二高的回复率下降排名第三,落后于德国。两年多来,我们发现印度的回复下降了 50%,而德国的回复则增长了 30%。

技术趋势

在今年的十大编程语言中,我们看到三种流行语言的地位有所上升:Python、Bash/Shell和 C。

Python 在过去三年中越来越受欢迎,今年它上升了一位,排名第三。随着 Python 受欢迎程度的上升,我们一直看到 Python 库在我们受欢迎的“其他技术和框架”部分中排名很高——NumPy 和 Pandas 在过去三年中一直位居前十。

C 是一种有趣的语言,其受欢迎程度正在上升:尽管它自 1970 年代以来就已存在,但在此之前,它在开发人员调查中从未进入过编程语言的前十名。截至 2023 年 6 月, TIOBE指数将 C 列为第二流行编程语言,其参与度接近第一语言 Python。鉴于 C 是最流行的低级语言之一,它是物联网设备中嵌入式编程的首选语言,并且根据Codecademy的说法,它“为我们拥有的几乎所有技术经验提供支持” ,因此开发人员更多地使用 C 是有道理的今年比以往任何时候都多。

编程语言越流行,我们今年看到的开发人员报告的平均经验就越少(我们排名前三的语言大约有 10 年的经验,而那些报告使用率低于 1% 的语言则接近 14 年)。经验不足的开发人员报告称某些编程语言的使用率更高,这可能强化了这样的论点:进入工作队伍的门槛较低会增加他们在程序员中的受欢迎程度。

今年,Docker 是所有受访者中使用最多的其他工具 (53%),从去年的第二位上升。

学习编码的人更有可能使用 npm 或 Pip,而不是 Docker(分别为 50% 和 37% vs. 26%)。两者都与学生流行的语言(分别是 JavaScript 和 Python)一起使用。

与去年类似,Jira 和 Confluence 是所有开发人员中排名前两位的异步工具,但今年该列表中的新成员打破了前三名:27% 的受访者使用 Markdown 文件作为异步工具。

学习编码的人更多地使用 GitHub Discussions,而不是 Markdown 文件(31% vs. 29%),并且比专业开发人员更多地转向 Notion (26%) 和 Trello (23%)。

Rust 是最受推崇的语言,超过 80% 使用过它的开发人员希望明年再次使用它。将此与最不受推崇的语言进行比较:MATLAB。使用这种语言的开发人员中,只有不到 20% 希望明年再次使用它。

Phoenix是最受推崇的Web框架和技术;与使用过三种最常见的 React、Node.js 和 Next.js 的开发人员相比,更多的开发人员会选择再次使用 Phoenix。

希望明年继续使用 Cargo 的受访者数量多于顶级竞争对手(受访者明年希望使用的前 6 种工具),然而,与所有其他选项相比,Docker 明年希望使用它的受访者比例几乎是其两倍。

AI工具是今年新增的一个板块,受访者对人工智能搜索工具的首选是ChatGPT:83%的受访者在过去一年中使用过它。这超出了 Bing AI 的第二选择(20% 的人使用过它)。

随着 ChatGPT 竞争对手扩大用户群,围绕新兴人工智能搜索技术的炒作还有增长空间;对于那些想在明年尝试的人来说,只有四种工具有 10% 或更高的选择率。

除了AI搜索工具之外,我们还询问了AI开发工具。GitHub Copilot 是最常用的人工智能开发工具,去年有 55% 的受访者使用它,是第二名 Tabnine(13%)的四倍。

Zig 是今年收入最高的语言(新增),而 Clojure 则从榜首位置被挤下来,与 2022 年相比下降了 10%。
Dart 和 SAS 的 2023 年薪酬中位数增幅最高,同比增长超过 20%。总体而言,2023年薪资增长基准比去年增长10%。

工作方式

与去年相比,“独立开发者、自由职业者或自营职业者”的人数略有增加,而全日制学生的人数则有同等规模的下降(1 个百分点),而其他就业状况的变化则小于去年。

2023 年,随着通货膨胀,自我投资的成本有所上升,但仍让有许多人选择成为开发人员。

办公方式方面,混合办公模式适用于大型企业;5,000 多个企业中超过一半的员工是混合型员工。较小的组织最有可能进行面对面的会议,在少于 20 人的企业中,五分之一的员工表示会进行面对面的会议。
今年亲自工作的开发人员比去年多 (+2%)。除了重返办公室措施之外,编码很容易进行完全远程工作,并且所有规模的企业中有三分之一或更多仍然完全远程工作。

以上是我们认为2023调查中的一些变化与亮点,想了解更多报告内容,请点击这里:https://survey.stackoverflow.co

相关文章:

知名开发者社区Stack Overflow发布《2023 年开发者调查报告》

Stack Overflow成立于2008年,最知名的是它的公共问答平台,每月有超过 1 亿人访问该平台来提问、学习和分享技术知识。是世界上最受欢迎的开发者社区之一。每年都会发布一份关于开发者的调查报告,来了解不断变化的开发人员现状、正在兴起或衰落…...

vue element plus Form 表单

表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。 TIP Form 组件已经从 2. x 的 Float 布局升级为 Flex 布局。 典型表单# 最基础的表单包括各种输入表单项,比如input、select、radio、checkbo…...

zmq_connect和zmq_poll

文章内容: 介绍函数zmq_connect和zmq_poll的使用 zmq_connect zmq_connect函数是ZeroMQ库中的一个函数,用于在C语言中创建一个与指定地址的ZeroMQ套接字的连接。该函数的原型如下: int zmq_connect(void *socket, const char *endpoint);其…...

TinyLog iOS v3.0接入文档

1.背景 为在线教育部提供高效、安全、易用的日志组件。 2.功能介绍 2.1 日志格式化 目前输出的日志格式如下: 日志级别/[YYYY-MM-DD HH:MM:SS MS] TinyLog-Tag: |线程| 代码文件名:行数|函数名|日志输出内容触发flush到文件的时机: 每15分钟定时触发…...

react-native 配置@符号绝对路径配置和绝对路径没有提示的问题

这里需要用到vscode的包 yarn add babel-plugin-module-resolver 找到根目录里的babel.config.js 在页面添加plugins配置 直接替换 module.exports {presets: [module:metro-react-native-babel-preset],plugins: [[module-resolver,{root: [./src],alias: {/utils: ./src/…...

element的Table表格组件树形数据与懒加载简单使用

目录 1. 代码实现2. 效果图3. 解决新增、删除、修改之后树节点不刷新问题。&#xff08;[参考文章](https://blog.csdn.net/weixin_41549971/article/details/135504471)&#xff09; 1. 代码实现 <template><div><!-- lazy 是否懒加载子节点数据 --><!-…...

游戏、设计选什么内存条?光威龙武系列DDR5量大管饱

如果你是一位PC玩家或者创作者&#xff0c;日常工作娱乐中&#xff0c;确实少不了大容量高频内存的支持&#xff0c;这样可以获得更高的工作效率&#xff0c;光威龙武系列DDR5内存条无疑是理想之选。它可以为计算机提供强劲的性能表现和稳定的运行体验&#xff0c;让我们畅玩游…...

linux磁盘清理_docker/overlay2爆满

问题&#xff1a;无意间发现linux服务器登陆有问题&#xff0c;使用df命令发现目录满了。 1. 确定哪里占用了大量内存。 cd / du -sh * | sort -rh经过一段时间后&#xff0c;显示如下&#xff1a; // 474G home // 230G var // 40G usr // 10G snap // --- 根据实际情…...

Redis过期清理策略和内存淘汰机制

目录 Redis过期清理策略Redis内存淘汰机制 Redis过期清理策略 Redis 通过设置键的过期时间来实现自动删除过期键。当键的过期时间到达时&#xff0c;Redis 会自动将该键删除。Redis 过期清理策略主要有以下两种&#xff1a; 惰性删除&#xff1a;Redis 在获取键时会检查键是否…...

2_并发编程同步锁(synchronized)

并发编程带来的安全性同步锁(synchronized) 1.他的背景 当多个线程同时访问&#xff0c;公共共享资源的时候&#xff0c;这时候就会出现线程安全&#xff0c;代码如&#xff1a; public class AtomicDemo {int i0;//排他锁、互斥锁public void incr(){ //synchronizedi; …...

Python 常用模块pickle

Python 常用模块pickle pickle序列化模块 【一】定义 序列化&#xff1a;将数据结构或对象转换为可存储或传输的格式反序列化&#xff1a;将序列化后的数据恢复为开始的数据结构或者对象 【二】目的 数据持久化存储远程通信缓存进程间通信 【三】序列化 将对象转换为字节…...

CentOS 6 制作openssh 9.6 p1 rpm包(含ssh-copy-id、openssl) —— 筑梦之路

openssh 9.6 需要openssl 1.1.1 以上版本&#xff0c;因此需要先安装openssl 1.1.1&#xff0c;可阅读这篇升级更新openssl版本到1.1.1w CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路-CSDN博客 CentOS 6很久都停止更新和支持&#xff0c;关于此版本的写的不多&#xff…...

Tomcat Notes: Deployment File

This is a personal study notes of Apache Tomcat. Below are main reference material. - YouTube Apache Tomcat Full Tutorial&#xff0c;owed by Alpha Brains Courses. https://www.youtube.com/watch?vrElJIPRw5iM&t801s 1、Tomcat deployment1.1、Two modes of …...

某邦通信股份有限公司IP网络对讲广播系统挖矿检测脚本

目录 1.漏洞概述 2.影响版本 3.危害等级 4.挖矿程序检测 5.Nuclei自动化检测...

uniapp点击跳转传对象

目录 传对象传对象传送组件接受组件 最后 传对象 传对象 传送组件 点击传给组件 <view class"dki-tit-edit" click"gotificatedit(item)">编辑 </view>gotificatedit(item){console.log(item,item);let options JSON.stringify(item);uni.…...

简单用PHP实现微信小程序的游戏功能

微信小程序的兴起&#xff0c;越来越多的开发者开始关注如何在小程序中实现游戏功能。PHP作为一种流行的后端语言&#xff0c;可以很好地与小程序进行搭配&#xff0c;实现游戏功能。下面将介绍如何使用PHP来实现微信小程序的游戏功能&#xff0c;并提供具体的代码示例。 建立…...

某查查请求头参数加密分析(含JS加密算法与Python爬虫源码)

文章目录 1. 写在前面2. 请求分析3. 断点分析4. 扣加密JS5. Python爬虫代码实现 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff…...

免费用chatGPT

免费用chatGPT&#xff0c;地址&#xff1a; DocGPT - 第二大脑...

还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~

相信很多使用 python 的小伙伴在工作中都遇到过&#xff0c;对数据进行相关编码或加密的需求&#xff0c;今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式&#xff0c;如何使用 python 去实现。话不多说&#xff0c;接下来直接进入主题&#xff1a; 前言 1…...

简易实现 MyBatis 底层机制

MyBatis 大家好呀&#xff01;我是小笙&#xff0c;我中间有1年没有更新文章了&#xff0c;主要忙于毕业和就业相关事情&#xff0c;接下来&#xff0c;我会恢复更新&#xff01;我们一起努力吧&#xff01; 概述 MyBatis 是一个持久层的框架&#xff08;前身是 ibatis&#x…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

HTTPS证书一年多少钱?

HTTPS证书作为保障网站数据传输安全的重要工具&#xff0c;成为众多网站运营者的必备选择。然而&#xff0c;面对市场上种类繁多的HTTPS证书&#xff0c;其一年费用究竟是多少&#xff0c;又受哪些因素影响呢&#xff1f; 首先&#xff0c;HTTPS证书通常在PinTrust这样的专业平…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录 一、引言&#xff1a;当爬虫遭遇"地域封锁"二、背景解析&#xff1a;分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计&#xff1a;Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...

C++ Saucer 编写Windows桌面应用

文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架&#xff0c;开发Windows桌面应用&#xff0c;把一个html页面作为GUI设计放到Saucer里&#xff0c;隐藏掉运行时弹…...