微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

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

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

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

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

在 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.

2 def output_sum(N):

3sum = 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 中。

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

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

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

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

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

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

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

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

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

对于开发者而言,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/

原文地址:https://www.toutiao.com/article/7134982555865973284/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐