网站首页 > 技术文章 正文
金磊 发自 凹非寺
量子位 | 公众号 QbitAI
GitHub Copilot,最近又出了个新功能。
这一次,它不再是帮你写代码了,而是充当一个“翻译官”:
用“人话”告诉你,这段代码到底写了啥。
瞧,只需要选中一段代码,然后点一下旁边的“Ask Copilot”,就会快速得到代码的“人话版”解释:
示例中的代码片段是这样的:
if len(l)=0:
return None
else:
max_int=l[0]
for i in l:
if i>max_int
max_int=i
return max_int
Copilot对此进行“翻译”后,输出的内容是:
- 定义一个函数max_int(),它将一个列表作为输入。
- 设置一个变量max_int=l[0],它包含列表中的第一个元素。
- 设置一个for循环,迭代列表中的每个元素。
- 如果元素大于max_int,便让max_int等于I。
- 返回max_int。
这便是GitHub Copilot的最新功能——Explain Code。
之前Copilot是基于人类的注释生成代码,现在好了,它也学会了反向输出。
网友们的反应也是可想而知了:
但在“新奇”之后,这件事也引发了不小的讨论。
AI给代码做注释,有必要吗?
不仅是Copilot,“AI给代码做注释”这事最近在Reddit也比较火。
有位贴主上传了他用AI技术,给代码做注释的demo。
不同于Copilot的Explain Code,这个AI不会非常详尽地去描述每行代码运行的过程。
而是概括性地去讲“这段代码是干嘛的”。
以下面这个代码片段为例:
在AI“解读”过后,它就会告诉你:
这段代码是用来从GitHub的Repo中收集数据。
会返回一个数据的矩阵。
再如下面这个代码片段:
AI给出的注释是:
函数运行的是梯度下降算法。
而后它还会对函数中的变量依次做解释。
看似不错的效果,但依旧还是引来了网友们激烈的讨论。
“乐观派”网友认为:
辅助写注释和写测试比写代码的帮助大更多,而犯错可能更少。
但有人质疑这种AI的能力:
如果我函数写的特别乱、变量这名字乱糟糟的,它还能好使吗?
也有人认为,诸如此类的AI“没有什么用处”:
更形象一点的比喻,这种AI起到的作用,可能就是“复读机”……
那么对于“AI给打码写注释”这件事,你觉得是否有用呢?
参考链接:
[1]https://twitter.com/ow/status/1466149473701273602
[2]https://www.reddit.com/r/MachineLearning/comments/sab6tk/p_documentation_generated_using_ai/
[3]https://weibo.com/1402400261/LcqZsETbR?filter=hot&root_comment_id=0&type=comment
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
猜你喜欢
- 2024-09-09 序列化 Python 对象(序列化对象需要实现的接口)
- 2024-09-09 一篇文章读懂系列-2.二叉树及常见面试题
- 2024-09-09 Meta 如何将缓存一致性提高到 99.99999999
- 2024-09-09 自学Python笔记2(python0基础自学书)
- 2024-09-09 找到两个链表的第一个公共节点(找出两个链表的第一个公共节点)
- 2024-09-09 详解SkipList跳跃链表(跳表遍历)
- 2024-09-09 Python画豪华版圣诞树,带漂亮彩灯与文字背景
- 2024-09-09 零基础Python完全自学教程23:函数的返回值、作用域和匿名函数
- 2024-09-09 redis的内存满了之后,redis如何回收内存
- 2024-09-09 「python小游戏」据说这是一款还原度超高的小游戏,你感受下....
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)