编程 ≠ 软件工程:AI 编程热潮下的认知危机与范式重构
2026-03-17 00:00:00
文章转载自"北大纵横"
Anthropic CEO Dario Amodei在《技术的青春期》中宣称:顶尖工程师借助AI可实现“指数级效率跃升”,并由此推断普通开发者将迅速被自动化取代。未来LLM将直接输出机器码,“编程语言和库文件都将变得多余”。 就在这种技术决定论甚嚣尘上之际,一位曾亲手奠定现代NLP基石的人物发出了截然不同的声音。fast.ai创始人、Kaggle传奇冠军、ULMFiT论文作者——这句话并非情绪化的嘲讽,而是一把精准的解剖刀,切开了当前 AI 编程叙事中最危险的认知盲区。 当我们将“写代码”等同于“软件工程”时,是否正在系统性地误解技术创新的本质?要理解Howard批判的深层逻辑,首先必须厘清两个常被混用的概念:编程(Programming)与软件工程(Software Engineering)。 编程是将已知逻辑转化为可执行指令的过程,其核心任务是语法正确性与功能实现。而软件工程则是在高度不确定的环境中,通过抽象建模、系统设计、持续迭代与协作治理,构建可维护、可演化、可扩展的复杂系统。Fred Brooks在1986年的经典论文《没有银弹》中早已指出:软件开发的瓶颈从来不在编码环节,而在“概念结构的构建”——即对问题域的理解、模块边界的划分、接口契约的设计以及演化路径的规划。Howard的实证观察印证了这一点:“我现在大约90%的代码由模型生成,但整体效率并未显著提升。”真正的开发时间消耗在需求澄清、架构权衡、调试推理、技术债管理与跨团队协同上,而非键盘敲击。据 IEEE 2023年对全球12,000名开发者的调研,平均仅17%的工作时间用于实际编码,其余均分配于沟通、设计与验证。 因此,将AI编程工具视为“生产力革命”的核心,本质上是一种因果倒置:当前 AI 编程工具最令人迷惑的,是其表面展现出的“创造性”。例如,Claude Code 曾用 Rust 实现一个 C 语言编译器,引发社区惊叹。然而,Howard 与 LLVM 创始人 Chris Lattner 的深入交流揭示了残酷真相:该实现并非原创,而是对训练数据中已有编译器模式(如 TinyCC、LCC)的高维插值。大语言模型的“创造力”本质上是组合式外推(combinatorial extrapolation),而非概念性突破(conceptual breakthrough)。它能在已知解决方案的空间内高效搜索最优组合,但无法跨越训练分布的边界。它没有目标函数,没有状态机,没有对程序语义的真正理解。正如计算机科学家Leslie Lamport所言:“程序不是文本,而是状态转换的规范。”开发者容易误以为模型理解了问题,从而跳过关键的验证环节。约38%的自动生成代码存在隐蔽逻辑错误,而使用者仅对其中12%进行了深度审查。Howard的批判不止于技术层面,更指向一场正在发生的认知能力退化危机。并非天生,而是通过数万小时的“必要之难”(desirable difficulty)锤炼而成。开发者在手动编写、调试、重构的过程中,逐步建立起对程序行为的内在表征。这种表征使他们能在脑中模拟执行流、预判副作用、识别耦合点。 而当前主流AI编程工具的设计哲学恰恰消解了这一过程。用户输入自然语言提示,模型返回完整函数,中间的认知黑箱被彻底遮蔽。开发者不再需要理解算法细节、内存布局或并发语义,只需“相信模型”。Anthropic 2024年的一项纵向研究佐证了这一趋势:在持续使用Claude Code六个月后,中级开发者(2–5 年经验)在系统设计题上的表现平均下降23%,而在基础语法题上提升 15%。当团队集体丧失对核心系统的深层理解,任何架构演进都变得举步维艰。Howard警告:“这些公司正在用 AI 加速走向不可维护的深渊。”面对这一困局,Howard并未否定AI的价值,而是提出了一种范式级的重构方案:将AI置入与人类相同的交互环境中,构建“人—机—AI”三方实时协作的生态。 该工具以Jupyter Notebook为载体,允许开发者在富交互环境中逐行执行、可视化对象状态、动态修改参数,并即时观察系统响应。AI代理同样运行于同一Python解释器内,可直接操作内存对象、调用函数、读取变量——Alan Kay的Smalltalk强调“活的对象”(live objects),Ken Iverson的APL主张“可执行的数学”,Stephen Wolfram的Mathematica追求“计算即文档”。降低认知摩擦,强化直觉反馈,让开发者与系统持续对话。 在nbdev中,AI不再是“代码生成器”,而是“协作者”。它可建议下一步实验、解释异常行为、生成可视化图表,但所有决策仍由人类主导。开发者通过微步迭代(micro-step iteration)持续验证假设,bug在诞生之初即被捕捉。Howard自述:“我几乎不用调试器,因为错误从未有机会隐藏。” 从直观交互切入(简单),经由系统复杂性展开(复杂),最终提炼出可复用的抽象模式(简单)。他指出,当前AI编程工具的商业模式正在加剧知识剥夺与权力集中。 开发者将创意、领域知识与调试经验输入封闭的商业模型,却无法获得相应产权或反馈控制权。平台通过用户交互数据持续优化模型,形成“免费劳动力—更强模型—更多依赖”的正反馈循环。据估算,2023年全球开发者为闭源AI模型贡献了价值超47亿美元的隐性训练数据。 当基础编程能力被外包给API,新一代开发者失去了“从零构建”的机会。而今,创新被限定在模型允许的插值空间内,真正的颠覆性思想因缺乏实践土壤而窒息。 苏美尔时期的书写权仅限祭司阶层,直到腓尼基字母简化后才普及。AI技术若要释放最大社会价值,必须走向“去中心化赋能”,而非“中心化控制”。否则,我们将迎来一个由少数科技巨头定义软件未来的时代——优秀的开发工具不应追求“替代人类”,而应致力于“增强人类认知”。1. 透明性:所有 AI 建议必须附带可追溯的推理链与数据来源,避免黑箱决策; 2. 可干预性:开发者应能随时介入、修改、否决 AI 行为,保持控制主权; 3. 认知共建:工具应促进开发者对系统内在机制的理解,而非掩盖复杂性。 在放射学中,AI标记可疑结节,医生专注诊断与治疗决策;在病理学中,AI量化细胞特征,专家聚焦生物学解释。这种“分工增强”模式既提升效率,又保留人类核心价值。 AI可承担重复性任务(如样板代码生成、格式校验、基础测试),但系统设计、架构权衡、异常处理等高阶认知活动必须由人类主导。工具的设计重心应从“生成完整函数”转向“支持探索式验证”。回看马斯克与Dario的论断,其根本谬误不在于高估AI,而在于低估了软件工程的复杂性。他们将编程简化为文本生成任务,忽视了其背后庞大的认知、协作与演化体系。 Howard的批判之所以有力,正因其根植于基本面研究:软件的价值不在于代码行数,而在于其承载的问题解决能力;工程师的核心竞争力不在于打字速度,而在于构建心智模型的能力;技术的终极目标不是自动化人类,而是扩展人类的可能性边界。 真正的技术革命从不来自对现有流程的简单加速,而源于交互范式的根本重构。从命令行到图形界面,从瀑布模型到敏捷开发,每一次跃迁都重新定义了“人如何与系统共处”。 AI编程的未来,不应是让模型替我们思考,而是创造一个让人类与AI在同一认知平面上实时协作的新环境。唯有如此,我们才能避免陷入Howard所警示的认知陷阱,在释放AI潜力的同时,守护人类创造力的火种。 这或许才是价值投资视角下,AI编程工具最值得押注的长期方向。
文中观点仅为作者观点,不代表本平台立场
各位读者朋友,公众号改了推送规则,如果您还希望第一时间收到我们推送的文章,请记得给北大纵横公众号设置星标。
点击左下方公众号“北大纵横”→点击右上角“...”→点选“设为星标⭐️”。