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

GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?
文章图片
整理|苏宓出品|CSDN(ID:CSDNnews)自2021年6月 , 微软发布AI代码建议工具
这不 , 继Copilot相继宣布收费、自美国马萨诸塞大学阿默斯特分校计算机科学教授EmeryBerger发表了一篇《CopingwithCopilot》的文章 , 警告教育工作者 , 基于人工智能的开发工具正在向你的作业“开炮” , 抵抗是徒劳的 。 同时 , 他还比喻道 , 「携带(Copilot)的学生正在把Uzis(冲锋枪)带到一场刀战中」 , 而Copilot本身也将变成作弊的有利工具 。
GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?
文章图片
为了验证自己的观点 , EmeryBerger还举了几个例子加以说明 , 我们不妨一起来看看 。
写一下函数名 , 就能生成所有的代码
在EmeryBerger看来 , 使用Copilot工具 , 学生们可以立即生成自动完成的代码解决方案 。
对于学生自身而言 , 他们只需要给出问题陈述 , 或者给出函数名称 , 甚至只需要盯着屏幕就行 , 编程就能轻轻松松搞定 。
举个例子 , 假设让一位CS(计算机科学)入门的学生编写一个Python程序 , 输出需要实现1到N所有数字的总和 。 前提条件是 , “我们计算机科学家非常讨厌O(1)闭式解决方案(斐波那契 , 我正在看着你) , 总得让CPU忙起来” , EmeryBerger说道 。
按理来说 , 通常情况下(除非班级中有CarlFriedrichGauss德国数学家这样聪明的人) , 学生们都需要试着写一些代码来实现 , 甚至需要静下心来思考一下 。
不过 , EmeryBerger表示 , “这对于拥有Copilot的学生来说 , 并不会发生这样的苦差事 。 他们只需要将问题陈述作为注释 , 复制并粘贴到IDE中 , 然后输入函数‘defoutput_sum(N):’ , 再按一下Tab键就可以得到想要的内容(如下面代码中3-6行的所有内容都是由Copilot生成的) 。 ”
1#APythonprogramthatoutputsthesumofallthenumbersfrom1toN.2defoutput_sum(N):3sum=04foriinrange(1,N+1):5sum+=i6returnsum至于如果可以用闭式的解决方案(closedformsolution) , Copilot同样可以迅速解决这个问题 , 其中只需要重新命名一下这个函数就行了(第2行是由Copilot自动生成):
1defoutput_sum_closed_form(N):2returnN*(N+1)/2为了慎重起见 , EmeryBerger还使用了封闭形式的斐波那契进行了测试(第2-3行 , 是由Copilot自动生成):
1deffibonacci_closed_form(N):2#recursion,schmecursion3return((1+5**0.5)/2)**N/5**0.5整体看来 , GitHubCopilot在所有的入门编程作业上都接受过专门培训 。
GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?】EmeryBerger教授称 , “每次为了训练Copilot , 安排它编程作业时 , 这款工具都会激动地流‘口水’ , 甚至会喃喃自语:我知道那个 , 这是解决方案 , 请再给给一个作业吧 。 ”
因此对于使用Copilot工具的学生来说 , 与其将编程作为他们课程的目标 , 倒不如说直接他们的课程目标是“点击Tab键”(这是指根据对所需输出的描述来生成代码的按键命令) , 因为在下面所有的黑色加粗代码都是由Copilot自动生成的 , 其中只需要输入函数名称和参数就可以实现所有代码:
1defdepth_first_search(tree,node,visited):2visited.add(node)3forchildintree[node]:4ifchildnotinvisited:5depth_first_search(tree,child,visited)6defquicksort_random_pivot(l):7iflen(l)8returnl9pivot=random.choice(l)10left=[xforxinlifx<pivot]11middle=[xforxinlifx==pivot]12right=[xforxinlifx>pivot]13returnquicksort_random_pivot(left)+middle+quicksort_random_pivot(right)14defdijkstra(g):15dist={}16forving:17dist[v]=float(‘inf’)18dist[g[0]]=019whileTrue:20u=min(dist,key=dist.get)21ifdist[u]==float(‘inf’):22break23forving[u]:24ifdist[v]>dist[u]+g[u][v]:25dist[v]=dist[u]+g[u][v]26returndist与此同时 , Copilot在今年6月宣布的付费政策中 , 以每月10美元(人民币约67元)或每年100美元(人民币约669元)的价格出售 , 并提供60天的免费试用期 。 值得一提的是 , 收费群体是有限制的 , 其中通过身份验证的学生和热门开源项目维护者可以免费使用 。