GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?

2d2e68f8b8e3958740a510a224b31950.gif

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

自 2021 年 6 月,微软发布 AI 代码建议工具 GitHub Copilot 以来,业界关于它的争议就没有断过。

这不,继Copilot 相继宣布收费、代码版权引发软件自由保护协会怒批之后,来自美国马萨诸塞大学阿默斯特分校计算机科学教授 Emery Berger 发表了一篇《Coping with Copilot》的文章,警告教育工作者,基于人工智能的开发工具正在向你的作业“开炮”,抵抗是徒劳的。同时,他还比喻道,「携带(Copilot)的学生正在把 Uzis(冲锋枪)带到一场刀战中」,而 Copilot 本身也将变成作弊的有利工具。

cd15e080ad94081d62ac55aa8d01d7df.png

为了验证自己的观点,Emery Berger 还举了几个例子加以说明,我们不妨一起来看看。

0e8151f20f6dc187c924132fccd48779.png

写一下函数名,就能生成所有的代码

在Emery Berger 看来,使用 Copilot 工具,学生们可以立即生成自动完成的代码解决方案。

对于学生自身而言,他们只需要给出问题陈述,或者给出函数名称,甚至只需要盯着屏幕就行,编程就能轻轻松松搞定。

举个例子,假设让一位 CS(计算机科学)入门的学生编写一个 Python 程序,输出需要实现 1 到 N 所有数字的总和。前提条件是,“我们计算机科学家非常讨厌 O(1) 闭式解决方案(斐波那契,我正在看着你),总得让 CPU 忙起来”,Emery Berger 说道。

按理来说,通常情况下(除非班级中有 Carl Friedrich Gauss 德国数学家这样聪明的人),学生们都需要试着写一些代码来实现,甚至需要静下心来思考一下。

不过,Emery Berger 表示,“这对于拥有 Copilot 的学生来说,并不会发生这样的苦差事。他们只需要将问题陈述作为注释,复制并粘贴到 IDE 中,然后输入函数‘def output_sum(N):’,再按一下 Tab 键就可以得到想要的内容(如下面代码中 3-6 行的所有内容都是由 Copilot 生成的)。”

1#?A?Python?program?that?outputs?the?sum?of?all?the?numbers?from?1?to?N.
2def?output_sum(N):
3??sum?=?0
4??for?i?in?range(1,?N?+?1):
5????sum?+=?i
6return?sum

至于如果可以用闭式的解决方案(closed form solution),Copilot 同样可以迅速解决这个问题,其中只需要重新命名一下这个函数就行了(第 2 行是由 Copilot 自动生成):

1def?output_sum_closed_form(N):
2??return?N?*?(N?+?1)?/?2

为了慎重起见,Emery Berger 还使用了封闭形式的斐波那契进行了测试(第 2-3 行,是由 Copilot 自动生成):

1def?fibonacci_closed_form(N):
2??#?recursion,?schmecursion
3??return?((1?+?5?**?0.5)?/?2)?**?N?/?5?**?0.5

整体看来,GitHub Copilot在所有的入门编程作业上都接受过专门培训。

Emery Berger 教授称,“每次为了训练 Copilot,安排它编程作业时,这款工具都会激动地流‘口水’,甚至会喃喃自语:我知道那个,这是解决方案,请再给给一个作业吧。”

因此对于使用 Copilot 工具的学生来说,与其将编程作为他们课程的目标,倒不如说直接他们的课程目标是“点击 Tab 键”(这是指根据对所需输出的描述来生成代码的按键命令),因为在下面所有的黑色加粗代码都是由 Copilot 自动生成的,其中只需要输入函数名称和参数就可以实现所有代码:

1def?depth_first_search(tree,?node,?visited):
 2??visited.add(node)
 3??for?child?in?tree[node]:
 4????if?child?not?in?visited:
 5??????depth_first_search(tree,?child,?visited)
 6def?quicksort_random_pivot(l):
 7??if?len(l)?<=?1:
 8????return?l
 9??pivot?=?random.choice(l)
10??left?=?[x?for?x?in?l?if?x?<?pivot]
11??middle?=?[x?for?x?in?l?if?x?==?pivot]
12??right?=?[x?for?x?in?l?if?x?>?pivot]
13??return?quicksort_random_pivot(left)?+?middle?+?quicksort_random_pivot(right)
14def?dijkstra(g):
15??dist?=?{}
16??for?v?in?g:
17????dist[v]?=?float(‘inf’)
18????dist[g[0]]?=?0
19??while?True:
20????u?=?min(dist,?key=dist.get)
21????if?dist[u]?==?float(‘inf’):
22??????break
23????for?v?in?g[u]:
24??????if?dist[v]?>?dist[u]?+?g[u][v]:
25????????dist[v]?=?dist[u]?+?g[u][v]
26??return?dist

与此同时,Copilot 在今年 6 月宣布的付费政策中,以每月 10 美元(人民币约 67 元)或每年 100 美元(人民币约 669 元)的价格出售,并提供 60 天的免费试用期。值得一提的是,收费群体是有限制的,其中通过身份验证的学生和热门开源项目维护者可以免费使用。

这更有助于学生群体将 Copilot 集成到自己的 IDE 中。

dc67cb95b881452411e78e8162a278b5.png

假装所有的代码都是学生自己写的?

EmeryBerger教授担心 Copilot 将使传统的编程练习变得毫无意义,因为只要通过 Copilot,学生就知道所有的答案,但并不能记住编程的方式。他说道,“编程在很多计算机科学课程中起着作用,特别是在计算机科学入门课程中”。

因此,编程对于锻炼学生技能而言,尤为重要。但是身为老师,虽然不希望学生使用 Copilot,但是往往防不胜防。因为 Copilot 与在 Stack Overflow 和其他互联网编程资源上搜索答案不同。

“有些编程问题,你已经可以在网上找到代码的例子”,EmeryBerger说道,“但是你知道,老师也可以在谷歌上找到它们,然后用抄袭检测器将这些代码与学生提交的代码进行比较。”

然而,现如今Copilot 是不同的。Copilot 实际上生成的解决方案。虽然谈不上是天才、复杂级别的方案,但是它带来的代码与网络上提供的还是有很大不同的,表面看起来,极有可能出自学生之手,老师根本无从分辨。

因此,EmeryBerger 教授认为,与编程有关的教学方法需要调整。他在文章中调侃道,「用手堵住我们的耳朵,然后假装 Copilot 不存在的同时,老师不断做心理暗示,称剽窃的情况不存在、互联网不存在,一切都是学生真实做的」。

44e34755b8aeaef7abcde9c8afb0f06f.png

对于开发者有利的 Copilot,弊端会在下一代编程初学者身上体现

事实上,所有事情都有两面性,这并不意味着 Copilot 完全不能用。

对于 Copilot 本身,它由 OpenAI 研发的新 AI 系统 Codex 提供支持,Codex 是 GPT-3 的延伸版本,该模型接受过公开源代码和自然语言的训练,因此它理解编程和人类语言。同时,它已经接受过数十亿行公共代码的训练,在其内部建立了很多安全机制来保证开发者能够生成安全、高质量的代码。

67976f6ef00312d8211ad7eda9a4d88c.png

对于开发者而言,Copilot 的确有用,还极大地提升了开发效率,但是对于学生群体而言,好比连基础的算术都没有学会,遇到算术问题就拿起了计算器一样,早期学习时,应该强制学生不可以使用 Copilot 等工具。

否则,“如果你关心编程的过程完整性,那么 Copilot 实实在在就是一款作弊机器。就像有人给你作业的答案,你只需要在回答的窗口中输入一下,然后点击 Tab 就行”,Emery Berger 说道。

在这种情况下,Emery Berger 认为对教育者来说,确保学生真正学到材料是很重要的,这可能意味着他们需要重新思考在计算总成绩时,那些可以用 Copilot 解决的家庭作业应该算多少分。

也许现在说 Copilot 对学生产生了哪些具体影响可能还为时过早,因为该软件只公开使用了几个月。但随着 Copilot 等类似工具迅速崛起,用不了多久,其影响就会开始显现。

“我希望对此持乐观态度。但我认为,至少,我们需要对它进行深思熟虑” ,Emery Berger 担忧地说道。

参考链接:

https://itnext.io/coping-with-copilot-b2b59671e516

https://www.theregister.com/2022/08/19/copilot_github_students/

— 推荐阅读—

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值