社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

AI科技大本营 • 1 年前 • 219 次点击  

整理 | 苏宓
出品 | 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.
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 中。


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


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/

对此,你怎么看?欢迎在留言区讨论哦~


往期回顾

苹果前员工承认窃取商业机密,或面临 10 年刑期、25 万美元罚款


3D 游戏之父卡马克再创业:“我自己出得起 2000 万美元,但花投资人的钱会更有责任心”


小米造车 500 天,现在怎么样了?


用 Python 绘制几张有趣的可视化图表


分享

点收藏

点点赞

点在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/146423
 
219 次点击