不看文章直接开玩:https://missile-command-game.centminmod.com/
一、AI 开发方式正在改变写代码的逻辑
最近,一位开发者用谷歌的 Gemini 2.5 Pro 重制了一款经典网页游戏《导弹指挥部》。他的做法引发了很多开发者的讨论。建议大家先去试玩一下游戏,再来看这类讨论会更有体会。
这个项目的开发过程很有代表性。他一开始用 Gemini 的“画布模式”生成了基本结构,接着用聊天界面不断调整细节。比如,他想加一个商店系统时碰到了 bug,游戏会直接跳到第 182 关。于是他转而用 Claude 来处理问题,顺便再通过 Firebase 接入一些 API。最终,这款游戏在几天内完成,而传统方式可能需要几周。
不过,这个游戏所有的代码都写在一个文件里,看起来不符合标准做法。但这恰恰说明了 AI 编程的特点:快速、集中、结果导向,而不是从一开始就规划清晰的结构。
有人担心这种方式虽然能很快做出成果,却让人忽略了架构设计。也就是说,虽然表面上看起来功能都能跑起来,但开发者对背后系统的理解可能是模糊的。
另一个被讨论的问题是:AI 生成的代码是否可追溯、易维护?有人提出给每段代码贴上唯一编号的方法,以便追踪来源。但也有人质疑这种做法的效果。因为 AI 每次生成的内容都有不确定性,同样的提示可能得到不同的结果。这种不稳定性给后期维护带来挑战,也让软件开发的规则开始发生变化。
二、AI 编程让更多人“能做东西”,但也带来新问题
有用户分享了自己用 AI 做小工具的经验。他不是专业程序员,但只通过自然语言指令就完成了文件转换工具。这类例子越来越多,说明写程序正在变得更容易,不需要传统意义上的“会编程”。
这让人想到过去数码相机对摄影行业的影响:当普通人也能拍出不错的照片,专业门槛就降低了。现在,AI 正在对软件开发做类似的事。
但这种趋势也有副作用。有人指出,虽然 AI 帮助用户快速做出应用,但这些用户并没有掌握背后的原理。他们获得的是结果,不是能力。
还有一个问题是:AI 生成的程序很多时候是对已有代码的重组和简化,而不是全新创造。长期来看,这可能影响软件创新。
在学习方面,AI 对一些人确实是很好的辅助工具。比如,有人通过不断提问让 AI 拆解复杂的系统,比传统教材更高效。但也有人发现,光是学会如何有效提问,就可能花上很长时间。这种技能本身就不简单。
三、工具变了,开发方式也变了
关于 AI 工具对开发流程的影响,不同代际的开发者有不同看法。一些有经验的工程师担心:将来开发标准会不再基于人类设计,而是以 AI 更容易生成为准。这种变化可能让人类的作用边缘化。
但也有很多年轻开发者已经适应这种新方式。他们在处理问题时会同时使用多个 AI 模型,把 Gemini、Claude、Cursor 一起用。这种“多模型协作”已经变成了新的常态。
有人还注意到一种新趋势:开发者开始不太关心代码细节,而更关注需求描述和最终效果。这跟过去开发者常常深入底层不同,现在更像是在管理过程,而不是亲自操刀写每一行代码。
与此同时,开发工具本身也在变化。比如,有人试图把 AI 聊天记录直接接入版本控制系统,让提示成为项目的一部分。这可能会影响未来的代码管理方式,也许需要新的中间层标准来适应 AI 编程的特点。
四、《导弹指挥部》是一个很好的观察窗口
这次被重制的《导弹指挥部》其实本身就是一个很好的例子,可以观察 AI 编程的优缺点。
最初的版本在策略设计上有明显缺陷,比如导弹不会误伤,但开发者通过不断反馈和调整,最终加上了这些细节。说明 AI 虽然起点快,但要完善还是需要人类参与。
游戏的技术细节也暴露出一些问题。比如状态更新和帧率绑在一起,说明系统设计上不够清晰。有用户进一步设想用硬件级别去复刻,但目前 AI 在这方面还能力有限。
这些讨论说明一个现实:AI 在做界面、做功能上很强,但在系统层面还存在明显短板。
五、这不只是工具的变化,更是开发角色的变化
讨论最后走向更深层次的问题:我们是不是正处在一次编程范式的转换期?
有人认为这就像过去从汇编语言转向高级语言那样,是一次技术进化。但也有人担心,这样的转变会让开发者失去技能,对系统越来越不了解。
历史上类似的争议其实很多。比如,当年很多程序员也不看好 IDE 自动补全功能,但最后大家都接受了。也许 AI 编程会经历类似的过程,从不适应,到接受,再到成为默认方式。
不过这次的不同之处在于:AI 不只是一个工具,它开始在内容创作中占据主导地位。现在已经有人 98% 的代码是由 AI 写出来的,开发者变成了“需求定义者”和“质量把关人”。
这种转变确实让效率大幅提升,但也带来了新风险。如果不理解 AI 生成过程和系统行为,我们可能失去控制感。
在这场变化里,唯一可以确定的是:AI 已经深度介入编程过程。它能带来帮助,也带来问题。关键不在于接受还是拒绝,而在于我们是否准备好用新的方式继续思考和改进代码。