使用 AI 学习编程时,切记还需独立思考 [译]

计算机科学教师和软件专家对机器学习辅助工具的建议

在 AI 的帮助下,学习编程可能比以往任何时候都要容易。然而,这些能够为你提供建议或生成源代码的工具必须谨慎使用。

编程需要耐心和坚持,尤其是在学习的初期,当一切似乎难以理解时。编码规则可能会让人感到困惑,涉及到的各种标点符号和符号都需小心处理。忽略一个冒号或逗号,或者缩进错误,都可能导致错误,这还取决于所用的编程语言。但随着实践的积累,这些知识终将被掌握。

像许多初学者一样,我通过在线观看教程和完成一系列编程练习来学习编码。当我在某个问题上遇到难题时,向 ChatGPT 寻求帮助是非常诱人的,它能轻松引导我找到正确的解决方案。这类辅助工具擅长生成简单代码,有些甚至能在你描述问题时直接给出完整答案。

在尝试实现一个特定功能时,我意识到这一点,并在 Visual Studio Code 中关闭了 GitHub Copilot 的代码自动补全功能,以避免依赖它而失去自主解决问题的机会。

不只是复制粘贴

哈佛大学的计算机科学教授 David Malan 教授一门颇受欢迎的入门计算机科学课程 CS50,该课程还提供了免费的在线学习方式。他认为,AI 有时候帮助过头了。

为了防止学生依赖像 OpenAI 的 ChatGPT 或 Google 的 Bard 这类工具来完成作业,老师们提出了一个别出心裁的解决方案:一个虚拟的小黄鸭。这只 CS50 小黄鸭是一个采用 GPT-4 技术的编程聊天机器人,它设有防作弊机制,避免学生抄袭

你可能听说过软件开发中的“小黄鸭调试法”:当你在编程中遇到难题时,向一个玩具或其他非活物讲解问题,这样做经常能帮你独立找到解决方案。这方法实际上相当有效。

CS50 的小黄鸭调试器正是基于这一理念:这个机器人旨在提供友好和支持性的互动,它仅针对课程相关的问题做出响应,不会直接给出作业答案,Malan 在接受 The Register 采访时如是说。

他还提到:“课程一开始,我们就明确规定学生不能使用诸如 ChatGPT 和 Copilot 这样的第三方软件,因为这些工具往往会提供完整的解决方案,而不是像优秀老师那样引导学生。但我们鼓励学生使用 CS50 自己开发的、带有教学防护机制的 AI 软件。”

去年推出的 CS50 小黄鸭获得了大部分积极反馈。拥有这样一个虚拟导师,学生可以随时求助。然而,就像所有 AI 模型一样,小黄鸭并非总是准确无误的,它在初步测试中大约能正确回答 88% 的课程相关问题。

对教师而言,这个编程机器人也大有裨益;它让他们能把更多时间用于协助学生的其他领域,而非仅仅是作业辅导。哈佛的教师在一篇分析小黄鸭调试器影响的研究论文中指出,他们构建虚拟 AI 编码助手的尝试取得了成功。他们相信“生成式 AI [能] 加强学生的学习过程,而不仅是单纯的干扰”,并且正在研究如何将这项技术应用到其他学科中。

利用少量搜索节约时间

个人而言,我的专业背景是物理学和科学新闻传播,而不是计算机科学。我在最新一代聊天机器人兴起前开始学习编程。过去,像许多人一样,我常常通过阅读博客或在像 Stack Overflow 这样的网站上寻找类似代码的例子来理解软件概念或解决编程问题。现在,借助 AI 的帮助,我可以更高效地完成这些任务。

以往我需要筛选海量信息来寻找适合我问题的解决方案,但现在我可以直接向大语言模型寻求帮助。我之所以学习,是为了更好地理解其他人使用的技术;而这些数字助手能让我更快地掌握诸如切片和数组之类的概念,或是了解别人的软件项目。

然而,机器编写的代码并非总是有效,有时甚至会降低代码库的质量。如果我直接把 AI 助手的输出加入我的代码中,它经常会引入新的错误,因为它可能与程序的其他部分不兼容。特别对于像我这样的新手来说,理解并修复这些错误很有挑战,有时我甚至分不清错误是由于代码本身错误还是使用场景不当。

用困难的方式学习 Python》的作者、软件开发者 Zed Shaw 在接受The Register采访时表示:“我认为,想通过当前 AI 工具学习编程的人应该设定两个目标:一是学会足够的编程知识以理解工具生成的内容;二是扮演‘代码审核员’的角色,学会识别和改进劣质代码。”

程序员需要能够识别机器生成代码中的错误,并且不应盲目信赖这些机器人。他们还应当警惕明显的版权代码潜入模型输出的可能性。

密歇根大学信息学院的计算机科学教授 Charles Severance 认为,ChatGPT 能够迅速给出解决方案,并配以“我认为这应该能解决你的问题...”等让人放心的话语。这种做法可能会让我们不自觉地放松警惕,减少对其提供解决方案的质疑。他还在网上发布了免费的编程课程。

他进一步指出,“永远记住,相比于你,ChatGPT 可能是一个技术水平更低的程序员。正确使用 AI 工具的唯一方法,是在你确信其给出的解决方案无误时才采用。”

明白自己在做什么是关键

要有效使用这些工具,你需要深解自己的问题,并且要能在提示中清晰地表达。GitHub 的首席产品官 Inbal Shani 在接受 The Register 采访时指出,你提出问题的方式直接影响输出中代码的质量。

她建议,用户应该像和同事交流一样使用 GitHub Copilot。她解释说:“你对坐在你旁边的助手提供的细节越多,比如你的目的、你要解决的问题的方向,你得到的答案就会越好。因为 AI 能获得更多上下文信息,它能更精准地搜索到合适的代码片段,或为你推荐适当的测试基础设施。”

编程语言正变得越来越接近人类语言,而聊天工具正是这一进程的新阶段

卡内基梅隆大学的助理教学教授 Phillip Compeau,他创立了 Rosalind 平台和 Programming for Lovers 教程,专为对计算生物学感兴趣的人设计,也持同样的看法。

他在教授编程初学者时,会建议他们暂时不要使用 AI。但对于已经掌握基础知识的进阶学生,他会教授他们如何利用这项技术提高工作效率和生产力。

他在接受 The Register 采访时表示:“我向学生展示的是,从 AI 工具生成的代码中获取准确无误答案的最佳方法,就是你能够清晰且准确地指明计算机需要执行的具体操作。这其实就是计算机编程的本质。随着时间推移,我们所用的编程语言已经越来越贴近人类的语言;而聊天工具正是这一进化过程的新步骤。”

明确你的程序要完成什么任务、应该如何工作,以及在哪些方面存在问题,这对于编程来说至关重要。这些核心技能只能通过持续不断的练习,随着时间逐渐掌握。你不能靠依赖 AI 就想跳过这个过程,如果你想成为一名合格的软件开发者。但是,如果你明智地使用 AI,你会快速提升,成为一名优秀的程序员——这个过程甚至可能会很有趣。®