这里工业软件的外延太大,所以你要明确一下什么工业软件,我等下会举几个行业的例子,你自己可以看看够不够工业
我想本质上的原因还是:因为这些领域的程序员水平比较差,不会做
所以只能用别人做好的编译器
就像几十年前的手机,当时你要开发个手机应用,也是c,c++,当时你跟开发手机应用的人说其他语言,人家想不想,说那玩意用不了,理由跟今天一样,性能
后来iphone横空出世,安卓在一路抄,才逐步有了今天java,swift还有kotlin这种高层次语言统治应用开发的局面
那如果苹果不做,谷歌不做,你靠诺基亚,摩托罗拉这些企业,其实是做不出来的
因为最终历史证明了,是苹果和谷歌做出来了,而不是这些通信业的老巨头
你要让开发变得简单起来,比如我想用java,那你得有办法能让java运行在这些机器上才行啊
而要做到这一步,你需要有人懂编译器,懂编译原理,能让openjdk之类的工具,port到你的目标平台上去才行,比如arm,以前java缺省提供的build只有solaris等unix和linux还有windows,mac都是后来加进去的
而要完成这一关键步骤,你需要有一个编译器,你需要有人做出这么一个编译器才行
如果不支持的话,你就用不了
所以苹果有llvm,谷歌魔改了openjdk,所以我们今天才能用这些高级简单的语言去开发手机app,而不是继续用特别难用的c++之类的
随之而来的结果就是,以前那些用c,c++开发手机的那些人,在几年前全部下岗了
所以通信行业夕阳了,安卓什么功不可没,要不然以前你要开发个手机应用,你得去通信行业招人
也就是从那时候开始,ee这个行当开始走下坡路,在之前,ee这个专业就业可比cs好多了,再早一点,中移动等国企去美国上市,那时候进移动才是985毕业生的首选,现在不行了
所以,当这种技术还没出现的时候,你真让这些技术员去搞编译器,他们不会,做不出来
这才是本质上的原因
搞计算机这档子事,最好的技术人员,还是在国外那几个大厂里面,而且就算是这些大厂,都不够看的
现在开发主力全部转移到大学里面去了,graal招人全部是在大学里面招,招post graduate students,也就是研究生,本科生不招[1]
编译器现在都是国外grad.以上级别才能做的东西,而且要日复一日,坚持几十年的投入,方能有所小成就,就像能把java,kotlin等做aot的graal,做了20多年,从sun时候开始做,做到sun都倒了十年了还在做,总算有点小成就
国内这些技术员还有工业界程序员没有那个本事
没那个本事的时候,可不就是,人家给你什么,你就只能用什么咯
就像aot甚嚣尘上,苹果在做,谷歌在做,java也在做
自己有本事做,那就做下去,做出来就能用了
但是如果你不会,那你除了在那边干瞪眼,还能咋办?
你真要让他们做,又不会做,那除了选择比较原始的工具,还能咋办?
就没办法嘛
所以说到底,还是技术水平的问题
最后说几个工业软件的例子,航空航天算工业吧?
我随便找两个例子,比如nasa和空客,一个航天一个航空,航空的比较多,我多发几个,法国,德国,阿联酋航空都有,我直接发他们系统的界面了
这是航空
德国的
阿联酋航空
nasa
这些都是java写的,就没有用什么qt,实际上我们在民航里面,经常会遇到老外用java写一些系统,以前mit几个毕业生还给sabre之类的写过,那个界面一看就是java写的,因为是swing,当时我就跟领导说,我们也做一个
结果领导一听是mit毕业生做的,腿都吓软了,就没下文了,后来我见这些人不行,于是就辞职滚蛋出国了
这问题回答下面吧……
一般来讲,工业软件或者一般民众认为的工业软件我们叫做组态软件:
这类界面丰富的组态软件大多数在远(ge)离(le)现(du)场(qiang)的控制室的电脑上跑,以某地炼钢厂风机房的计算机来说,能同时挂一大堆的采集,磁盘写得啦啦啦啦响,性能还真不至于差到离谱的境界。换句话说,跑什么图形化界面,完全木得问题。
那么问题在哪呢,在于这类计算机上的OS啊xdm,到今天跑win2k、win xp的也大有人在啊。什么?d2d?不支持!gdi+?自己带!dwm?没有!当然,也不是所有计算机都这么古老,我做的几个上位机,全是wpf做的,它们在工控电脑上运行的很好。
其次是比组态软件简陋得多的,大可称它们为上位机(虽然组态软件你也不能不算上位机),它们个人平时更常见于现场设备挂着的小屏幕那。这类程序真就可能得跑在一个个位数GB大小的硬盘(别没见过,pcie的8G SSD某宝一大堆,就这上面用的),1G左右RAM还配着严重阉割版windows的电脑上了。此时才得想想什么现代的GUI跑不跑的起来的问题。问题下的一个回答简洁明了
要不你试试把Electron移植到这些电脑上?( @徐辰
总而言之,运行环境来说,其存在着两个方面的问题:
两条尤其前者堵死了很多框架。但是我有提,其实平时遇到的也不至于太老,跑阉割版win7大有人在不是吗?
看官请坐。我们讨论完现实的运行环境,该讨论人了。
写工业软件的一般本科是自动化、机械自动化、电气自动化、等等专业的,这个群体主要面对的就是C/C++(或者说是C with cout/class)开发。他们本身离今天的计算机应用技术就有一大段的距离。
有多远呢,请移步某乎各类关于劝嵌入式党入坑的问题下——为什么有些人不愿意在单片机上使用C++………
也就是说,这类人就不能指望他们懂什么flutterelectronwpf。而C++下唯一一个靠谱的多的GUI框架就在Qt中。(yes你猜到了,他们还会用什么c的框架来写下位机,什么lvgl,听都没听过对吧)
总而言之,对于开发人员,他们大部分只是C/C++党,且比较远离今天的计算机应用技术。
还没结束呢。最后一个问题,这些软件用C/C++做更简单吗?不少这类软件承担的任务其实很简单:有多个端口发数据给电脑,你得把它们显示出来(当然也包括什么检查啦什么发数据回去啦什么各类交织的意大利面逻辑啦……),总而言之,这类软件几乎是一个纯粹标准的GUI程序,不涉及很多高端操作(什么高并发,玩这套的好像叫什么中台)。显示自然好说,关键是通信啦!
工业设备的通信除了万年的RS485和RJ45是计算机几乎都带的之外,其余的大部分需要涉及厂家提供的采集卡、通信卡,这类玩意给我的API通常也是C写的,例子也是C/C++的,且本身组态软件写起来纯粹的脏活累活,真没什么兴趣倒腾。
最后的最后,通常来讲做工业软件是这五个,不是单纯的Qt:
我自己平时见得多的是135,接着是4最后是只停留在传说中的2
顺便bb一嘴一些回答不要混淆视听拿什么跑在干净漂亮的工程师房间的玩意给我搞这个问题,你那能算这个问题的,我还马特拉布CadenceAllegro呢(光速逃走
说说个人的理解:
Qt不依赖图形系统。低端工控机的硬件配置可能是连一个图形系统都跑不起来的,而Qt可以直接写屏实现图形界面。
其它不依赖图形系统的开发框架都比Qt弱。比Qt强的开发框架基本都依赖图形系统。
所以Qt就成为当下有现成解决方案中最强的开发框架了。
至于虚拟机,浏览器这些东西。。。你们觉得一个连图形系统都配置不起的嵌入式工控机会搭载浏览器跟虚拟机吗?java,python,html5等方案直接淘汰。
所以简单说:Qt对硬件配置要求极低。而C++性能又相对其他语言高,所以成为低配设备的首选。
补充一些内容吧:
就我司的情况而言,能跑安卓的机子基本都会考虑编个安卓上去。只有硬件配置低,跑不起来安卓的目标机才会用Qt开发。而能选型用Qt的目标机,基本上属于用Qt就是极限,根本不可能跑得动任何更大软件框架。
至于跑安卓有多简单,可能很多人没概念,大概就是绝大多数你选型的产商都可以给你提供立等可用的安卓选项,不用自己做的那种。
反倒是用Qt,对系统组的技术要求要高。毕竟系统组还要给你制作一套交叉编译的工具链,而安卓的工具链就是产商提供的现成的。对于有能力编译一整套工具链的系统组来说,质疑其技术能力是完全没有意义的,毕竟无论你是用啥编译器,人家连gcc,clang编译器本身都能重新编译出来,还能不懂你一个aot的编译?事实上,最终搭好环境后,搞虚拟机那些语言开发的程序员也不需要懂交叉编译,而搞Qt的开发就必须得懂交叉编译。
提升配置之后,java或者安卓逐渐会变为首选,但在有限配置下Qt依然为大,毕竟Qt强制了C++11的支持。这一点也有不少功劳。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有