软件定义的内涵与意义
大隐于市 工业灵魂
软件是典型的数字虚体。从形态上说,它无形无态,没有任何人能够直接看到软件的存在状态,只能在屏幕上间接看到它的外在表现形式;从存储上看,它实际上就是一系列按照一定模式或模型组成的二进制数据;从作用上看,软件生成的特定指令代码,既可以驱动显示器/打印机等外设,也可以通过设备的控制器来直接操控设备;从传输上来看,软件本身和软件生成的数字产品可以跨越时空界限被传输到任何赛博空间(Cyberspace)能够覆盖的范围。
软件,大隐者。“隐于市”且“无形”,看不见,摸不着。因此,很多人也就对其忽视、轻视或者无视。但是软件又如同空气之于人类一样,它让人类社会中的无数设备以正确的逻辑保持正常的高速运转,以维护社会基础设施的正常运营,须臾不可或缺。今天,一个没有软件的社会是不可想象的失控场面。
40年前,软件只是芯片的附属物,其作用范围限定在单片机之内,普通百姓不知道还有“软件”这么一个东西。三十年前,软件开始崭露头角,其作用范围限定在操作系统中的小工具,大家对软件的印象就是“算算数”或者“玩游戏”而已。20年前,人们开始重视电脑的应用,因为软件无法像硬件一样可触可见,而且无法做成固定资产,因此,很多企业领导都愿意花钱买一大堆电脑摆在屋里,好看且有面子。而对于软件,领导的想法就是去拷贝几个盗版用用,或者轻蔑地说:“软件好办,找几个学软件的人花几万元自己开发一个!”
近十几年来,软件大举进入了机器,成为机器中的“软零件”“软装备”,进而成为机器的大脑和灵魂,主宰了机器世界的运行逻辑;同时,开发任何复杂产品,都已经离不开软件手段的支撑,从此,世界上再不能缺少软件。而两大类软件——研发和管理手段数字化软件(非嵌入式软件)、产品本身数字化软件(嵌入式软件),统称为工业软件。
网景创始人、硅谷著名投资人马克·安德里森(Marc Andreessen)认为:“60年前的计算机革命,40年前的微处理器发明,20年前的互联网兴起,所有这些技术最终都通过软件改变各个行业,并且在全球范围被广泛地推广。”他的研究结论正如他写的文章名称“软件正在吞噬整个世界”。
这一切,隐于不知不觉,始于青萍之末,行于涟漪之间,荡在时空之中。酝酿了几十年之后,一场软件定义、软件控制、软件赋能/赋智、软件化生存的风暴,已经来临。
工业软件,原本兴于工业巨头。NASA、波音、洛克希德、福特等航太、汽车企业,从20世纪60年代就开始了软件的研发。软件代码所形成的控制指令,早就像血液一样流淌在产品之中,像中枢神经一样控制着产品行为。
早年习惯用打印机将软件程序打印成册,供程序员审核查阅。作者在20世纪80年代初学习计算机的时候,还必须使用穿孔纸带来保存自己的作业程序。在那个时候的软件开发中,因为计算机少,可用机时有限,因此不得不把成千上万行软件程序打印出来,在纸面上仔细审阅修改。三十多年后的今天,别说是穿孔纸带,就连在纸面上打印程序,基本上都没有人做了,因为程序代码量实在是太多了!靠打印在纸上去查阅的方式已经无法满足程序员在短时间内阅读和调试大量代码的工作需要,这个工作已经交给了专业代码调试软件。
在20世纪60~70年代阿波罗飞船计划实施时期,软件代码是一定要打印在纸上的,以方便查阅和备份。大家是否知道,当年NASA的“码农女神”——软件首席工程师玛格丽特·汉密尔顿,给阿波罗登月飞船写的导航和登陆程序的代码量有多少?打印纸堆起来比她本人的身高还要高!如图1-1所示。
图1-1 玛格丽特和她为阿波罗11号飞船写的源代码
1968年12月21日,绕月的阿波罗8号飞船升空第5天,宇航员误操作删除了所有导航数据,致使飞船无法返航。玛格丽特带领MIT的程序员们连夜奋战9小时,设计出了一份新导航数据并经由巨大的地面天线阵列上传到阿波罗8号,让它顺利返航。
1969年7月20日,阿波罗11号飞船登月前,危机再次发生。当年电脑算速极慢,系统只能存储12KB数据,临时存储空间仅1KB。飞船登月前几分钟,电脑因过度计算几近崩溃。正是玛格丽特首创的“异步处理程序”,让阿波罗11号学会了“选择”:当电脑运行空间不足时,最宝贵的存储空间只留给最关键的登月任务,其他任务暂停,由此而让登月舱成功降落在月球表面。
从绕月到登月,玛格丽特写的软件有序地控制了飞船,把人类首次送上月球。用软件程序通过赛博空间来远程控制物理设备,在1969年就已经实现了。以程序化指令不限时空地控制物理设备,其实一直是软件的终极使命。
以今天的视角来看,上述代码数量与现在先进设备中的代码数量相比,简直是微不足道。航太领域本来就是工业皇冠上的明珠,是先进软硬件技术的发祥地。普通人可能会惊讶和欢呼于载人航天的成功和人类首次登月,但是对于这些看不见、摸不着的软件在其中所起的“灵魂”般的控制作用,基本上不了解。更重要的是,玛格丽特走通了一条对当今工业来说极其重要的技术路径:软件可以在赛博空间中,不限时空地传输和安装,不限时空地运行其中的指令,体现人类设定的逻辑和执行过程,让遍布各处甚至远在天边的物理设备按照人类意愿工作。
当传输软件的赛博装置从地面巨大的天线阵列与航天器之间点对点传输,变成无处不在的互联网数据传输,可以随时上传/下载软件时,软件就已经向着“泛在化”大举进军了。过去曾经严重阻碍工业发展的一些瓶颈问题,因为时空限制被软件和网络打破,而从梦想变为了现实。
无处不在 软件生存
如果说五十年前的阿波罗飞船上的软件还只是航天工业领域的软件,那么在今天,软件已经融入日常生活,支配工业设备,甚至影响人类行为。每天清晨,人们生活的打开方式,早已经不是50年前的收音机、10年前的电视机,而是放在枕边、桌上的智能手机。启动汽车,自驾上路的打开方式,也已经不是钥匙点火和挂挡、查阅纸质地图,而是按键点火,自动或手动设置汽车驾驶模式程序,设定导航目的地。进入车间,蓝领工作的打开方式,也已经不是摊开图纸工艺卡、开会讨论问题,而是参阅电脑屏上的CAD图纸,启动数控程序。还有那看不见的深嵌在产线、设备、车辆、仪表等物理设备中的嵌入式软件,也在悄悄地用数字指令规范着机器的行为,配合着操作者的意图。
无论是手机中的APP,还是汽车上的数字化驾驶界面,或是数字化图纸、数控程序或数字指令,它们都有一个共同的名字——软件。软件不仅嵌入了我们身边的器物,还在逐渐替代某些物理元件或零部件。我们不妨仔细观察身边的事物:家中的电器、代步的座驾、随身的手机、车间的设备、试验的仪器,一件一件,都已经开始了软件替代部分实体零件和相关操作的进程。以下列举几例:
例1:手机(或电脑)上的时钟,已经完全由软件图形界面实现,自动网络授时。我们可以看到精准的数显时间,但是已经找不到任何曾经熟悉的“座钟”“腕表”“电子表”等物理形态。
例2:汽车的“电子外后视镜”,可利用车后方的一个摄像头采集图像,由软件做一定的算法和裁剪,将后方路况显示在车内显示屏上,替代传统的后视镜。显示仪表的指针/刻度,都变成了软件中的“函数”。
例3:在F22/F35机舱中用一块大液晶屏替代过去上百个仪表,以交互性良好的动态折叠菜单替代成百上千的物理按键。每一架F22/F35战斗机都有14台超级计算机,内有数千万行软件代码,是典型的“飞行电脑”。
例4:在高铁站熙熙攘攘的进站人流旁,数字闸机(检票机)发挥着巨大的作用。一两秒间,乘客即可数字化检票进站。同时,乘客所有信息(起始/终点、身份、车次、总人数等)实时统计完成,前方车站立即获知这些信息和可售剩余座位。过去手动检票绝不可能在同样时间内完成这些工作。
在那些看得见或看不见的角落里,软件都在发挥着我们想象得到或者想象不到的作用。在这些设备中,软件“体量”或大或小,从几十行代码到几十万行代码不等。有些特殊机器设备中的软件含量,已经达到了令人咋舌的地步。根据德国汽车制造商公布的技术资料,奔驰、宝马、奥迪等豪华汽车已经拥有1亿行以上软件代码(大众公司认为未来几年将达到2亿~3亿行),一辆特斯拉汽车拥有2亿行软件代码,而一架波音787飞机则拥有超过10亿行代码!毫不夸张地说,机载软件已经成为当今民用飞机的大脑与灵魂。
这仅仅是开始。有人说“智能制造的核心是产品大数据”“大数据是‘互联网+’的DNA和血液”或者说“按需制造的核心是数据”,其实这些话只说对了一半,没有软件,再多的数据也体现不出其价值。未来所有的数据都是天量的,是人力处理或单机电脑上的普通软件所不可企及的。因此,真正的幕后英雄是软件,是基于云计算架构的新形态软件——所有的数据都要靠无处不在的软件来进行分析和处理,才能判断其是否具有使用价值和如何去使用它们,而人工是既不可能、也没必要去分析大数据的。大家看到的是被市场热炒的大数据,而看不到的则是读取数据、处理数据、给出分析处理结果、洞察数据中隐含的信息/知识的默默无闻的软件。
现在,软件进入各行各业(特别是工业领域),与各种传统的物理设备相结合,是一个不以人们意志为转移的大趋势。于无声处,软件在积蓄着惊人的能量,在酝酿着靓丽的闪电与震天的惊雷。在软件定义下,在软件赋能/赋智的加速推动下,工业文明将发展到一个前所未有的崭新阶段,促进人类社会从数字社会走向智能社会。
20年前,美国学者尼葛洛庞帝在其《数字化生存》一书中说,人类生存于一个虚拟的、数字化的生存活动空间,由此而形成了一个“数字化生存”的观点。其实今天看来,如果能够再延伸一点的话,作者宁愿说人类最后将走向“软件化生存”。未来,使用软件的能力,将是人类一种基本的生存能力,不会用软件可能就缺乏基本的岗位胜任能力甚至是生活能力。这不是一个你想不想、要不要、会不会的问题,而是一个你何时开始学习、何时达到基本要求的问题。
软件,特别是工业软件,依靠算法、机理模型、数据分析模型、数据和知识来驱动物理设备,以期更好地定义和优化物理世界,加速工业体系升级换代,促进工业文明创新转型。过去人们经常说,一代材料、一代设备,而今天的世界是由软件和材料来共同决定的,是以软件的速度和节奏来发展的。所有的企业、组织和个人,必须要跟上软件发展的速度和节奏。因为软件将会决定你的生存状况。
何为软件 软件为何
通常IT界认为,软件是运行在芯片中的数字化指令和数据的集合。软件以人类语言的代码格式,模拟表达一系列源自人脑的逻辑规则和知识,最终以“0/1”的机器代码格式,驱动芯片(硬件)底层功能,将一系列的计算结果在外部设备(显示器、打印机、绘图仪等)上显示出来。
这种“软件定义”是20世纪70年代末80年代初计算机软件刚刚开始蓬勃发展时人们的认识,代表了IT界的基本看法,尚不足以表示今天软件所应具有的真实内涵。为了探讨软件的真实含义,本书以作者此前所著的《三体智能革命》一书中的学术观点为起点,从一个新的角度来重新认识软件,包括从应用软件中发展出来的专门用于工业过程的工业软件。在下一小节中,作者会给出自己的工业软件定义。
在《三体智能革命》一书中,作者提出了一种全新的世界观和方法论——三体智能模型。按照出现的时间顺序,作者把世界分为三类“体”,并且用这三种“体”来分析和看待客观世界:
▶ 第一体:物理实体,由自然界物质以及人类所创造的各种实体设备(哑设备)、人造材料所构成的物质与材料世界。
▶ 第二体:意识人体,人是地球上所有生物体的杰出代表,构成了社会的基本要素。人体具有自身的智能反应与智慧的意识活动。
▶ 第三体:数字虚体,存在于电脑和网络设备之中的一个数理逻辑空间,基于电脑而实现,由于网络通信而增强。所有在电脑中由软件构建的结果(图、文、曲线、三维模型、音频、视频等资料)都是数字虚体。
数字虚体,就是软件定义的结果。有了软件定义才有数字虚体。
以计算机、手机、平板等方便人眼视察的屏幕(显示装置)为例,屏幕上所显示的任何一个点、任何一条任意形状的线、任何一个字符、任何一篇文章、任何一幅图像、任何一种声音、任何一个视频、任何一个三维模型、任何一个仿真场景等,都是由软件定义形成的,由此而形成了“计算机图形学”“计算机辅助技术(CAX)”等各类研发工具和管理软件。这就为“产品研发和管理手段数字化”软件打下了坚实基础。这类软件也称为制造业IT软件,主要以计算和图示化显示数据的方式来辅助人决策。
即使没有屏幕(显示装置),在那些看不见的地方,在各种工业装备、高科技产品、生活器具和设施中的芯片里,软件都在默默无闻地履行着自己的使命。一旦软件出现任何逻辑瑕疵或被恶意篡改,往往就会表现为设备不正常甚至瘫痪。这类软件是“产品本身数字化”软件,也往往称为“嵌入式”软件,主要以把计算数据输出给设备控制器的方式来辅助机器的精准操作。
无论是嵌入式还是非嵌入式软件,它们都按照程序员的精心设计,基于人类千百年来在数学、物理、化学、生物等领域的知识精粹,农业、工业、服务业三大产业的知识传承,陆、海、空、天、赛五域中的各种制品的专业知识,以及在人群中流传的个人常识、经验、技巧和诀窍等,以巧妙的公式、精准的算法、最优的迭代过程,在计算机操作系统的协调下,让CPU中的门电路进行每秒几十亿、上百亿次的极速“开/关”,然后在显示设备上给出可视化的计算结果,或者同时把根据计算结果得出的最佳控制指令输入到机器设备的控制器中,精准地操作机器设备的运行。
这些以算法、推理规则及有关数据设定好的程序,是对人的思考过程的模仿、增强与超越式呈现,是对大自然客观规律在数字世界的精准刻画、优化迭代和孪生式复现。因此软件程序在芯片中的解释与执行过程,就如同人的大脑意识在神经元突触的作用下进行思考的过程,只不过是用电脑中的芯片代替了人脑中的神经元,芯片以更大的数据量、更快的速度、更高的维度、更复杂的约束条件、更逼真的场景进行了计算。
在软件定义作用下,近年来数字虚体飞速崛起,正在迅速地膨胀、互联和聚合。在过去的60年里,人们创造了无数的、大大小小的数字空间。它们彼此分立,互不归属,形态各异,形成了无数的数字化岛屿,制造了大量的信息碎片,反映在制造业信息化领域中,就是人们经常说的“信息孤岛”,或“千岛湖”“烟囱”式的信息集成。
过去几十年,基于因特网的社交/消费互联网已经把全世界的电脑、手机、平板等计算设备联接了起来,并且由此而联接了电脑背后的几十亿人,极大地促进了经济发展和社会繁荣。目前正在如火如荼发展的工业互联网/工业物联网(IIoT),也将会把所有的工业要素联接起来,让各个工业国家在现有基础上实现转型升级,以数字经济作为强大的引擎和前进动能,进一步促进全球的经济发展和社会繁荣。
以软件为代表的数字智能是人脑意识和认知能力在数字空间的延伸与发展。伴随着数字空间的膨胀和智能技术的演进,数字虚体与物理实体结合之后,不仅可以实现状态感知、实时分析、自主决策、精准执行,甚至也开始了自我学习提升,并且向着更加智能化的智能主体演进。
图1-2 三体智能模型
作者在《三体智能革命》一书中,首创提出了“三体智能模型”,用来表达三体之间的相互作用,如图1-2所示。
三体世界彼此交汇出了三个界面:
▶ 物理实体-意识人体系统(Physical-Conscious System, PCS)界面;
▶ 意识人体-数字虚体系统(Conscious-Cyber System, CCS)界面;
▶ 数字虚体-物理实体系统(Cyber-Physical System, CPS)界面。
由此,而发生了两个大循环和三个小循环:
1)外圈大循环:物理实体→意识人体→数字虚体→物理实体,一直发生着知识积累、知识建模、知识驱动的三种作用。外循环反映了认知世界变化规律,知识是实现智能的关键要素。
2)内圈大循环:物理实体→数字虚体→意识人体→物理实体,一直发生着反馈演化、学习进化、创新优化三种作用。内循环反映了三体世界的变化规律,变化是客观世界的根本状态。
3)物理实体↔意识人体小循环:人脑认知物理实体,积累知识促进创新优化;创新优化产生更多的新知识,促进、强化了知识积累过程。
4)意识人体↔数字虚体小循环:人脑与电脑相互认知,意识活动由知识建模进入数字虚体;比特化知识模块对接脑机接口,实现人脑知识增容。
5)数字虚体↔物理实体小循环:电脑认知物理实体,数字化知识驱动物理实体精准动作;物理实体在数字虚体中建立数字孪生映像,记录并反馈其演化进程;更重要的是,数字虚体与物理实体互联互通互控,形成CPS(赛博物理系统)。
两个大循环是知识发生和知识流动的基本路径;三个小循环是两体之间发生认知的基本过程。三个大循环和两个小循环作为基本相互作用,以人类知识进入数字虚体作为基本内容,以数字虚体作为软件定义的基本内涵,强调今天的软件与传统的软件所不同的“闭环”特征——以软件定义的比特数据流精准地控制机器设备的形态和材料的微观结构——是贯穿本书的核心内容。今天的软件不再仅仅以辅助人类决策的身份出现,而是以自主的方式,超越人体/人脑,直接驱动物理设备运行。
工业软件 重新释义
前文提到的“软件定义”,是不带有任何工业要素的、纯粹IT概念的定义,显然,这样去定义“软件定义”并不完全符合工业软件的真实含义,也无法确切描述工业软件所形成的软件定义的真实内涵。因此,工业界必须与时俱进,给出自己的工业软件定义。首先,从对工业的准确认识谈起。
工业(Industry)是指采集原料,并把它们加工成产品的工作和过程。关于工业的分类是一个比较复杂的过程。大致上,可以按照产品体量分为重工业、轻工业。在国家统计局编制的《中国统计年鉴》中对重工业(含化工)的定义是:为国民经济各部门提供物质技术基础的主要生产资料的工业。对轻工业的定义是:主要提供生活消费品和制作手工工具的工业。当然也可以在重工业中把化学工业分出来,变成重、化、轻的划分。甚至,在工业革命不断发展的前提下,包含了信息技术、生物技术、新材料技术的“高新工业”,也已经登堂入室,成为工业中的重要组成部分。但目前还没有在官方文件中看到这个新划分。
无论是传统的“重/轻、重/化/轻”,还是未来的“重/化/轻/高”,都可以说以相对简单的方式,明确了工业范畴与内涵的划分,并有了一个基本范畴。至于不同范畴工业要素之间的交叉与融合,则可以暂不讨论,让工业本身的发展、进化与创新,去给出最终结果。
在上述工业范畴划分中,重工业(含化工)包含了:采掘(伐)工业;原材料工业;能源工业;加工工业。如果把“提供生活消费品和制作手工工具”的轻工业也算作制造业的话,国内几个互联网“百科”都是这样定义制造业的:制造业是指机械工业时代对制造资源(物料、能源、设备、工具、资金、技术、信息和人力等),按照市场要求,通过制造过程,转化为可供人们使用和利用的大型工具、工业品与生活消费产品的行业。
通过上述比较可以看出,在重工业(含化工)里有采掘(伐)工业、原材料工业和能源工业,而在制造业(含轻工)中通常不包括这三个工业领域。因此,整个工业的范畴至少包含了制造、采掘(伐)、原材料和能源四大行业,或者说,工业由制造、采掘(伐)、原材料和能源这四大行业组成。
制造业是工业的一个重要子集。工业不仅包含了制造业,也囊括了其他三大行业。如果讨论工业软件时,以“制造业信息化软件”来指代工业软件,显然是缺失了很多内容的。如CAD、CAE、CAM、CAT、CAPP等工具软件,PDM/PLM、ERP、MES、MRO等多种用途的管理软件,包括比较小众的计算机辅助测试(CAT)、计算机辅助创新(CAI)、逆向工程(RE)等软件,基本上都可划归为“制造业信息化软件”,并不完全代表“工业信息化软件”或“工业软件”,因为这些软件的用户大都是制造业用户。
综合考虑工业软件的范畴、运行环境、作用机理和未来发展潜力,有必要修正甚至重新定义工业软件。
作者认为:
从目的上来说,所有用于工业过程的软件都应该称作工业软件。不限于制造业,包括能源(水电、煤电、核电、风电、光伏、燃气等)、原材料、采掘等领域的软件都是工业软件。
从内容上来说,工业知识是工业软件的核心内容,工业软件是工业技术/知识的最佳容器。没有工业技术/知识的积累,就没有工业软件。因此工业技术软件化具有重要的历史和现实意义。
从运行环境上来说,工业软件并不是一个纯粹的二进制数字虚体,它必须生存、运行在芯片中,通过代码指示芯片做一系列开关操作,来控制电脑硬件(如显示器)发挥应有的作用。
从作用机理上来说,工业软件从“开环”发展到“闭环”,可以直接输出控制指令作用于物理系统,以真正两化融合的方式形成CPS,体现软件赋能之后的“机器智能”。
从装备结构上来说,工业软件已经是工业品的一部分,是工业装备中的“软装备”,有必要单独列装,并着重进行战略规划。如果说中国工业品硬装备生产门类已经是世界第一,但是在工业品软装备生产上,仍然技术落后,残缺不齐。
从产品价值上来说,工业软件大大提升了工业品价值。总体上,有内置软件的工业品比没有软件的附加值高,软件代码越多的工业品附加值越高,软件算法越好的工业品附加值越高。很多高端复杂工业品,一旦拿掉其中的软件,就会立即贬值或报废。
从发展潜力上说,软件是算法发展的沃土,算法是软件的一个深藏巨大潜力的变量。使用普通算法即普通软件,植入人工智能算法即人工智能软件。因此无论是智数制造(DM-Digital Manufacturing)、智巧制造(SM-Smart Manufacturing),还是基于新一代人工智能的智能制造(IM-Intelligent Manufacturing),其发展关键皆在于工业软件。
综上所述,工业软件是以工业知识为核心、以CPS形式运行、为工业品带来高附加值的、用于工业过程的所有软件的总称。
国外近几年也开始出现工业软件定义(techopedia):“工业软件是一种可以帮助人们在工业规模上收集、操作和管理信息的应用程序、过程、方法和功能的集合。工业软件的使用者包括运营、制造、设计、建筑、采矿、纺织厂、化工、食品加工等行业用户及其服务提供商。”(Industrial software is a collection of application programs, processes, methods and functions that can aid in collection,manipulation and management of information on an industrial scale. Sectors that make use of industrial software include operations, manufacturing, designing, construction, mining, textile mills, chemicals, food processing and service providers.)
作者认为,上述定义在对工业范畴和基本作用的理解上与作者不谋而合,但比较而言,作者对工业软件的理解更深入和系统。关于上述工业软件定义中的内容,将在后续章节中展开论述。