大语言模型时代如何学习编程
「软件开发者 Mark Seemann 公开回信讨论大语言模型时代的编程学习。一位无计算机科学背景的读者借助大语言模型搭建了包含接口、PostgreSQL、LLM 流水线的系统,却在转入生产时发现系统超出自身理解水平。Seemann 坦承对 AI 的立场尚未确定,并分享了对能力与理解的思考。」
大语言模型正在改变人们学习编程的方式,但它究竟是在缩短学习曲线,还是在制造一种理解的错觉,这是许多开发者正在亲身经历的问题。软件开发者 Mark Seemann 在其博客上发表了一篇题为《在大语言模型时代学习编程》的文章,以公开回信的方式,回应了一位读者关于这一话题的长篇提问。他坦言,自己的回答并不严谨,因为在如此不确定的局面下,他只能尽力而为,也不认为这些看法具有不可动摇的真理性。
来信的读者没有正式的计算机科学背景,却在一年前开始着迷于 AI 辅助编程,并借助大语言模型搭建了一个规模不小的 TypeScript 与 JavaScript 系统,其中涉及接口调用、PostgreSQL 数据库、LLM 流水线、研究自动化以及多模型工作流。他形容最初的体验几乎像魔法,AI 似乎把想法与可运行产物之间的距离压缩到了极致。他甚至用近乎历史学家的视角来描述自己的提问方式,希望直接询问那些深刻理解软件的人,是如何在亲身经历技术转型的同时去理解这场转型的。
真正的困难出现在把原型转变为生产产品的阶段。这位读者描述,他用 AI 修好一个错误,紧接着又冒出一个新的错误,然后另一个部分开始以他并不完全理解的方式运行。经过数月的重构之后,他产生了一个令人不安的念头:他可能搭建了一个超出自身理解水平的系统。当一切正常运转时,这道鸿沟几乎不可见;一旦出问题,它就变得非常真实。他有时甚至不知道下一步该做什么,除非再去询问另一个模型。这让他怀疑,自己这一年在构建的究竟是一个产品,还是一个产品的表象:它足够精巧所以能跑起来,但他尚未深刻理解到真正拥有它。
这种困境指向一个核心问题,即工具能力与个人能力之间的错位。借助大语言模型,生成代码的门槛被大幅降低,一个没有系统训练背景的人也能组装出复杂的系统。但软件工程的价值不仅体现在代码能否运行,更体现在系统能否被理解、调试、演进和维护。当系统的复杂度超过开发者自身的心智模型时,任何一次修改都可能引发连锁反应,而开发者只能依赖外部工具逐个修补,无法形成稳定的判断。
读者在信中明确表示自己并不反对 AI,反而对这些系统充满兴趣,希望以专业身份与之协作,只是不确定什么才是正确的相处方式。Seemann 对此表示理解,并选择先公开自己的立场以求透明。他说自己尚未对 AI 下定论,但倾向于不喜欢它,同时清楚它可能无法被阻挡。他确实在使用和实验这些工具,它们时常令他印象深刻,另一些时候又令他沮丧,而恰恰是在最令他惊艳的时候,他的抵触情绪最为强烈。当工具表现不佳时,他还能从三十多年所学仍然有用的幻觉中汲取一丝暖意;当它表现最佳时,他甚至会产生更激烈的念头。
这篇文章带来的启示在于,学习编程的目标不应被简化为产出可运行的代码。在使用大语言模型的过程中,学习者需要刻意保留追问的习惯:为什么这段代码要这样写,这个抽象解决了什么问题,改动会影响哪些部分。只有把这些理解内化为自己的知识结构,工具才真正成为放大器,而不是理解的替代品。对于正在经历类似困惑的开发者而言,把 AI 视为随时在场的结对伙伴,同时坚持自己承担对系统行为的最终解释责任,或许是目前较为务实的一种关系。
来源:Heooo AI工具导航