当前位置: 首页 > 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…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...