LLMs could be, but shouldn't be compilers
3 months ago
- #Programming Abstractions
- #LLMs
- #Software Engineering
- 人们将大语言模型比作编译器,这引发了关于编程未来的思考:开发者是否仍需关注底层代码?
- 高级编程语言通过抽象底层细节降低思维复杂度,使开发者能专注于更抽象的概念。
- 编译过程意味着用部分控制权(如内存管理、代码布局)换取思维负担的减轻和生产效率的提升。
- 编程中的抽象依赖明确定义的语义、测试和上下文保证来确保正确性。
- 基于大语言模型的编程存在本质差异:自然语言缺乏精确语义,使得功能正确性更难定义和验证。
- 大语言模型的核心问题不仅是幻觉现象,更在于功能定义模糊——自然语言提示留下的空白需要模型自行填补。
- 大语言模型可能根据模糊提示生成多个「合理」实现方案,导致与用户真实意图出现偏差。
- 基于大语言模型的开发可能转向迭代优化模式,用户根据生成输出反复调整提示而非从零设计。
- 关键风险在于将核心设计决策交由模型决定,最终产生用户无法完全理解的软件系统。
- 随着大语言模型降低代码生成门槛,需求规范和结果验证能力将成为开发者更关键的技能。
- 虽然大语言模型可视为类编译器(将规范转为代码),但其让渡的控制权远超传统编译器。
- 要有效运用大语言模型,开发者必须提升精准定义需求与严格验证输出的能力。