LLM时代:编程学习还是表演?

Learning Programming in an Age of LLMs

一位读者来信描述了他利用LLM构建复杂TypeScript系统的经历,却发现自己对系统缺乏深层理解,一旦出错便束手无策。这让我反思:在AI辅助编程时代,我们是否正在构建一个自己无法掌控的复杂系统?作为有30年经验的开发者,我承认自己仍在学习数据结构和语言语义,但这更多出于好奇而非功利。AI确实能加速开发,但人类大脑吸收知识的速度仍是瓶颈。我倾向于向LLM提出可验证的问题,而非询问不可证伪的建议。在这个技术转型期,我们该如何平衡AI的效率与个人的深度理解?

我怀疑人类学习速度能否被显著加速,瓶颈不在于教师或教材,而在于人脑吸收新知识的能力。
  1. japhyr

    我是《Python Crash Course》的作者,本周我也收到了完全一样的邮件。我也在考虑写一份公开回应,因为要真诚地回答这些问题,基本上需要写一整篇文章。而且公开回应也很有必要,因为现在许多第一次接触编程的人都在问类似的问题。

    > 你认为 AI 是否让人们开发的速度快于他们能跟上的速度?

    绝对是的。这正是这封邮件的核心,也是所有提出类似问题的人的担忧。就在五年前,要构建一个中等复杂度的可运行项目,唯一的途径是学习构建 MVP 所需的基础到中级概念。而现在,如果你能较好地驾驭 LLM,就能快速构建出一个远超你自身实现理解能力的 MVP。

    我认为没人能对上述邮件中提出的所有问题给出明确答案。我认为人们确实能比以前学得更快,因为他们能比以前更快地在不同领域之间建立联系。但这需要在学习和工作方式上具备技巧和自律。你必须在构建项目的过程中,有意识地构建自己的理解。

  2. js8

    我自己给自己回答了这个问题——别再担心 LLM 了。道理很简单:由于柯里 - 霍华德同构(Curry-Howard isomorphism),编程语言本质上只是某种形式逻辑的记号。

    现在问你自己一个问题:你想用哪种语言来维护程序?你认为自然语言会比形式逻辑更容易、更易于维护吗?

    答案是否定的。所以你需要程序员,那些能读懂形式化描述并根据新需求进行调整的人。

    LLM 确实是了不起的技术,但事实是——自然语言就是有点烂。因此,你其实并不需要它们(参见 https://en.wikipedia.org/wiki/AI_effect )。

    我认为人们喜欢 LLM 的原因,和喜欢魔术师一样。但就像魔术师使用隐藏的戏法一样,LLM 只是运行着一些你看不到或无法理解的算法。

    所以,担心 LLM 会抢走编程工作,有点像担心魔术师会抢走仓库工人的工作,因为他们能让东西悬浮。与此同时,我们其实已经有了自动化的程序员——它叫编译器。

  3. duendefm

    我是一名软件工程师,做软件开发,也做系统维护,还负责网络和电话系统,并且带一些初级员工。使用 AI 是有问题的。它既能加速你,也能拖慢你。在系统维护方面,有时你需要在各种机器上快速完成大量工作,这时你不能指望一个基于云的 AI 神谕(那需要时间)来替你干活。同时,你越把它当作神谕使用,你的能力就会越弱。如果你是某个领域的专家,我会说利用 AI 作为工具确实有益,但它很容易变成一把双刃剑,让你变得不那么熟练。对于初级员工来说,AI 能让他们快速产出令人印象深刻且对网站和某些视觉效果尚可运行的东西,但如果陷入“使用 AI 的循环”,初级员工就不可能成为专家。要让 AI 产生纯粹的正面影响,我想我们必须生活在一个软件工程不再重要的世界里。也就是说,数据库的选择、高可用系统、编程语言本身都不再重要。

  4. agentultra

    “我用 AI 构建了一个东西,但我看不懂它。我想做修改和修复,却没有任何能力去理论化它为什么会失败,或者该如何修复。”

    天哪。看,你必须先能自己编程,然后才能用 LLM 构建。否则,你没有任何办法去评判输出结果。AI 不会让你成为程序员。

    学习编程才会。

    很有趣的文章。我的建议是走老路子,走那条艰难的路。通往知识、技能和学习的路上,没有捷径。

  5. AnodicElegy

    “类似的论点也曾在中国加入世界贸易组织时被使用。确实创造了很多新工作,只是不在西方世界。”

    中国加入 WTO 其实并不是 AI 导致大规模失业的一个好的实证例子。当时美国的失业率已经在上升,随后不久达到峰值,然后下降到远低于中国加入时的水平,直到大金融危机期间才再次上升,而那次危机与中国竞争几乎没有关系——或者至少关系很小。这并不是说没有工作流失,甚至没有大规模流失,但这些工作被替代了,而且近年来美国的失业率已接近历史最低点。中国加入 WTO 是支持“被 AI 取代的工作会被新工作替代”这一观点的论据,而不是反论据。

    https://fred.stlouisfed.org/series/UNRATE

  6. aethertap

    这个问题对我来说非常真实,因为我目前正在教自己的孩子编程,我们已经为此努力了好几年。看着 AI 似乎让学习所有这些内容的前提变得无效,这令人相当沮丧,老实说,因为我爱编程,目睹这一切发生很艰难。

    所以,我改变了自己的教学方法。我让他们做三件事,希望这能帮助他们为即将进入的世界做好准备:

    1. 始终有一个手工制作的项目在进行中,即使过程痛苦缓慢,也要在没有 AI 协助的情况下完成它。

    2. 在使用 AI 时,将其视为一个在数据结构、算法和架构需求上运行的编译器,而不是源代码。在指示它组装之前,你必须理解你所构建内容的理论部分。

    3. 将 AI 用作强大的工具,来增长你自己对算法和故障排除的知识。每当出现问题时,都是一个提出几个关于实际问题的假设的机会。不要先让模型来做。我让他们把这些假设写下来,作为问题卡片放入我们定制的 kanban 工具中,然后他们再用模型来调查自己离真实问题有多接近。

    我希望这能给他们带来与我一生调试代码经历相似的东西。当我使用 AI 编程时,我带来的最有价值的知识似乎是 […]

  7. RugnirViking

    最近我发现一件非常迷人的事:重学一些我曾上过最好的教程(如 catlike coding、libtcod roguelike 等),然后让 Astra 将它们转译成其他技术、技术栈或语言。包括所有的弯路、错误的开始和死胡同,因为教程作者故意包含了这些内容。我让它把软件截图中的图形复制过来,并重现带有交互性的图表,以展示当输入变化时图、形状或值是如何变化的。

    另一个关键点是让它保留我们被要求编辑文件的方式。有时是“用这个替换 x 方法”并附带解释,但有时是“修改 suchandsuchafile 顶部的检查以处理新的方法签名”,这当然迫使用户跟随并亲自尝试,而不是盲目地复制粘贴。

    我确实觉得我通过这种方式获得了对新技术的洞察,就像使用原始教程时一样。

    值得注意的是,在任何人产生任何想法之前,生成的文档纯粹是为了个人消费。发布此类内容将对社会整体以及原作者本人造成道德伤害。如果他们想制作,完全可以自己去做。

  8. sreekanth850

    我正在这样做。在开始使用 LLM 编程后,我出于纯粹的热爱,对学习编程产生了极大的兴趣。我走出工程领域时,曾认为物理学是高贵的,但现在我理解了自己对构建事物的热情有多高,以及量子力学有多无聊。晚做总比不做强。

同日更多故事

2026-09-16