查看原文
其他

这才是中国被卡脖子最严重的软件!

CPP开发者 2022-07-01

The following article is from 编码珠玑 Author 刘亚曦




这段时间手机圈最大的新闻除了苹果刚发布了最新的“十三香”系列产品外,就数前段时间华为发布了最新的 p50 系列手机了,但是我们惊奇地发现,华为作为全球 5G 通讯技术的领跑者,这次 p50 系列居然只有4G版本,为什么会这样呢?

余承东在发布会上解释道,由于美国的制裁,华为的5G芯片只能当4G使用。其实这主要是因为华为被迫终止与美国射频芯片厂商的合作,要是知道手机要想上5G,并非只有基带就行了,还得有射频芯片,目前高端射频芯片都被美日韩三国垄断,而买不到射频芯片,华为的p50手机只能“望芯兴叹”了,而且,这个实体清单里面,还包括最狠的一条:终止华为与美国EDA软件厂商的合作。

余承东坦言,由于美国的制裁,华为的p50系列手机只能当4G用

如果说终止华为与台积电的合作,华为还可以找其他厂商代工一些低端的芯片,可终止EDA软件几乎就等于给华为来了个釜底抽薪,直接从上游设计领域给你掐断了自研芯片之路,这里直接给国人来了个警醒,但同时也暴露了中国高端制造最薄弱的一个环节——工业软件领域。

EDA到底是什么,为什么那么重要?EDA是一种工业软件,它的全称叫Electronic design automation(电子设计自动化),主要用来设计超大规模集成电路的一种软件,你可以简单把它理解成画电路板的(但功能远远不止画那么简单,还包括后期设计验证等复杂的功能)。

这里你可能会问,必须用这款软件吗,难道不能手绘吗?其实在早期EDA没有发明之前,那个时代的芯片设计确实是手绘的,但那个年代的芯片复杂程度远远不及现在,而且晶体管的数量也比现在少的多,现在指甲盖大小的芯片集成了几十亿个晶体管,如果让工程师们手绘的话,先不说它画出来的能不能用,等把几十亿个晶体管都画出来完的那一刻,估计地球都毁灭了。
iPhone 13系列采用最新的A15仿生芯片,指甲盖大小的面积上集成了150亿个晶体管!再说一遍,是150亿,这样的数量让设计人员用手工来画是不可能的

无独有偶,去年五月份,美国再次升级对华为限制措施,同时将包括哈尔滨工业大学在内的33家中国企业与高校机构列入“实体清单”,被列入名单内的企业无法与美国进行任何贸易,而且一些重要的工业类软件也被限制使用,比如哈工大就收到MATLAB(矩阵实验室)软件授权使用终止的通知,意味着从此哈工大再无权利使用正版的MATLAB了。

由于MATLAB极其强大的科学计算、数据分析、图像处理能力,在学术、工程等领域应用极为广泛,它甚至被称为“工科神器”,包括我在内,工作中也经常使用这款软件做一些图像处理方面的工作。

工科神器——Matlab软件界面

那么你可能会问,难道就找不出一款可替代这款软件的产品吗?作为一个内行人,我可以明确地告诉你,目前来说还没有,而且我们从零开发一款这样的软件几乎不可能(后面告诉你为什么)。而且,禁用这款软件也许仅仅是个开始,后面老美会陆续对一些其它工业类软件实行禁用,例如ANSYS、Pro/E、Catia、EDA等等,万一真到了那一天,可以说中国高端工业领域绝对遭受重大挫折。

说到这里,你可能会问,工业软件真的有这么重要吗,不用不行吗,难道我们就不能自己开发吗?下面我就对这三个问题逐一回答,由于我本科是学机械的,所以下文的大部分例子我都会用机械行业里面常用的工业软件来说明。


一,工业软件真的有这么重要吗,不用不行吗?

答案:它真的很重要,不用还真不行。

我们先来看几张图片


上面三张图片是上世纪CAD软件没有诞生之前,设计师们的日常,所有的图纸全靠手绘完成。那个年代流传着一句话:判断一个人是否是一名设计师的一个标准就是看他肚子上有没有一道桌子压过的痕迹。那个年代的设计效率非常低下。

这是我在大学时候有次交作业前的最后一次审图情景,老师为了锻炼我们手绘能力,要求每次作业必须有一张手绘图,但时至今日,我依然怀念当年在大学熬夜画图的情景,有时候图书馆没位置了,我们都喜欢回宿舍把床板拆下来当画图板

然而,自从上世纪八十年代工业软件出现后,设计师们终于不用通过手绘来完成图纸的设计了,转而在电脑上完成,设计效率极大提高。

那么工业软件究竟是什么东西?

大部分读者可能是做应用软件开发的,不太了解工业软件这个行业,其实工业类软件按照功能可分为三大类,CAD(计算机辅助设计)、CAE(计算机辅助工程)、CAM(计算机辅助制造),这三款软件是如今工业行业必不可少的软件,航空、船舶、汽车等产品的研发少不了它。而目前企业常用的这三大类软件,基本上都被美、法、德三国所垄断,尤其是在CAE领域,美国更是霸主般的存在。


1),CAD(计算机辅助设计)软件

人类史上第一款CAD软件的的雏形可追溯到上世纪五十年代,那个时代正是美苏争霸期间,美国军方为了拦截苏联的远程轰炸机,由国防部牵头联合IBM与麻省理工学院联合开发了SAGE系统,SAGE系统完全用汇编语言来完成,它其中一个功能就是能够在计算机上绘图,当时耗资100多亿美元(注意这是上世纪50年代的100亿美元,放现在估计也得一千亿美元以上了)。但那个时候的CAD软件仅仅供美国军方使用,后来才逐步走向商业化。

简而言之,CAD软件就是让设计师能够在电脑上画图的软件,可以说,CAD软件的出现彻底解放了设计师们手中的作图工具,以往通过手工绘制的图纸可以放在电脑上来完成,极大减轻了设计人员的工作量,同时也大大加快了产品的研发效率。

CAD软件出现后,以前只能手工来绘制的图纸,可以放到电脑上来完成,大大提高了工作效率,这是美国AutoDesk公司旗下的一款二维CAD软件产品——AutoCAD

我之前在车企待过,所以我还以汽车研发过程为例来说明。汽车的研发过程远比大家想象的复杂得多,你可能觉得汽车由设计人员先把图纸画出来,然后就可以来进行加工生产了?No, No, No...,汽车的研发过程先由再行设计师来完成造型的设计,再由工程设计人员完成零部件的设计,随后工程人员还要对设计出来的雏形做验证分析,最后还要交给生产技术人员对每个零部件做加工可行性分析,等每个环节都确认无误后才能投线生产。

在第一阶段,汽车造型设计师在完成车辆造型与外观设计后,剩下的就要交给工程设计人员了,而车辆工程师们要对汽车的每一个零部件进行设计画图,最后还要出工程图,交给工人加工。汽车是人类工业级消费品中唯一零部件达到上万级别的产品,结构复杂,所以工程师们一般情况下都会先出画3D图,目的是为了检查结构设计的合理性以及零部件是否有干涉,也为后面做有限元分析做准备,而零部件的绘制用什么工具呢,这就需要用到CAD软件了。

那么你可能会问,必须用计算机绘制吗,不能手绘吗,这放在上世纪六七十年代还是可以的,但是现在绝无可能,现在人类汽车结构的复杂程度跟上世纪相比根本不在一个数量级,你不可能让工程师们还用古老的工具手工绘图,那样即便你真手绘完成了,也必将花费大量的时间,等产品上市,早已被竞争对手淘汰。

中国第一代核潜艇总设计师——黄旭华,在那个年代,他们隐姓埋名,为中国研发出第一艘核潜艇,在那个没有CAD软件的年代,潜艇的每一个零部件都需要手绘来完成,共计4.5万张图纸,加起来总共有30公里长,向黄老致敬!

三维CAD软件的出现,又将产品开发效率提升了一个档次,以前画图只能在二维平面上完成,现在可以直接进行3D建模,随后直接生成工程图。这是美国PTC公司旗下的一款三维CAD软件——Pro/E.

这是一张采用Pro/E软件绘制的汽车总装图,汽车一般采用自顶向下的设计方法,等总装图完成后,工程师们还要逐一生成零件图,每辆车假如有两万个零件,那图光零件图就有两万张,后面还有局部装配图、加工工艺图等等,总共至少在四万多张。这些工作单靠手工完成在目前追求效率的市场上是不现实的。

将总装图的每个零件都拆解,生成零件图,最后交给工人加工。

这是一张绘制比较标准的汽车传动轴类零件图,图纸上必须表明完整的尺寸、公差、粗糙度等,容不得半点差错,一般都需要用CAD软件来绘制。

2),CAE(计算机辅助工程)软件

要问世界上哪家公司的代码数量最多,你可能回答是微软、IBM或者Google,但事实上这些都不是,单论代码数量,世界上最大的软件公司是美国的军火商巨头——洛克希德·马丁,没错,就是那家美国的军火公司,美国的F22战斗机、F35战斗机等都出自这家公司。说道这里你可能觉得疑惑,军火厂商居然也做软件?是的,而且他们做的软件大部分仅供自己使用,不对外销售,其中就包括CAE软件。

CAE软件是工业软件里面开发难度最大的一类软件(后面会告诉你为什么),但也是最重要的一款软件。CAE自诞生之日起,与CAD软件一样,主要服务于军方,后来才逐步走向商业化,民用企业才得以使用。那么CAE究竟是干什么呢?

CAE全程叫Computer Aided Engineering (计算机辅助工程),就是把设计出来的产品,通过软件的方法进行仿真分析,来验证设计出来的产品是否达到规定的要求(它的原理后面会解释)。你闭上眼睛想一下,设计师们把产品在电脑上设计出来后,只要导入这款软件,就能知道产品设计哪里有不合理的地方,然后再更改设计图纸,这是不是就像魔法一样?这节约了多少后期试验的成本。而且,在有些领域,你必须使用CAE软件进行仿真分析,例如航空航天领域,这都是关乎每一位乘客人身安全的领域,必须经过软件的验证。

CAE软件的出现,极大程度地提高了产品的研发周期,以前必须通过实验来验证的产品,现在可以放到电脑上来完成

目前全球商用CAE软件行业市场份额最大的是美国的ANSYS, ANSYS自诞生之日起就一直专注于有限元仿真技术,到目前,已经形成了包括结构、流体、电磁、航空、船舶、汽车等完整的仿真产品线。那它用在什么地方呢,我还以汽车为例,你以为车辆工程师把3D总装图完成后就可以直接生成零件图进行加工了吗,不,这还远远不够,后面还有重要两环,其中最重要的就是对你设计出来的产品进行可行性分析。

大家可能不知道,衡量一款汽车的好坏,安全性是一项重要的指标。那么如何知道设计师设计出来的汽车是都达到足够的安全标准呢?你敢保证刚设计出来的汽车跑在路上不会有断轴的危险?你敢保证设计出来的汽车在突发撞击意外情况安全气囊一定能打开?也许有人说,可以先造出来一辆上路测试一下不就行了?可是你想过没,如果万一测试达不到安全标准怎么办,难道重新设计吗?且不说在安全方面涉及到人命关天,单说模具环节,重新设计就意味着重新开模,一套汽车模具价格动辄在千万以上,这样的成本允许车企这样做吗?

再给大家举个例子,外行人可能总是觉得,汽车前保险杠与引擎机舱部分为什么那么“脆弱”,只要发生碰撞发动机基本上就报废了,就不能把发送机前引擎机舱部分做的更加“结实”一些吗?可事实恰恰相反,非但不能设计更加“结实”,反而需要故意要设计成“容易”损坏的程度,这是为什么呢,原因就在于发动机前引擎机舱部分在一定程度上给我们充当了炮灰的角色,一旦发生碰撞,要尽量避免产生的撞击能量传递给驾驶室,那么就要把前引擎机舱部分设计成有一定的柔性,机舱部分要首先溃缩,用来吸收能量,保证驾驶室内人员的安全。而且,为了将驾驶室内人员的损伤降到最低,除了前引擎部分“牺牲自己”外,还要将剩余的撞击能量均匀地传递到车身骨架以及底盘上面,这些功能都如何验证你设计的产品是否达标呢,这里就需要用到强大的工具——CAE软件。

汽车曲轴接收到到的是变应力,而且工作环境恶劣,所以工程师们设计好后,必须对它进行应力分析,看设计是否合理

这是采用ANSYS软件来模拟分析汽车差速器的受力分析,有了这款软件,可以计算出来重要零部件的危险截面、使用寿命等等,从而保证设计的合理性。此外,除了受力分析外,还能对散热通道进行模拟分析

汽车刹车系统关乎驾驶人员的生命安全,为了保证设计的合理性,必须经过CAE软件来验证

用CAE软件来模拟刚设计出来的汽车撞击试验,用来测试前引擎机舱是否有足够的韧性来吸收撞击产生的能量

这是运用CAE软件来模拟分析辆车相撞试验,用来测试汽车在意外情况下的安全程度,这样就极大程度地降低了研发成本。你看到的这张动图,它可真不仅仅是“动画”,举个例子,上面辆车碰撞后车轮的运动轨迹、发动机舱的溃缩程度都是计算机通过力学的方法计算出来的!而如果单纯是一个动画,完全不必考虑这些。

即便使用CAE软件仿真碰撞试验后,还要进行实际碰撞试验。就是按照图纸生产出来一辆车,然后进行实际撞击试验,看是否符合安全要求,比如。新研发一款汽车要进行上百辆这样的汽车进行试验,而一旦试验后,这些车就会立马报废,这些报废消耗的车辆会分担到每辆汽车的成本上。但是,如果没有CAE软件,实际试验用的车可能会达上万辆,那样的成本车企们完全不能接受的。

正在进行碰撞试验的汽车

等CAE软件验证完成后,汽车在投产之前还要进行实际碰撞试验,例如右边的白色轿车在碰撞过程中引擎盖弹出,极有可能对灰色轿车驾驶人员造成二次伤害,所以还要对引擎机舱部分进行结构设计改进。

我刚才知识举了我最熟悉的汽车工业领域,但CAE软件应用的领域远不止这些。它还涉及到航空、航天、电子等诸多高科技领域,可以说,工业软件已经渗透进了中高端制造的各个领域。

使用CAE软件对航空发动机进行受力分析

CAE软件对设计好的飞机外形做可靠性分析,飞机厂商要想领取国际适航证,必须经过指定的工业软件来进行验证

这是我们的国产大飞机C919,如果美国通过工业软件来卡脖子,那么我们的飞机翱翔蓝天将彻底无望

高铁前面的子弹头外形可不是随意设计的,它是用CAE软件通过空气动力学计算出来的,这样可以把行驶过程中产生的空气阻力降低到最小。

CAE软件在3C电子产品开发领域也是应用极为广泛,图为用ANSYS验证设计的无线路由器散热是否合理

3),CAM(计算机辅助制造)软件


在前面汽车完成设计之后,也经过各方面安全性测试后,剩下的就要加工生产了。那么汽车的零部件是如何生产出来的呢,这就需要工业母机——机床来完成了。

在数控机床(CNC)没有诞生之前,汽车的每一个零部件都要工人师傅们在普通机床上手工完成。但是随着汽车零部件的逐步精密化,有些零部件在普通机床上根本根本加工不出来。除了汽车行业,在航天航空、精密电子等领域更是如此,这个时候数控机床就诞生了。

在数控机床加工零部件前有一个重要的工序,就是需要在计算机上实现模拟加工仿真,待准确无误后,才能上机生产,那么为什么要仿真呢,直接加工不行吗?答案是不行,要知道,一套完成的CNC加工程序需要工程师们手动干涉完成编写,CAM软件只能生成部分代码,而只要是程序就会有Bug,CAM软件模拟仿真会根据你的程序准确计算出整个零件的加工过程,生成机床走刀路线,不仅可以检查加工过程中是否有撞刀的危险,而且还可以检查程序是否有过切或者欠切的现象。

像加工这种包含包含复杂曲面的零部件,CNC程序必须由CAM软件来完成,而且,加工前必须进行模拟仿真

待CAM软件仿真完成确认无误后,方可上机加工,加工的CNC走刀程序由CAM软件生成

这是用Mastercam软件来进行加工仿真的过程,可以看到完整的走刀路线与加工过程,避免加工过程中出现撞刀等危险。

这是苹果 Mac pro 的金属外壳的其中一道加工工序,在CNC数控机床上完成,自动加工程序也要有CAM软件来完成,苹果为了保证他们产品的手感,所有的外壳均使用完整的一块金属来通过去除材料来切削加工,成本极高。相反,其他大部分厂商会使用模具冲压或者金属拉丝工艺来完成,虽然成本低,但手感就没那么好了。

自iPhone 11后,苹果重新回归后玻璃面板的经典设计,顺便给大家提一下,苹果后玻璃板是用一整块厚度为8mm的玻璃在CNC上铣削为3mm完成的,而且还要在上面钻孔,这样的事情全球也只有苹果敢这样做了,更为变态的是,为了专门加工这块玻璃,苹果还专门给富士康买了一千多台CNC数控机床!这样的成本,别说机床了,就单说加工玻璃造成刀具的损耗成本就是其他手机厂商不敢想的, 当然,加工过程中少不了CAM软件。


二,工业软件难道我们自己不能开发吗

答案:可以是可以,但是这不是十年二十年能完成的

1,开发工业软件它真的是很难,因为它是一门交叉学科。

如果仅仅是开发一款类似于微信或者抖音这种APP,或者是开发一款类似于金蝶这种财务管理的企业级软件,它顶多也就是网络编程与数据库交互的应用,不需要程序员掌握其他知识,但工业级软件可不是这样,不光需要掌握最基本的编程能力,更重要的是对多学科的交叉融合。

说到工业软件的开发,你可能会觉得这是计算机专业的事情,但事实上它还真不是计算机专业的事,工业软件是以数学为基础,贯穿了物理、化学、力学、材料科学等诸多领域的交叉学科。

先拿CAD这类软件来说,因为软件是给专业画工程图的工程师们使用的,所以,要求开发工业软件的程序员们必须懂得工程图学的知识,例如基本的投影知识,要把这些知识融合到代码里面,通过计算机显示在屏幕上,更是需要计算机图形学方面的知识;再拿CAE软件来说,你要软件能够计算出设计零件的疲劳极限与寿命,这就需要到材料力学方面的知识,如果你对设计的飞机进行气流分析(飞机设计时必不可少的环节),这就又涉及到流体力学方面的知识,软件当然也要计算出流体力学的各种参数,这就需要求解大量的偏微分方程,又涉及到数学方面的知识。。。

总之,工业软件本质就是将力学、数学等各种学科的公式,通过算法的形式写进代码里面,如果目前学术界没有特定的公式,那么就需要开发人员自己去推导公式。有时候想想,开发工业工业软件的人,真特么必须是天才。


这是开发一款工业软件所涉及到的学科,难度远远在一款应用级软件之上。

2,工业软件行业有个特点:先来者有肉吃,后来者连汤都喝不到

工业软件不同于应用级软件,它要有足够的健壮性与工程性,举个例子,你平常用的微信APP如果它真有bug的话,顶多也是你的信息发不出去等小问题,但是工业软件就不一样了,它要求丝毫不能差错,一旦哪个环节出现问题,造成损失就难以估量,举个例子,如果CAE软件出现Bug,把原本汽车设计不合理的结构判断成合理的,结果就可能造成批量生产投入市场后出现大面积事故。

但是我之前说过,是软件一定会有bug,要想消除这些bug,必须经过大量的的用户来充当“小白鼠”进行使用反馈测试,可如果一款软件本身用户量就很少,软件厂商怎么能获得用户回馈从而修复漏洞呢,所以,这就造成一个“强者愈强,弱者愈弱”的现象。再举个例子,你公司本身用的是ANSYS软件,然后有人给你推销一款新的CAE软件,刚刚投向市场,你敢用吗,都是一样的道理。


三,国产工业软件市场状况

工业软件这么重要,我们国产工业软软件市场份额怎么样呢,答案是很不乐观。

前面说过工业软件开发的特点,高难度、高风险、高成本,而且国内软件行业本身就非常浮躁,大部分公司做的都是在别人家平台基础之上搭建起来的应用级软件,巨头们都跑去做产值快的互联网行业了,再加上工业软件行业人才的缺乏,导致国产工业软件市场发展及其缓慢。

苹果最新的iPhone 13发布会上提到了中国唯一一个走出国门的超级APP——TikTok(抖音),你可能以为中国的软件行业很厉害了,但那都是应用级的,就先别说工业级了,就连企业级软件市场,把国产所有的企业级软件加起来都不如有美国的Adobe一家大。

目前国产工业软件做的最好的有两家公司,一家是北京数码大方,另一家是广州中望,但这两家的产品还仅限于CAD/CAM领域,在CAE软件领域几乎为零,如果核心软件领域不能国产化,那么中国制造走向高端化必将受到重重瓶颈。


四,对中国国产工业软件行业的展望

1,基础研究与软件强国

我在大学时候,我的力学老师说过一句话,人类工业文明发展到现在,有两个学科功不可没,一个是力学,一个是电学,力学的发展奠定了人在工业文明的安全基础,而电学的发展促进了人类在控制领域的飞速发展,但这两个学科都是建立在数学发展的基础之上的。我非常认可他的观点,我想说的是,工业软件归根结底还是对数学、力学、电学的实际应用,但这些应用都要建立在强大的理论基础之上,近代人类工业文明的一些诸多突破都是建立在基础研究之上,例如麦克斯韦方程的发现,才有了人类现在辉煌的无线通信技术,经典力学尤其是空气动力学的突破,人类的飞机才能翱翔蓝天,香浓定理为信息通信产业奠定了坚实的理论基础......所以,要想发展好工业软件,基础研究必不可少。

其实我在大学那会是非常喜欢力学这门课程的,印象最深的是我们用数学的方法推导出铸铁这种脆性材料在受到挤压应力荷载后的破坏形式是呈截面45度剪切破坏,然后压力机试验也验证了我们的结果,当时就觉得很神奇,后来没事的话我就很喜欢把力学书中的公式用数学的方法推导一遍

但是,基础研究不同于应用研究,基础研究主要目标就是发现与理解,并非是针对某一项产品而做的研究,它的研究方向是不确定的,而且成本与时间都是不可控的,基础研究注定是一条漫长的道路,这条路注定孤独。所以,基础研究基本上都由大学院校、科研机构来完成,国内除了华为,很少有公司能够将精力投入在基础研究之上。

飞机机翼的设计原理就是依据伯努利方程,但是很少有人知道当年伯努利研究流体力学并不是为了飞机,而是为了解释水流速不同的问题。所以在很多情况下,工业级产品发明的背后都是看似与其毫无相关的基础研究作为理论依据。

华为任正非在接受央视采访的时候说过,华为自己就培养了大量的科学家做基础研究。想象一下,一家民营企业,每年砸几千个亿专门培养一批科学家做与盈利性无关的基础研究,可见任正非的格局有多大。

正所谓“当今中国正经历百年未有之大变局”,中国要想从一个制造大国转向一个制造强国,必须攻克工业软件这个行业。工欲善其事必,先利其器。在我看来,发展工业软件就是一种软件强国战略,因为工业软件是一切高精端制造的基础,没有工业软件,工业4.0无从谈起,路漫漫其修远兮,我们必须承认差距,而发展工业软件这条路注定漫长,但却值得等待。

2,它山之石,可以攻玉

我前面说了,其实工业软件最早是服务于军用领域的,而开发一款工业软件成本巨大,即便拿财大气粗的美国来说,他们工业软件市场能够走到今天商业化的地步,也少不了美国政府与军方的扶持,而且美国一直把数字化建模仿真列为国家战略级计划,可见美国对其本土工业软软件的重视,这一点,我们还必须向美国学习,重视工业软件的扶持与发展,为中国走向高端制造创造良好的条件。

- EOF -

推荐阅读  点击标题可跳转

1、18 张图带你了解衡量网络性能的四大指标:带宽、时延、抖动、丢包

2、多线程学习指南

3、C++ STL 容器如何解决线程安全的问题?


关注『CPP开发者』

看精选C++技术文章 . 加C++开发者专属圈子

点赞和在看就是最大的支持❤️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存