一、.我们处于什么样的智能化时代
近年来,以大语言模型(Large Language Model,后文简称大模型)为代表的生成式人工智能技术飞速发展,其中,以OpenAI的GPT系列和国内的DeepSeek为代表的基础大模型(Foundation Model)持续发展,夯实了智能化根基。在此基础上,提示工程通过思维链(Chain of Thought)、思维树(Tree of Thought)等方法持续提升大模型的“思维”能力;检索增强生成(Retrieval Augmented Generation)技术通过引入外部知识库提升大模型的回答准确性和可靠性;而智能体(Agent)则通过引入规划、反馈和工具使用能力来提升大模型的复杂任务完成能力。近期研究者发现多模态大模型已经可以在内部形成局部的世界模型,从而生成具有交互性并遵循几何物理规则的 3D 世界并实现空间智能和可行动的人工智能。(湖北研楚教育咨询有限公司)
除了生成式人工智能,当前我们所处的智能化时代的另一个典型特征是人机物融合,即人工智能技术的应用深入渗透到社会物理空间中,促进人(用户以及可通过激励机制调配的人力资源)、机(包括计算、存储、网络、软件服务等在内的各类计算资源)、物(包括设备和可传感物体对象在内的各类物理资源)三方面的深入融合。2021 年 12 月,习近平总书记在中国科协第十次全国代表大会上指出:“以信息技术、人工智能为代表的新兴科技快速发展,大大拓展了时间、空间和人们认知范围,人类正在进入一个人机物三元融合的万物智能互联时代”。此外,2022 年 8 月,科技部、教育部、工信部等六部门联合发布《关于加快场景创新以人工智能高水平应用促进经济高质量发展的指导意见》,其中大力鼓励的制造、农业、交通运输、家居等人工智能应用领域和场景无一例外都具有典型的人机物融合特征。这些人机物融合场景深入工业、农业、服务业等生产和生活服务领域,是人工智能技术赋能千行百业、广泛创造应用价值的基础。
这种人机物融合智能的基础是“软件定义一切”的方法学和相关技术。所谓“软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程;而“软件定义一切”则将软件平台所管理的资源和提供的编程抽象泛化到人机物资源 。以“软件定义汽车”为例,通过软硬件分离、硬件标准化、开放可扩展,软件重新定义了整车架构及主要功能特性,同时也为智能座舱、智能驾驶等智能汽车应用场景提供了能力基础。因此,我们可以看到,软件以其高度的灵活性而成为管理各类资源、融合人机物的“万能集成器”,同时也使得整个人工系统的复杂性向软件集中 。
二、.神经网络将会取代软件吗
随着以神经网络和深度学习为代表的人工智能技术的发展,越来越多的人工智能模型被应用于各种应用领域中并在系统中扮演着重要的角色,因此,有些人认为神经网络将会逐渐取代软件。这种认识最早可能源自前特斯拉 AI 高级总监、OpenAI 创始成员与研究科学家 Andrej Karpathy 在 2017 年底的一篇博客文章中所提出的“软件 2.0”(Software 2.0)概念。他认为传统用 Python、C++ 等 语 言 编 写 的 软 件 属 于“软 件1.0”,而“软件 2.0”则是用神经网络权值编写的:通过指定所期望的软件行为(如“满足一组输入输出示例的数据集”)或其目标(如“赢得一局围棋”)并编写粗略的代码骨架(即神经网络架构),我们可以利用所能调配的计算资源来寻找能满足所期望的行为或目标的程序(即训练相应的神经网络模型)。虽然他认为“软件 2.0”不会取代“软件 1.0”,但是会逐步接管很大一部分软件的功能,如视觉与语音识别、语音合成、机器翻译、机器人、围棋等。
事实上,Andrej Karpathy 的“软件2.0”概念是在大模型出现之前提出的。经过这几年神经网络、大模型等人工智能技术的发展,越来越多的人相信神经网络将在未来取代软件。持这种观点的不仅包括来自于人工智能领域的专家,而且包括一些来自软件领域的专家。对此,笔者的观点是神经网络不会取代软件,而是作为软件中的一种重要的智能化部件存在。这一观点主要是基于以下几个方面的考虑。
(1)系统的确定性:神经网络作为一种概率模型具有高度的不确定性,而确定性是很多系统的基本要求。
(2)运行的透明性:神经网络作为一种黑盒缺少面向人类的透明性和可理解性,导致可信性不足。
(3)需求的创造性:神经网络基于过去的数据学习,而人类总是在不断探索新的体验,创造新的需求。
(4)成本效益问题:神经网络在处理很多计算和推理任务时能耗效率极低,存在严重的成本效益问题。
除此之外,两种观点之争背后还有一个深层次的价值观问题:我们是否要放弃对经济生活运转规律的掌控,转而接受一个“更聪明的”AI对我们一切的安排?事实上,如果我们接受的话,那么此前提到的几个问题可能很大程度上也不存在了,即我们不再创造新的需求而满足于过去已有的生活,同时能够接受一切被 AI 的“神秘力量”所掌控以及由此带来的不确定性。
如果我们希望以一种可信、可控的方式实现智能化发展目标,那么就需要高度重视人机物融合智能化系统及其背后的系统观和系统工程思想。如前所述,生成式人工智能与人机物融合是当前我们所处的万物智能互联时代的两大主要特征,由此产生的人机物融合智能化系统通过人机物资源的按需汇聚、柔性组合和灵活控制实现用户的个性化需求,从而为用户带来智能化体验。这类系统具有两方面重要能力,即“智”(能感知、会学习)与“能”(以行动改变世界)。前者主要依赖于大模型等人工智能技术来实现感知与决策,而后者则主要依赖于“软件定义”的方法论与技术实现人机物资源的统一抽象和按需使用。
综上所述,人机物融合智能化系统的外部特征是面向人机物融合应用场景灵活调控人机物资源,实现应用目标和智能化体验;而其内部特征是以机器学习(智)和软件定义(能)为手段,结合确定计算和非确定计算。由此,智能在这类系统中具有多个方面和多个层次的含义,而软件在其中扮演着多重基础性角色。
(1)海量、异构、分布的人机物资源需要以软件定义的方式进行统一抽象和管理,由此形成所谓的“泛在操作系统”,其中的 AI 模型也需要通过软件作为人机物融合的“介质”来融入并形成智能系统。
(2)软件定义的人机物融合系统可以实现类似于互联网软件系统的开 发运维一体化(DevOps),即构成系统的人机物资源及其协作关系与运行方式可以在运行时根据需求变化和运行反馈持续更新。
(3)以“算法 + 数据 + 算力”为基础的 AI 模型训练、推理以及相关的数据管理、模型部署、模型监控与演化全生命周期(即 MLOps 环路)均需要先进软件的支撑。
(4)定义系统的软件自身可以在运行时动态自主构造(如通过程序合成技术或大模型生成)并继续自适应演化(即软件版本自主迭代变化)。
由此可见,AI 技术在现实世界中的深入应用需要融入并形成完整的人机物融合智能化系统,而软件作为一种“万能集成器”在其中扮演着重要的基础性作用。AI 模型将主要作为这种新型软件系统的一类重要组件存在并发挥作用,其自身的运行(如推理框架、MLOps 环路等)以及对人机物资源的操控(如接入并调用各种硬件设备)都需要软件支撑。此外,许多人机物融合应用场景都对可靠性和安全性有很高要求,而AI 模型天然具有不确定性和不透明性,因此系统还需要 AI 模型与软件模块相结合的神经符号混合架构、运行时验证等多种方式实现系统的可信保障。
三、.生成式AI将会终结编程吗
如果软件继续存在,那么编写软件的开发者是否还需要那么多,甚至是否还需要继续存在呢?事实上,自从 2022 年底 ChatGPT 推出之后,各种“编程终结论”就不绝于耳,其中最有代表性的是前哈佛大学计算机科学教授、谷歌工程主管 Matt Welsh 的预测 :“生成式 AI 将在 3 年内终结编程,到那时候软件开发团队中只有两类人会保留,即产品经理和代码评审人员”。根据他的预测,未来软件开发只要有产品经理定义需求以及代码评审人员进行代码确认就可以了,而现有的很多软件开发岗位都不再需要了。
事实上,关于“AI 取代程序员”的讨论早已出现,只是在以 ChatGPT 为代表的大模型出现之后才形成广泛的影响以及焦虑感。许多企业都对大模型带来的软件研发效能提升抱有较高的期望,同时也投入了大量的资源构建基于大模型的智能化开发工具及实践体系,但在降本增效上似乎并没有看到特别明显的效果。值得一提的是,在度过最初的“狂热期”后,大多数企业对于大模型的看法也趋于理性。
越是在这样一种纷繁复杂的局面之中,我们越是要冷静思考软件开发背后的本质性问题,正确理解大模型所发挥的作用。《人月神话》的作者、图灵奖得主 Frederick P. Brooks 在他的经典之作《No Silver Bullet: Essence and Accidents of Software Engineering》中特别强调,软件开发的根本性(Essence)困难在于对于构成抽象软件实体(主要是需求和设计)的复杂概念结构的构思,而使用某种编程语言将这种抽象软件实体进行表示只是偶然性(Accident)困难。从这个论断中我们可以看到,大模型当前所擅长的代码生成能力仍然停留在解决偶然性困难这个层面上,而在根本性困难上的助力并不大。此外,面向对象技术领域的先驱、契约式设计的提出者Bertrand Meyer 在他的博客文章中明确指出,ChatGPT 这类大模型并不会带来编程的终结,而是会复兴软件工程领域的一些根本性的技术,如需求分析、精确的规格说明以及软件验证(包括动态测试和静态分析)。
因此,仅靠大模型技术的发展无法触发软件智能化开发的质变,因为这将涉及软件开发的根本性困难(即概念级别上的分析和设计),而大模型在这方面并不具备所需要的能力。当前的主流技术路线过于热衷于大模型、Agent 等 AI 技术的“眼球效应”,对于软件工程的本质困难思考不多,主要表现在以下 3 个方面。
(1)软件形态的多样性:软件的频谱很宽,形态的多样性很强。这个频谱的一头是高度个性化和场景化的小应用。这类软件实现结构简单(如可以通过组合和编排已有的服务和 API 来实现)、生存周期短(甚至可以按需合成、即用即抛),很适合通过最终用户(End User)通过自然语言驱动的方式(即自然语言编程)来实现。频谱的另一头是以操作系统为代表的大规模复杂软件。这类软件基础性和特异性强,功能及设计复杂,生存周期长且不断演化。对于这类软件,只有经验丰富的专家型开发人员才能驾驭,而智能化技术仅能提供辅助支持。
(2)软件的系统复杂性:软件从外部和内部看都具有很高的系统复杂性。从外部看,软件往往属于一个包含人、硬件、网络、物理设施设备等不同类型元素的软件密集型系统(Software Intensive System)的一部分,软件的有效性和正确性很大程度上取决于所处的系统上下文环境以及系统级的设计方案。这也意味着理解及编写软件代码的一部分重要背景知识并不在代码本身,而在代码之外。从内部看,软件具有很高的设计复杂性,不同组成部分之间交互关系复杂,从不同维度和关注点出发考虑的设计决策之间纵横交织,关注点的混杂和散布成为常态,由此造成软件的高层意图与软件实现结构之间映射关系复杂。
(3)软件开发的探索性:软件开发实现从现实世界问题到软件解决方案之间的转换。从问题空间和解空间两个方面看,软件开发都具有很强的探索性。从问题空间看,软件需求很难做到一次性完整、准确表述,开发人员在开发过程中一般都需要不断探索和完善对需求的理解,这种探索往往要以可演示原型为基础(这也是敏捷开发的基本思想)。从解空间看,软件运行在复杂的软硬件甚至物理环境之上,同时内部还存在复杂的交互关系,因此开发人员也无法仅通过代码就对软件最终的运行效果有完整、准确的认识,而是需要通过不断运行和观察运行效果来不断探索和调整各种设计决策。
总体上看,软件开发是一个逐步精化的过程,全程伴随着各种不同抽象层次上的设计决策。大模型的代码生成能力所依赖的代码数据所提供的信息是平面化的(缺少软件抽象),同时仅反映最终结果(缺少决策过程),因此不足以支撑大模型获得更高层次上的智能化开发能力。
四、.智能化时代需要什么样的软件人才
从企业开发实践看,当前基于大模型的智能化开发支持很大程度上仍然是局部性的。一个典型现象是开发人员个体有感(如显著减少了网络搜索、查询 API 手册、代码库查找等方面的时间),但在项目和企业层面上没有太大感觉(如未带来显著的开发效率和产品迭代与交付速度提升)。这主要是因为大模型主要支持的编码环节在开发中的时间占比并不高(10%~20%),而需求和设计不清、任务分工协调问题等所导致的卡点和堵点则耗费了软件开发团队大量的时间。
尽管如此,展望未来大模型仍然将会给软件开发带来巨大的变化 [9]:开发人员将越来越多地以交互式对话的方式利用大模型协助自己完成开发任务,其中任务拆解和问题表达(即提示)能力将越来越重要;初级程序员岗位将大大减少,简单和重复性的编码任务(如功能逻辑主要是数据库查询更新及常用 API 调用的任务)将主要通过生成式的方式完成;同时,阅读理解以及验证代码的能力需求和挑战将更加突出。
总的来说,在这样一个人机物融合智能化时代,软件人才需要具备以下两个方面的重要能力,其关键在于将大模型的解决方案快速探索和构建与严谨的工程化思维相结合。
(1)软件定义一切的系统观及系统能力。在资源层面上,能够将云计算的思想拓展到人机物三元空间,以软件定义的方式实现多元资源虚拟化,支持分层解耦和跨域共用。在系统层面上,能够以云边融合和边缘云原生的方式实现人机物融合的新型系统建构,实现类似 DevOps 的快速反馈、敏捷适应、持续演进。
(2)面向人机协作智能开发的高阶工程能力。能够与大模型高效协作,实现复杂软件开发目标。在问题理解方面,善于发现问题的本质以及其中蕴藏的核心概念。在问题分解与管理方面,能够将问题进行充分分解并管理其解决过程。在问题表达方面,能够清晰、完整地表达问题诉求并提供必要的上下文。在验证与确认方面,能够快速理解和验证大模型生成的结果,确认符合性,及时发现问题并提供反馈。
五、.结语
当前,我们正处于以生成式人工智能与人机物融合智能互联为主要特征的智能化时代,由此形成的人机物融合智能化系统将支撑未来智能化生活目标的实现,而软件作为一种“万能集成器”在其中扮演着重要的基础性作用。从系统形态的角度看,以大模型为代表的 AI 模型不会取代软件,而是作为一种智能化部件充分融入软件系统,从而渗透万事万物,赋能千行百业。从软件开发方式的角度看,大模型是软件工程师的助手和伙伴而不是替代者,与大模型的高效人机协作将是未来软件开发的主流模式。
因此,智能化时代的软件人才仍然扮演着重要的作用。诚然由于大模型等 AI 技术的发展,小应用开发、前端开发等岗位会显著减少,但随着人机物融合趋势的不断发展,作为“万能集成器”的软件的疆域也不断扩展,从而创造更多的机会。与之相应,智能化时代的软件人才需要具备软件定义一切的系统观以及面向人机协作开发的高阶工程能力,从而将 AI 模型的解决方案快速探索和构建与严谨的工程化思维有机结合。
(湖北研楚教育咨询有限公司)