编程语言的 AI 支持
内容提要
作者几年前开始在IDE中支持编程语言,并开发了几个开源编程语言相关的工具。生成式AI进一步弱化了语言间的差异,通过语法树和最近变更的相关上下文分析人类行为,提供代码建议。IDE工具将进一步强化生成式AI。强类型语言的接受率比弱类型语言高10%,混合语言代码接受率下降。编程语言的基础设施需要重构。AI缩短了开发者在语言上的技能要求,降低了准入门槛。
延伸解读
强类型语言在AI补全中更占优势
文章指出,强类型语言的代码接受率比弱类型语言高约10%,而混合语言场景(如JPA Query、React、Vue)的接受率会进一步下降,前端代码受模板影响下跌更明显。这提示开发者,在AI辅助编程中,类型信息有助于模型生成更准确的建议,而多语言混合的代码库可能面临更高的补全失败率。
IDE与AI结合依赖静态分析能力
作者对比了GitHub Copilot与IDE配合智能建议+静态分析的体验,认为后者能提供更好的AI体验。例如,对于私有化的语言接口,IDE可以将潜在接口发送给模型处理,而不带静态分析功能的编辑器能力有限。这意味着,单纯依赖通用AI补全工具可能无法充分利用项目上下文,IDE的深度集成仍是关键。
生成式AI倒逼编程语言基础设施重构
文章强调,生成式AI一次性生成大量代码,使得校验成本成为交付速度的瓶颈。单元测试作为快速检验逻辑的方式,其隔离特性对中大型项目尤为重要。如果不能降低校验成本,AI生成的代码反而可能让机器跑不动单元测试。因此,编程语言的基础设施需要重构,以适应AI带来的变化。
AI降低语言门槛,但编程语言仍不可替代
作者认为,AI缩短了开发者在语言上的技能要求,降低了准入门槛,未来开发者可能需要掌握更多语言。但编程语言依然不可或缺:每个人对自然语言的理解不同,若直接用自然语言编程,人类间将无法协同。在text2SQL等场景中,AI的主要工作仍是去除自然语言歧义,将确定性部分转换为代码再编译。
Q&A
生成式AI如何影响不同编程语言的代码接受率?
强类型语言的接受率比弱类型语言高约10%。混合语言代码(如JPA Query、React、Vue等)的接受率会进一步下降,前端代码受模板影响下跌更明显。依赖Java生态的Kotlin效果比普通动态语言略好。
AI编程工具是如何分析开发者行为来提供代码建议的?
AI工具通过两种方式分析人类行为:基于语法树的相关上下文和基于最近变更的相关上下文。这两种模式能提供更好的上下文,从而提升生成代码的质量。
为什么说IDE工具会进一步强化生成式AI?
IDE配合智能建议和静态分析能提供更好的AI体验。例如,对于私有化的语言接口,可以将潜在接口发送给模型处理,而不带静态分析功能的编辑器能力有限。
生成式AI时代,编程语言的基础设施为什么需要重构?
生成式AI一次性生成大量代码,限制交付速度的主要是校验成本。单元测试提供了快速检验逻辑的方式,但现有开发模式下校验成本高,需要重构基础设施以降低校验成本,否则AI无法真正提升整体速度。
AI降低了编程语言的学习门槛吗?
是的。IDE提供语法提示,AI生成主要函数和代码补全,只要掌握一门编程语言,其他事情变得容易。AI缩短了开发者在语言上的技能要求,降低了准入门槛,使更多人能加入行业,未来开发者可能需要掌握更多语言成为全能型人才。
有了AI之后,编程语言是否不再重要?
不是。每个人对自然语言的理解不同,如果都用自然语言编程,人类间无法协同协作。在text2SQL、text2DSL等场景中,AI主要工作是去除自然语言歧义,将确定性部分转换为代码再编译。而且多个大语言模型之间存在差异,编程语言依然不可或缺。