开发者生态
morning
人工智能没有智慧,你也不会
2026-09-22
1 阅读
约5分钟阅读
dimonomid
字号:
仅在过去的一个月里,我就听到了这些短语:自 2025 年以来我就没有写过代码了;代码审查已死;人们不再阅读代码。当然,这个行业正在发生转变,但是,陷入不再阅读和编写代码的陷阱的人和组织只会自担风险。事实是,随着时间的推移,vibe 编码的项目会变成难以维护的混乱。原因很简单,但很难修复:代码可维护性和良好的架构没有我们可以应用的良好衡量标准,因为需要数月、甚至数年的时间才能注意到不良架构或不可维护代码的影响。我们当然可以定义糟糕的代码:难以阅读、难以理解、难以适应未来发展的代码。在这种代码中,更改一件事会以非常不确定的方式破坏程序,或者破坏其他地方的逻辑,与您的更改相距甚远,类似于“蝴蝶效应”。添加功能的代码意味着一项严肃的任务,因为在多个地方更改代码并且仍然忘记修补所有内容,从而导致不一致。设计的不变量不明确的代码,其作者不再防止违规并确保一定的一致性。难以测试的代码,需要模拟并暴露实现细节,导致脆弱的测试,最终阻止有意义的重构。然而,我们知道注意到糟糕的代码需要时间。几个月,几年。当然,经验丰富的软件工程师有敏锐的嗅觉,可以发现代码异味,并可以在观察到不良影响之前采取行动。熟练的开发人员、专家依靠他们用汗水和泪水建立起来的直觉,长时间工作试图调试和修复生产问题,发誓再也不会愚蠢地重复过去的错误。这种直觉不能真正变成一系列严格的规则,因为一切都依赖于上下文。专家们与使初学者更有效率的相同规则和方法是不兼容的。专家不遵守规则,而是制定规则。所以我们遇到了一个问题……首先,人工智能没有接受过关于代码可维护意味着什么的培训。例如,任何强化学习都需要一个可以立即测量的奖励信号,而不是几个月或几年。人工智能从适合初学者的规则手册中学习规则。人工智能会注意到野外代码中的模式,老实说,大多数野外代码都非常糟糕。没有可以为可维护代码定义的适应性函数,至少没有我们可以辨别的函数,否则它就会被烘焙到我们的 linter 中。你是否注意到人工智能在“简化”代码方面有多糟糕?是的,SOTA 型号。它甚至无法正确定义函数,选择将函数拆分为实际上不可重用的较小函数。如果要理解较大的函数,您还必须阅读提取的较小函数的实现,那么从较大的函数中提取较小的函数是一个非常糟糕的选择。定义可重用和澄清的功能是一种艺术形式,一种需要掌握的艺术。大多数开发人员仍然是 Dreyfus 模型中的“高级初学者”,无法定义良好的、清晰的、可重用的功能,目前的人工智能也是如此。如果人们仍然能够控制并从这些错误中吸取教训,那么情况还不错。但我们看到人们依赖人工智能来编写甚至阅读代码的趋势。这些人永远不会达到精通,因为他们不再做出选择,他们不再为编码中的错误承担责任,也不再从这些错误中学习。现在是人工智能在犯错误,人工智能不会从这些错误中吸取教训,人们也不会依赖人工智能进行编码。哎呀!不要误会我的意思,我认为法学硕士是一个很好的工具。我不是勒德分子,我已经将人工智能融入到我的日常工作中,同时将我所学到的知识传授给我的同事。我很高兴利用法学硕士来处理我们必须处理的所有无聊、吸人灵魂的事情。我也很享受我所看到的效率优势。但归根结底,它只是一种工具,就像所有其他革命一样,它的光芒也会消失;在我看来,已经是这样了,坦率地说,现在的科技新闻相当无聊。人们实际上很不擅长做出预测。我相信未来会给我们所有人带来惊喜。但是,我要做出自己的预测……未来,我们将看到越来越多的公司自豪地吹嘘其“NO-AI”政策作为竞争优势。他们是对的。人们说,“但自动化装配线总是更高效”,只不过软件行业很特殊,因为我们一直在大规模地进行自动化,我们所做的一切都是自动化,法学硕士并不是唯一的手段,而且根据具体情况,它实际上可能会分散注意力。从任何有意义的意义上来说,“编码没有得到解决”。当然,你可以指示 LLM 为你构建一个 C/C++ 编译器,
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱