纵观软件工程的发展,太像是数学伴随着物理的发展史了。
物理学旨在归纳客观世界的运行规律,数学提供形式化、可计算的底层逻辑体系;而软件工程,本质是一场用数字逻辑复刻物理世界的可计算范式之旅。
软件工程诞生之初,为解决大型程序规模失控、bug泛滥、维护成本暴涨、项目频繁延期,结构化范式与瀑布模型诞生,将软件开发严格拆解为需求、设计、编码、测试、交付的线性工序。这一阶段的软件工程,核心是面向过程、面向功能的确定性计算,关注“输入如何得到输出”,聚焦指令执行与结果计算,完全不关心业务实体的本质、事物间的关联关系。人们通过模块化拆分、顺序化流程约束驯服代码混乱,以标准化工序保障软件可控可落地,但此时的软件只是被动执行指令的计算工具,仅服务于数字运算需求,与真实物理世界完全割裂。
随着软件承载的业务愈发复杂,纯过程化的线性计算范式彻底触顶,软件工程迎来第一次关键范式跃迁:从面向过程、面向功能,升级为面向对象。以现实事物为核心,通过封装、继承、多态完成对真实实体的抽象、归类与行为定义。自此,软件不再是零散的指令集合,而是真实世界实体的数字化镜像,实现了从“机械计算”到“结构化建模”的关键跨越,为后续复杂业务系统搭建了最基础的语义框架。
互联网时代到来,2001年敏捷宣言正式发布,否定了瀑布模型刻板、重型的线性交付模式,确立了迭代增量、持续适配、响应变化的核心研发理念。后续云原生、微服务、DevOps体系的成熟,解决了现实业务的不确定性、动态性与快速迭代需求,以灵活、可扩展的架构适配复杂多变的业务场景。但该阶段的核心局限依旧明显:无论敏捷还是云原生,优化的始终是软件交付过程与运行架构,建模边界仍牢牢禁锢在数字系统内部;乃至AI智能体时代,软件成为一次性的消费品,这是敏捷-低代码-AI一脉相承的一条脉络。但是它们目前很多应用,都是在一个数字世界的业务里映射数字世界。
我觉得对于真实物理世界的态射工作,才是未来软件工程领域皇冠上的真正明珠。从我这个不写代码的人的角度,本体-可计算本体所需的反馈机制,是这个态射的关键。
另外一条脉络是,领域驱动设计(DDD)与可计算本体,软件是物理世界可计算、可推理的精准投影。通过标准化的实体、属性、关系、逻辑公理与业务约束,将物理世界的人、货、场、空间、行为、经营规则与因果逻辑,统一转化为机器可解析、可计算、可推理的知识体系。就像是从元素和集合,演进到关系和态射。
京东、抖音、美团、拼多多、滴滴,Applovin,Palantir,对于2B客户而言,都是一个能告诉“你做了什么”就预估“能得到什么”的可计算系统。至于消费者流量、物流体系、骑手是谁的,其实不是关键,关键是能不能通过软件工程把所有的这些真实世界的人、物利用某个激励和反馈机制驱动起来,进而形成一个可靠的计算。
我觉得未来只有两种软件工程的目标函数,一种是信息的体验,不论是图文视频,它要的是满足;另外一种是计算的服务,不论是2B还是2C,它要的都是正确。
不论哪一种,都需要效率。有感而发,信口胡诌。