• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gitlight
V2EX  ›  程序员

软件工程不会消失

  •  
  •   gitlight · 1h 44m ago · 913 views

    -- AI 率 0% --

    考虑一个软件系统是如何构建和迭代的,它可以被抽象为以下的一个 Loop:

    需求建模 A->代码编写 A->需求反馈 A->需求建模 B->代码编写 B->需求反馈 B......

    那么,我们如何定义一个完美的系统?给定系统 S ,用户需求的形式化描述为 R,对于所有针对系统的动作 A 的反馈,其不确定性都为 0(预期返回正确),这里可以用条件熵来表示:∑H(R|S(A_i)) = 0 。而需求反馈本身则扮演了优化函数的作用,它的作用本身是引导条件熵 ∑H 向 0 优化,优化的过程则是降低各个流程的不确定性。

    编程语言的演化,本质上是不断提高抽象程度,把越来越多的实现细节从程序员转移给编译器,编程语言是一种对于信息的 encoder 。现代语言使程序员用更少的描述表达所需行为,并把更多实现选择交给系统,失去了对底层代码的控制,引入了更多的不确定性(信息熵)。如果要加强对底层的控制,则需要用更底层的语言和更长的描述长度降低不确定性。即便是 AI Coding 也无法违背信息论的规律。程序员对系统的描述越短,系统的不确定性就更高,无法通过建立一个万能的预测器无尽地压缩描述来无损地描述系统本身,其存在一个理论下界,也就是柯氏复杂度;

    这一点在需求建模流程也广泛存在着,用户的需求往往是在多轮迭代、描述、交互中产生的,需求方依旧是人,那么需求拆解、编写是一个无法避免的过程。

    回过头来表达我的观点:

    1.把复杂需求的实现寄希望于许愿式编程是不现实的,消除需求的不确定性和编码的不确定性是一个永恒的问题

    2.AI Coding 时代,程序员可能会消失,但软件工程不会因为代码生成变得廉价而消失,反而会更重要。

    16 replies  •  2026-10-23 16:02:24 +08:00
    acx4040110
        1
    acx4040110  
       1h 38m ago
    软件工程不会消失,只是换了一种形式存在
    原先软工中成本最高的环节是编码,现在编码中的重复内容逐渐被 AI 替代
    我们只用把控编码中最关键的设计部分,比如整体架构/技术选型/框架设计等等
    所以工程师应该更多思考自己的核心价值除了编码,还体现在哪里
    我认为是在技术之外的一些内容,比如对价值的判断,对产品的思考,对用户的思考等等
    Need4more
        2
    Need4more  
       1h 30m ago via iPhone
    @acx4040110 那不又回到了人人都是产品经理的时代了吗哈哈,我觉得相反,以后人人都是老板,老板的技能才是最有价值的。程序员、产品经理都是提供单一技能的岗位,这部分工作都可以被 AI 取代掉。
    yvyvyv
        3
    yvyvyv  
       1h 13m ago
    除了编码 只能提供情绪价值了,
    sickworm
        4
    sickworm  
    PRO
       58 mins ago
    -- AI 率 100% --

    如果站在反方(即“软件工程终将消亡”**或**“软件工程会被彻底重构为完全不同的范式,从而失去现有的意义”**)的角度,要推翻或解构这个论点,不能去硬刚“信息论”和“柯氏复杂度”的数学真理,而是需要从**系统的边界定义、计算范式的跃迁、需求的供给侧变革以及工程成本的经济学等维度来进行破局。

    反方的核心反驳逻辑如下:

    ---

    ### 1. 拆解“条件熵”假设:如果需求不需要“形式化收敛”呢?

    正方模型的假设前提是:我们需要一个确定性的系统 $S$,使其对所有动作的响应满足 $\sum H(R\vert{}S(A_i)) = 0$。

    但“绝对确定性”本身就是传统软件工程的桎梏。

    * **容错性与模糊系统的崛起**:传统软件工程之所以追求 $\sum H \to 0$,是因为传统代码是确定性规则( Deterministic Rules )。但现实物理世界和人类社会本身就是高度模糊、概率性的。
    * **软件范式的转移( Software 1.0 $\to$ Software 2.0/3.0 )**:
    * **Software 1.0**:人类写规则,计算机执行(需要严密的软件工程来保证精确性)。
    * **Software 3.0**:基于大模型和神经网络的**概率性计算**。
    在许多复杂场景下(如推荐系统、智能体协作、自动驾驶、自然语言交互界面),用户根本不需要一个“不确定性为 0”的确定性状态机。系统允许存在某种程度的“熵”,并通过**自我纠错、动态重试和概率收敛**来完成目标。


    * **反驳**:当系统的终态不再追求“无损精确”,而是追求“大致正确且具备极致弹性”时,传统软件工程中为了消除条件熵而建立的复杂架构、严格契约和形式化验证,就失去了存在的必要性。

    ---

    ### 2. 解构“柯氏复杂度”:描述的极限不在人类,而在上下文与隐式知识

    正方指出:程序员对系统的描述越短,不确定性越高,受到柯氏复杂度的理论下界限制。

    反方的反驳是:**人类不需要在 Prompt 里面手动输入全部描述长度( Description Length )。**

    * **环境与上下文的自动补全**:柯氏复杂度计算的是“描述系统所需的最短信息量”。但这并不意味着这些信息量必须由“需求方/程序员”通过手动敲文字来提供。
    * **具身与自我演化的上下文**:AI 智能体可以通过直接感知用户的历史行为、系统的运行日志、全网的领域知识、物理环境的数据,甚至通过在沙盒中进行数百万次的 Self-Play (自我对抗博弈)来自动填充这部分信息量。
    * **反驳**:人类给出的描述确实变短了,但**信息的补全被交给了环境和模型自身的先验知识( Prior Knowledge )**。人类不再需要写复杂的 Spec 或架构设计,AI 能够通过“观察 + 隐性表达”直接消融掉这部分不确定性。

    ---

    ### 3. 经济学与“抛弃型软件”( Disposable Software )对软件工程的毁灭

    传统软件工程(模块化、解耦、CI/CD 、设计模式、可维护性)的核心价值主张是“为了应对未来的变更成本( Maintainability )”。

    如果生成代码的成本趋近于 0 ,**“维护”这个概念本身可能就不再存在了。**

    * **从“长期维护”到“用完即扔”**:
    在传统工程中,我们精心设计架构,是因为改动一个模块的成本很高。但在 AI 时代,当需求 B 出现时,我们可能根本不需要在原有的系统 $S_A$ 上去迭代重构,而是直接由 AI 在数秒内根据最新需求生成全新的系统 $S_B$。
    * **反驳**:软件工程的绝大部分工具链(设计模式、重构、依赖注入、版本控制、灰度发布)都是为了“管控代码演进过程中的复杂度”。如果软件变成了“一次性消费品( Disposable/Ephemeral Software )”,即写即用,用完即废,那么“软件工程”赖以生存的土壤——**长期的复杂度管理**——就彻底塌陷了。

    ---

    ### 4. “需求建模”的解构:人不再是需求的终极定义者

    正方提出:“需求方依旧是人,需求的产生和拆解是一个不可避免的过程。”

    反方可以挑战这一“以人类为中心( Human-centric )”的软件观:

    * **AI 驱动的需求自发演化**:未来的软件可能不再是“人类提出需求 $\to$ AI 编写软件”,而是系统根据目标(如“提升留存率”或“降低运营成本”)自发探索、建模并实时合成( On-the-fly Synthesis )所需的软件功能。
    * **软件界面的消失**:当软件不再呈现为固定的 App 或 Web 页面,而是表现为根据用户当前意图动态生成的临时交互界面( Generative UI )和微服务时,传统的“需求分析-原型设计-开发-测试”链路就全线瓦解了。
    * **反驳**:人类只需要给出一个极其高阶的目标( Objective ),具体的子需求建模、实现、反馈闭环全部由系统内部的 Agent 网络自治完成。人类甚至不知道系统内部是如何运作的,自然也不存在所谓的“需求建模工程”。

    ---

    ### 反方观点总结(对比一览)

    | 维度 | 正方观点(软件工程永生) | 反方观点(软件工程消亡) |
    | --- | --- | --- |
    | **系统目标** | 条件熵 $\sum H \to 0$,追求确定性与无损收敛。 | 接受概率性系统,通过自适应与自我纠错解决问题,不再追求绝对精确。 |
    | **描述长度** | 人类描述越短,不确定性越高,受限于柯氏复杂度。 | AI 通过先验知识、多模态上下文与自我博弈补齐信息量,无需人类显式描述。 |
    | **软件生命周期** | 需要长期的架构设计、模块解耦与复杂度控制(传统工程核心)。 | 软件成为“用完即扔”的实时合成产物,放弃维护性,从根本上消灭工程。 |
    | **需求建模** | 需求源于人类,多轮交互拆解是不可消除的流程。 | 需求被高阶目标替代,AI 自治探索与建模,软件形态变为动态生成的无形服务。 |

    > **反方一句话总结:**
    > “软件工程之所以会消亡,不是因为代码生成变完美了,而是因为**‘构建一个长期存在、由人类定义细致需求、追求确定性逻辑的静态代码系统’**这种模式本身,将被**‘动态合成、概率自适应、用完即弃的智能体网络’**所彻底取代。”
    sickworm
        5
    sickworm  
    PRO
       57 mins ago
    上面是整活,我是先看了 AI 的评价,然后问 “如果你是反方,你反对这个观点,你又会怎么说”
    Need4more
        6
    Need4more  
       54 mins ago via iPhone
    @sickworm 人类首先是把思考外包给了 AI ,然后是把身体外包给了机器人,那我们人类还有什么价值?
    shawnvan
        7
    shawnvan  
       49 mins ago
    从把编码交给 ai 不现实 到 把 复杂系统交给 ai 不显示,本质上认知没有发生变化
    实际情况是,很快,甚至现在,ai 处理复杂系统或者复杂任务的能力,要远超于相当一部分人,而这部分人,也在这个行业里面混的风生水起,无非就是公司或者业务小一点而已
    xomix
        8
    xomix  
       47 mins ago
    不会,我觉得 AI 把我从复杂的代码工作解放了,以前我一个功能一周多,每天都很烦躁,现在一天多测试都做好了,我只需要跟 AI 讨论清楚技术取舍、实现关键点和设计。比我以前工作轻松多了。
    sickworm
        9
    sickworm  
    PRO
       45 mins ago
    @Need4more 只能享福了
    loryyang
        10
    loryyang  
       41 mins ago
    短期我是这么看的,coding 提效是实打实的,开发同样功能时间大大减少,从这个角度,大部分程序员就会被干掉
    但是另外一个角度看,个性化产品的可能性大大提升,各行各业的数字化会极大地发展,以前不是不想要,而是做不到。每个人可以有一个自己的**、**、**。所以需求会大大增加。从这个角度,程序员的需求会大涨
    另外一个视角是:非程序员是否可以替代程序员,我自己用下来的结论是:短期不可能,除非你只想搞一个 demo 。
    所以综合来看,前景并没有那么悲观,当然也不能认为乐观。反正尽快学会 AI 提效先活下去再说吧。
    gitlight
        11
    gitlight  
    OP
       32 mins ago
    感觉讨论有点跑偏了,我其实一开始没想讨论程序员会不会被替代这件事,因为我觉得这是大概率,身边正在发生的事情。

    不过总有新的人入行,以后的人怎么看待软件,方法论肯定和我们现在的这一代不太一样。我觉得软件工程会披着本体论、控制论的皮重生。

    如果以 @sickworm 的思考来看,RSI 确实是一个节点,强自监督的实现几乎意味着 ASI 的实现,我们也就没必要来这讨论软件不软件的了😅
    gitlight
        12
    gitlight  
    OP
       31 mins ago
    @Need4more 不同行业的人都有相同的苦恼,哎
    Need4more
        13
    Need4more  
       24 mins ago via iPhone
    @loryyang 如果程序员需求大涨,怎么岗位没有增长?
    这个和影视圈一模一样,人人都能手搓短剧,必然导致演技差的被淘汰,演员这个职业不会消失,只是不需要那么多低端从业者了。一个直接的后果就是造成人才断层,新演员没有市场导致演技差,等老演员死完了,这个职业就彻底被消灭掉了,大家的口味也被 AI 喂的差不多了,那就是真的死了吧。

    程序员现在正处于这个过渡阶段,欢迎来到人人都是程序员的未来世界。
    gitlight
        14
    gitlight  
    OP
       24 mins ago
    @shawnvan 不是说把工作交给 AI 不现实,而是说指望用简单的方法去解决一个本来就复杂的问题是不现实的,如何指挥 AI 高质量地完成任务,如何显式约束,是程序员要考虑的方法论。实际上 V2 上的程序员现在大多都面临着管理比以往多 1-2 个数量级的代码的问题了吧?
    unused
        15
    unused  
       20 mins ago
    AGI 秒了
    DIO
        16
    DIO  
       Just Now
    简单来说,和物理世界连接越多,AI 的触手就足够少,他就无法做到全自动。

    比如需求很多是衍生于物理世界的真实需求,人类的想法目前而言是又难以量化的,因为人类不光受到大脑控制,激素等等都会影响人。

    所以软件工程的发展或者程序员的需求,是会跟着社会需求量发展变化。

    与之相对的就是数学这些,语聊多,验证简单不依赖人的主观感受。所以受到的冲击尤其大
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4922 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    ♥ Do have faith in what you're doing.