乐于分享
好东西不私藏

【AI软件实践变革】1-聊天导向编程CHOP重塑软件开发的新范式

【AI软件实践变革】1-聊天导向编程CHOP重塑软件开发的新范式

在生成式人工智能快速发展的今天,软件开发领域正在经历一场深刻的变革。自2022年底ChatGPT公开亮相以来,基于大语言模型的AI助手在程序员群体中迅速普及。到2023年底,估计已有75%的开发者在工作流程中使用某种形式的AI编码工具。这些工具从自动补全引擎到对话式编码助手,利用强大的LLM来生成代码、解释算法,甚至从自然语言提示中生成整个软件组件。结果,曾经需要耗费数小时手工完成的任务现在可以显著更快地完成。麦肯锡最近的一项实证研究发现,使用生成式AI辅助的开发者可以在近一半的时间内完成某些编码活动(例如,编写新代码快50%,代码重构快33%)。这种生产力的提升预示着软件工程效率将超越以往自动化进步所实现的飞跃。

CHOP的核心理念

聊天导向编程(Chat-Oriented Programming,简称CHOP)是由Steve Yegge在2024年中期提出的一个术语,指的是一种编程风格,开发者通过AI助手进行交互式对话来生成代码,而不是在文本编辑器中手动编写代码。从本质上讲,编码过程变成了对话驱动:开发者指定需求、提出问题,并通过提示和自然语言指令迭代完善输出,而AI则相应地生成和修改代码。这种方法可以被称为“通过迭代提示精炼来编码”,与传统的逐行手工编写代码的方法形成鲜明对比。

CHOP的核心思想是将编程从一种纯粹的机械活动转变为一种协作对话。在传统编程中,开发者需要深入了解编程语言的语法、API的使用方法、算法的实现细节等。而在CHOP模式下,开发者更像是与一位知识渊博的合作伙伴进行交流,通过自然语言描述自己的意图,让AI来处理具体的编码细节。这种转变不仅改变了编码的方式,也改变了开发者的思维方式。

CHOP在实践中的应用

在CHOP工作流程中,许多传统的开发步骤都因AI的能力而得到加速或改变。例如,理解一个新的代码库——这通常需要阅读文档和源代码数小时——现在可以通过简单地向AI提出关于代码的尖锐问题来简化。开发者报告说,在IDE中集成了基于聊天的助手后,“理解我们的代码库变得就像问问题一样简单”,就像问队友一样。AI可以利用存储的上下文或搜索代码库来解释函数、数据模型和依赖关系,只需几秒钟。这与CHOP之前的时代形成鲜明对比,那时程序员可能需要花费大量时间搜索代码和外部资源来建立心理模型。

当涉及到实现新功能或修复bug时,CHOP将空白屏幕问题转变为一个引导式的共同创作过程。开发者不再手动编写样板代码或查找API用法,而是通过自然语言描述所需的功能来“委托绘画”。然后,AI起草满足该请求的代码,可能提供多个建议或改进。人类可以审查这个草稿,要求AI调整某些部分(例如,“让这个函数变成迭代而不是递归”),添加约束(“确保输出已排序”),或请求测试。这个交互循环持续进行,直到代码满足需求。实际上,编码开始类似于高层设计讨论,开发者专注于程序应该做什么,而AI处理大部分如何实现的问题。正如一位从业者所描述的,“使用CHOP,编写代码更像是有了一个协作伙伴——你说出你想要的,AI填充细节”

CHOP对开发工作流程的影响

CHOP显著改变了软件开发生命周期。Ado Kukic指出,在传统工作流程中,六个典型开发步骤中只有一个(编码)发生在代码编辑器内,而需求分析、研究和代码审查等任务占据了开发者的大部分时间。聊天导向编程将这些活动中的更多带入对话界面。例如,研究解决方案可以通过向AI询问相关算法或库建议来完成,有效地将一些Google搜索卸载给助手(它可能已经接受了大量文档的训练)。甚至代码审查也可以成为与AI的协作过程——开发者可以在提交人工代码审查之前,要求AI解释代码更改或根据某些风格指南进行检查。

早期证据表明,只要开发者保持监督,CHOP可以在不牺牲质量的情况下加速开发。测试驱动开发(TDD)可以与CHOP很好地融合:开发者指定测试(用自然语言或代码),AI生成通过这些测试的代码。测试充当正确性契约,有助于确保AI的输出符合规范。这是在CHOP中管理信任的一个例子——通过将AI输出锚定到可验证的标准。我们将在第六部分更深入地讨论信任和问责措施。

CHOP与传统提示工程的区别

重要的是要将CHOP与更简单的单次提示工程概念区分开来。在使用GPT-3/ChatGPT进行编码的早期,开发者经常编写一个精心设计的提示(即描述整个任务的详细指令),并希望模型的单一响应能够解决它。CHOP则拥抱了一种交互式的、迭代的方法——提示通过对话进行精炼。与其在前期花费过多精力来设计完美的提示,不如由开发者一步步引导AI,这更加宽容和适应性强。这种动态方式与现代动态提示技术(第九部分)相一致,后者利用持续的上下文和对话,而不是静态提示。

简而言之,CHOP是通过对话进行编程:代码通过人类和AI之间的来回交流涌现出来,导致一个更加流畅且可能更具创造性的开发过程。这种范式转变不仅提高了开发效率,也为软件开发带来了新的可能性。

CHOP的优势与挑战

CHOP的优势是显而易见的。首先,它大大提高了开发速度。通过与AI的对话,开发者可以快速生成代码、解决问题,而不需要花费大量时间在编写样板代码或查找API文档上。其次,CHOP降低了编程的门槛。即使是不熟悉特定编程语言或框架的开发者,也可以通过与AI的对话来完成复杂的编程任务。此外,CHOP还促进了知识的共享和传递。AI助手可以成为团队中的”知识库”,帮助新成员快速了解代码库,或者帮助经验丰富的开发者快速学习新技术。

然而,CHOP也带来了一些挑战。首先,过度依赖AI可能导致开发者对代码的理解不够深入。如果开发者只是简单地接受AI生成的代码而不进行仔细审查,可能会引入难以发现的bug或安全隐患。其次,AI生成的代码可能不符合项目的编码规范或最佳实践。虽然AI可以生成功能正确的代码,但它可能不了解项目的特定要求或团队的工作方式。最后,CHOP需要开发者具备良好的沟通能力和问题分解能力。开发者需要能够清晰地表达自己的需求,并且能够将复杂的问题分解为一系列可以通过对话解决的小问题。

CHOP的最佳实践

为了充分发挥CHOP的优势并避免其潜在的问题,开发者应该遵循一些最佳实践:

  • 保持代码审查
    :即使代码是由AI生成的,也应该像审查人类编写的代码一样进行审查。这有助于确保代码的质量、安全性和可维护性。
  • 使用测试驱动开发
    :通过编写测试来验证AI生成的代码,可以确保代码的正确性,并且可以作为未来重构的保障。
  • 逐步精炼提示
    :不要期望一次对话就能生成完美的代码。通过多轮对话,逐步精炼和完善代码,可以获得更好的结果。
  • 了解AI的局限性
    :AI助手虽然强大,但它也有局限性。开发者应该了解这些局限性,并在必要时进行人工干预。
  • 建立团队规范
    :团队应该建立关于使用AI助手的规范,包括如何标记AI生成的代码、如何进行代码审查等。

CHOP的未来展望

随着AI技术的不断发展,CHOP将会变得更加成熟和强大。未来的AI助手可能会更好地理解上下文,能够更准确地预测开发者的意图,甚至能够主动提出改进建议。此外,CHOP可能会与其他AI辅助开发技术(如代理编程、动态提示等)相结合,形成一个更加完整的AI辅助开发生态系统。

在教育领域,CHOP也可能会改变编程教学的方式。学生可以通过与AI的对话来学习编程,而不是通过传统的记忆语法和练习算法。这种方法可能会使编程学习变得更加有趣和高效。

结论

聊天导向编程(CHOP)代表了软件开发范式的一次重大转变。它将编程从一种纯粹的机械活动转变为一种协作对话,大大提高了开发效率,降低了编程门槛。然而,要充分发挥CHOP的优势,开发者需要适应新的工作方式,建立新的最佳实践。随着AI技术的不断发展,CHOP将会在软件开发中扮演越来越重要的角色,成为未来软件开发的主流方式之一。

关键要点:

  • CHOP是通过与AI的对话来生成代码的编程范式
  • 它将编程从机械活动转变为协作对话
  • CHOP可以显著提高开发效率,降低编程门槛
  • 开发者需要保持代码审查,了解AI的局限性
  • CHOP是未来软件开发的重要发展方向