[论文阅读] 人工智能+软件工程 | 结对编程中的知识转移新图景
当AI成为编程搭档:结对编程中的知识转移新图景
论文信息
论文标题:From Developer Pairs to AI Copilots: A Comparative Study on Knowledge Transfer(从开发者结对到AI副驾驶:知识转移的对比研究)
作者及机构:Alisa Welter等来自德国萨尔兰大学,Christof Tinnes同时隶属于西门子公司
发表平台:arXiv预印本平台
发表时间:2025年6月
导语:
“你有没有想过,未来编程可能不再需要找搭档——AI就能陪你写代码?德国学者的最新研究发现,GitHub Copilot这样的AI助手确实能传递知识,但方式和人类搭档大不相同:它更像个‘沉默的高手’,默默给提示,却很少和你‘辩论’对错……”
核心问题解读
1. 研究背景:编程世界的新旧碰撞
- 关键挑战:传统结对编程(两人同机协作)被证实能高效传递知识,但随着GitHub Copilot等AI编程助手普及,开发者开始与AI“结对”。AI能否像人类搭档一样完成知识传递?
- 现有空白:尽管AI助手已广泛使用,但学术界很少直接对比“人-人结对”与“人-AI结对”的知识转移效果,尤其是AI是否能替代人类搭档的核心价值。
2. 研究目标:揭开AI搭档的真面目
- 验证假设:AI编程助手(如GitHub Copilot)能否在知识转移中达到人类搭档的效果?
- 核心问题:开发者与AI协作时,知识传递的频率、深度和质量与传统结对有何差异?
3. 研究方法:让AI和人类来场编程PK
- 对照实验:招募19名学生,分为两组:
- 人-人组:6对开发者无AI辅助协作编程;
- 人-AI组:7名开发者使用GitHub Copilot单独编程,需“大声思考”记录思路。
- 创新工具:扩展现有知识转移框架,开发半自动化评估流程,分析两类场景中“知识转移事件”的特征(如讨论主题、问题解决方式)。
4. 研究结果:AI搭档的优势与隐忧
-
核心发现1:知识传递频率相似,但风格迥异
- 人-人组平均每次编程产生35个知识转移事件,人-AI组为18个。人类搭档更爱“唠嗑”,常因小问题展开快速问答。
- 但AI组的事件更“专注”:人类搭档易被无关话题打断(12.5%的事件因分心终止),而AI几乎不会让开发者跑偏。
-
核心发现2:AI像“沉默的老师”,但少了份“较真”
- 优势:AI能“润物细无声”地提醒关键细节。例如,在事务中,开发者可能忘记commit,Copilot则会主动建议添加
session.commit()
,类似“隐形导师”。 - 风险:开发者对AI建议的信任度惊人——超过60%的AI组事件以“盲目接受”(TRUST类型)结束,而人-人组更倾向深入讨论直至理解(ASSIMILATION类型)。
- 优势:AI能“润物细无声”地提醒关键细节。例如,在事务中,开发者可能忘记commit,Copilot则会主动建议添加
-
核心发现3:编程话题的“贫富差距”
- 两组最常讨论的都是“代码实现”(CODE主题),但人-人组还会聊编程语言语法(PROGRAM)、工具使用(TOOL)等,话题更丰富。
- AI组几乎只聚焦代码,像“专精型选手”,而人类搭档更像“全能型伙伴”。
5. 结论与影响:AI与人类的协作新范式
- 直接贡献:首次系统对比人-AI与传统结对的知识转移机制,证实AI能实现有效知识传递,但方式更“被动”。
- 应用场景:
- 新手开发者:AI可作为“即时答疑工具”,快速填补知识缺口;
- 复杂项目:人类搭档负责深度讨论,AI辅助处理重复性代码细节。
场景类比
类比1:AI搭档像“智能翻译机”
传统结对编程如同两人用母语交流,能聊技术、侃大山;而AI搭档更像“翻译机”,精准输出代码建议,但缺乏“闲聊”中的隐性知识传递(比如行业经验分享)。
类比2:知识传递像“浇水”
- 人-人结对:像两人一起给植物浇水,边浇边讨论“浇多少”“怎么浇”,可能中途聊到天气(分心),但知识吸收更透彻;
- 人-AI结对:AI像自动灌溉系统,定时提醒“该浇水了”,效率高但少了协作中的思维碰撞。
争议与读者价值
1. 研究局限性
- 样本为计算机专业学生,未覆盖工业界资深开发者;
- 仅测试GitHub Copilot,其他AI助手(如CodeGeeX)的表现可能不同。
2. 给普通读者的启示
- 如果你是程序员:AI助手是高效工具,但别盲目信任,对关键代码建议需“打破砂锅问到底”;
- 如果你关注科技趋势:这意味着“人机协作”将成主流,未来编程能力可能包括“与AI对话的艺术”。
3. 未来方向
- 如何设计AI助手,让其在提供建议时“解释思路”,促进开发者深度理解?
- 能否结合人类搭档的灵活性和AI的效率,打造“混合协作模式”?
现实意义:
“下次用Copilot等编程助手时,不妨多问自己一句:‘它为什么这么建议?’——这可能是避免‘知其然不知其所以然’的关键。”
相关文章:
[论文阅读] 人工智能+软件工程 | 结对编程中的知识转移新图景
当AI成为编程搭档:结对编程中的知识转移新图景 论文信息 论文标题:From Developer Pairs to AI Copilots: A Comparative Study on Knowledge Transfer(从开发者结对到AI副驾驶:知识转移的对比研究) 作者及机构&#…...

热成像实例分割电力设备数据集(3类,838张)
在现代电力系统的运维管理中,红外热成像已经成为检测设备隐患、预防故障的重要手段。相比传统可见光图像,红外图像可揭示设备温度分布,从而更直观地反映过热、老化等问题。而在AI赋能下,通过实例分割技术对热成像中的电力设备进行…...

用电脑通过USB总线连接控制keysight示波器
通过USB总线控制示波器的优势 在上篇文章我介绍了如何通过网线远程连接keysight示波器,如果连接的距离不是很远,也可以通过USB线将示波器与电脑连接起来,实现对示波器的控制和截图。 在KEYSIGHT示波器DSOX1204A的后端,除了有网口…...

uni-app学习笔记二十四--showLoading和showModal的用法
showLoading(OBJECT) 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 OBJECT参数说明 参数类型必填说明平台差异说明titleString是提示的文字内容,显示在loading的下方maskBoolean否是否显示透明蒙层,防止触摸穿透,默…...
基于 React Native for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
基于 React Native for HarmonyOS5 的跨平台组件库开发,需融合分层架构设计、鸿蒙原生能力桥接及性能优化技术,核心指南如下: 一、分层架构设计 采用 模块化分层结构,隔离平台差异逻辑: ├── common_har …...

【Linux】centos软件安装
目录 Linux下安装软件的办法什么是yum使用yum试着安装软件查看yum源配置额外的第三方库 Linux下安装软件的办法 做为一个操作系统,与win和mac一样,安装软件无可厚非。那Linux下安装软件有哪些办法呢?第一种是直接下载源代码本地编译安装&…...

基于Vue3.0的在线工具网站
文章目录 1、初始化项目1.1 创建项目1.2 安装vue路由1.3 安装UI库2、首页搭建2.0 页面布局2.1 页头2.2 侧边栏2.3 内容显示区域3、字符串加密解密功能实现3.1 页面构建3.2 实现加密/解密4、Json工具4.1 Json格式化4.1.1 搭建页面4.1.2 实现Json格式化4.2 Json转XML4.1.1 搭建页…...

STM32H562----------串口通信(UART)
1、串口介绍 1.1、 数据通信概念 在单片机中我们常用的通信方式有 USART、IIC、SPI、CAN、USB 等; 1、数据通信方式 根据数据通信方式可分为串行通信和并行通信两种,如下图: 串行通信基本特征是数据逐位顺序依次传输,优点:传输线少成本低,抗干扰能力强可用于远距离传…...
C++基础进阶:函数、内联函数与Lambda函数详解
引言 在C编程的旅程中,函数是构建复杂程序的基本单元。它们像乐高积木一样,允许我们将代码分解成更小、更易于管理的部分。今天,我们将深入探讨C中的三种重要函数类型:普通函数、内联函数以及Lambda函数。掌握它们,将…...
大话软工笔记—需求调研的准备
需求调研前需做好充分的准备: 1. 背景资料来源 可以通过企业官网、宣传资料、人员沟通获取客户企业信息。 2. 背景资料汇总 根据获得的信息做出一份背景分析报告,主要包含以下内容: 2.1 企业基本信息 企业发展愿景&#…...
如何计算1920*1080分辨率的YUV或RGB图像数据占用大小?
好多开发者在对接大牛直播SDK的时候,经常问到的问题是,1920*1080分辨率的YUV或RGB图像数据,到底多少字节?在音视频图像开发中,19201080(即 Full HD)是一种极其常见的分辨率。但很多开发者在处理…...

webpack其余配置
webpack搭建本地服务器 首先是要安装一个webpack-dev-server npm install webpack-dev-server -D 安装后在package.json中添加: {"name": "babel_core_demo","version": "1.0.0","main": "index.js"…...
ArkUI-X与Android桥接通信之消息通信
平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍Android平台与ArkUI交互,ArkUI侧具体用法请参考…...

【CUDA 】第5章 共享内存和常量内存——5.3减少全局内存访问(2)
CUDA C编程笔记 第五章 共享内存和常量内存5.3 减少全局内存访问5.3.2 使用展开的并行规约思路reduceSmemUnroll4(共享内存)具体代码:运行结果意外发现书上全局加载事务和全局存储事务和ncu中这两个值相同 5.3.3 动态共享内存的并行规约reduc…...

Python 训练营打卡 Day 46
通道注意力 一、什么是注意力 注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。 transformer中的叫做自注意力机制,他是一种自己学习自…...
MySQL(56)什么是复合索引?
复合索引(Composite Index),也称为多列索引,是在数据库表的多列上创建的索引。它可以提高涉及多个列的查询性能,通过组合多个列的值来索引数据。复合索引特别适用于需要同时过滤多列的查询。 复合索引的优点 提高多列…...

Rust学习(1)
声明:学习来源于 《Rust 圣经》 变量的绑定和解构 变量绑定 let a "hello world":这个过程称之为变量绑定。绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人。 变量可变性 Rust 变量默认情况下不可变,可以通过 mut …...

鸿蒙仓颉语言开发实战教程:商城应用个人中心页面
又到了高考的日子,幽蓝君在这里祝各位考生朋友冷静答题,超常发挥。 今天要分享的内容是仓颉语言商城应用的个人中心页面,先看效果图: 下面介绍下这个页面的实现过程。 我们可以先分析下整个页面的布局结构。可以看出它是纵向的布…...
vue3 eslint ts 关闭多单词命名检查
无效做法 import { globalIgnores } from eslint/config import {defineConfigWithVueTs,vueTsConfigs, } from vue/eslint-config-typescript import pluginVue from eslint-plugin-vue import skipFormatting from vue/eslint-config-prettier/skip-formatting// To allow m…...
横向对比npm和yarn
🔧 基本概况 维度npmYarn所属Node.js 官方工具(npm, Inc.)Meta(Facebook)主导开发初始发布时间2010 年2016 年(为了解决 npm 的一些痛点而诞生)默认安装Node.js 安装后自带需要手动安装最新版本…...

智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao
在 Java 后端开发的漫长征途上,开发者们常常深陷繁琐的基础代码编写泥潭。尤其是 Controller、Service、Dao 这三层代码的手动编写,堪称开发效率的 “拦路虎”。从搭建项目骨架到填充业务逻辑,每一个环节都需要开发者投入大量精力,…...

Python----目标检测(yolov5-7.0安装及训练细胞)
一、下载项目代码 yolov5代码源 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite yolov5-7.0代码源 Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation ultralytics/yolov5 GitHub 二、创建虚拟环境 创建一个3.8…...
MySQL EXPLAIN 命令详解
文章目录 MySQL EXPLAIN 命令详解EXPLAIN 输出的基本结构id2. select_type3. table4. partitions5. type6. possible_keys7. key8. key_len9. ref10. rows11. filtered12. Extra 使用 EXPLAIN 的注意事项示例 MySQL EXPLAIN 命令详解 EXPLAIN 是 MySQL 中一个非常有用的命令&a…...

【Linux】文件赋权(指定文件所有者、所属组)、挂载光驱(图文教程)
文章目录 文件赋权创建文件 testChmod查看文件的当前权限使用 chmod 命令修改权限验证权限关键命令总结答案汇总 光驱挂载确认文件是否存在打包压缩压缩验证创建 work 目录将压缩文件复制到 work 目录新建挂载点 /MNT/CDROM 并挂载光驱答案汇总 更多相关内容可查看 此篇用以解决…...

第22讲、Odoo18 QWeb 模板引擎详解
Odoo QWeb 模板引擎详解与实战 Odoo 的 QWeb 是其自研的模板引擎,广泛应用于 HTML、XML、PDF 等内容的生成,支撑了前端页面渲染、报表输出、门户页面、邮件模板等多种场景。本文将系统介绍 QWeb 的核心用法、工作原理,并通过实战案例演示如何…...
OpenJudge | 大整数乘法
总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积。 输入 有两行,每行是一个不超过200位的非负整数,没有多余的前导0。 输出 一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342&am…...

【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?
显示器Fliker 1 显示器闪烁现象说明2 Fliker量测方法2.1 FMA法2.2 JEITA法问题答疑:为什么显示器Fliker dB值越大,闪烁程度越轻? 3 参考文献 1 显示器闪烁现象说明 当一个光源闪烁超过每秒10次以上就可在人眼中产生视觉残留,此时…...

Bootstrap Table开源的企业级数据表格集成
Bootstrap Table 是什么 Bootstrap Table 是一个基于 Bootstrap 框架的开源插件,专为快速构建功能丰富、响应式的数据表格而设计。 它支持排序、分页、搜索、导出等核心功能,并兼容多种 CSS 框架(如 Semantic UI、Material Design 等&am…...
JDK8新特性之Steam流
这里写目录标题 一、Stream流概述1.1、传统写法1.2、Stream写法1.3、Stream流操作分类 二、Stream流获取方式2.1、根据Collection获取2.2、通过Stream的of方法 三、Stream常用方法介绍3.1、forEach3.2、count3.3、filter3.4、limit3.5、skip3.6、map3.7、sorted3.8、distinct3.…...

vue3表格使用Switch 开关
本示例基于vue3 element-plus 注:表格数据返回状态值为0、1。开关使用 v-model"scope.row.state 0" 会报错 故需要对写法做些修改,效果图如下 <el-table-column prop"state" label"入学状态" width"180" …...