从 AI 辅助编程认识到了什么

近期比较多地使用了 AI 来辅助编程,可以分为以下几点来讨论: 现在 AI 辅助编程的水平如何 我们如何利用 AI AI 辅助编程对普通的从业人员的影响几何 AI 水平如何 在实际体验中,以 Claude 3.5 Sonnet 为例,AI 可以完成从项目搭建到具体的功能开发,并且可以输出不逊色于一个 3-5 年的中高级工程师水平的代码,如果有更详细的要求,则它输出的代码可以更有结构和符合常见的软件工程实践。 如果说到这为止,而不说任何前提,那么我们很容易得出一个令人焦虑的结论,便是 AI 是不是要替代程序员的工作了。这种论断是一种不负责任的说法,因为它既没有说明替代的时间,也没有具体的替代过程。AI 是替代哪一方面,还是说只需要我们描述一段话,AI 就可以自主完成所有的工作。 显而易见,只要有亲自尝试过现在 AI 编程的人,都无法得出以上的结论。如果以预测未来的视角来看,也是无意义的,因为这需要时间,历史上的很多事情都在变迁,技术在发展,也许有一天某个工种不再存在,但这于一个善于学习,愿意学习的人,可能并不是一个问题。计算机的世界本就如此。技术变化后,不是人失去工作,而是同一批人做了不同的工作。 由于 AI 编程能力的增强,现在 zed, cursor 等编辑器已经整合了 AI 到开发工作流当中。 AI 读懂现有代码后,进行功能开发,基本是能较大的符合当前的仓库代码设计和要求的,不需要对代码做非常多的调整。所以有更大的 context length 的模型便有很大优势。Claude 3.5 的 200k 的上下文基本能满足不少的代码仓库了。 特别是如果需要使用不熟悉的技术栈来实现东西时,比如前端程序员需要开发后端,AI 已经完全可以写出有很好实践的项目结构,表设计的后端项目。 但这一切都有一个前提,就是它需要人描述好需求,不仅仅是说功能是怎样的,还包括技术细节,如果我们忽略技术细节的描述,AI 输出的代码可能不是我们需要的,这时候需要多轮的交互,来让它产生符合预期的代码。 一个简单的例子,我们需要实现一个基于 JWT token 的登录认证流程,使用不同的 prompt 会有些微的差别(prompt 差别在现在的 AI 能力下,已没有那么重要了)。 Prompt 可能的效果 基于 JWT 实现登录认证流程 可以输出可工作的代码 基于 JWT 实现登录认证流程,考虑最佳实践 有安全考虑,比如加上 refresh_token 这里的问题不在于 prompt 的差别带来了不同程度的代码,在于 AI 输出了这些可以工作的代码后,人类如何使用。 ...

十二月 29, 2024