专栏名称: 养码场
养码场,一个技术人职场社交平台。 现有“养码人”80000+,覆盖JAVA/PHP/iOS/测试/运维等领域。80%级别在P6及以上,含P9技术大咖30人,技术总监和CTO 500余人。
目录
相关文章推荐
天津广播  ·  哏儿 | 天津地铁将出现“天津话”报站! ·  昨天  
生态梦网  ·  5项签约!滨海新区在日本东京有大动作 ·  2 天前  
天津日报  ·  14℃!天津要升温了 ·  2 天前  
51好读  ›  专栏  ›  养码场

什么编程语言用于开发军事上的导弹火箭和战斗机?

养码场  · 公众号  ·  · 2020-01-08 18:00

正文


这是养码场 技术岗 位推荐板块

每周三定期放送!

可别错过~


当地时间1月3日凌晨,3枚火箭弹落在伊拉克首都巴格达国际机场,震动全球。

消息很快一个接着一个传来。先是伊拉克军方在一份声明中确认,袭击造成至少8人死亡。

随后,伊朗多名官员证实:伊朗伊斯兰革命卫队下属“圣城旅”指挥官卡西姆·苏莱曼尼、伊拉克什叶派民兵团体“人民动员组织”副指挥官阿布·迈赫迪·穆汉迪斯身亡。

今日凌晨,美军驻伊拉克“ al-Asad空军基地”遭导弹袭击,伊朗伊斯兰革命卫队证实是其以“数十枚地对地导弹”袭击了美军基地。


各方的担忧不无道理,更猛烈的暴风雨就要来了。弄得不好,那真可能是血雨腥风啊!


场主的愿望是:世界和平


本文分享几类用于开发军事上的导弹火箭和战斗机编程语言,以下内容皆来自互联网络公开资料,经综合整理而成,仅供参考。


ADA语言

① ADA语言是美国军用标准计算机 语言(后来也成为iso 标准), 不光是 导弹 的飞控软件,在其它国家的相关军事领域也应用很多,据称国内最新的J-10所用的数字式四余度线传飞行控制系统软件就是用 ADA 编写的。


② Ada语言是一种基于对象的高级程序设计语言,不仅具有数据抽象、信息隐藏、高可靠性、可理解性等优点,而且不论从语言自身的开发,还是用其开发应用软件,都充分体现了软件工程思想。


所以自Ada语言问世以来,在大型嵌入式系统和军事领域,迅速得到广泛应用,美国和部分发达国家过去将Ada语言作为军用语言,明确规定所有军用软件必须用Ada语言开发,用其它语言开发的已有软件也要求用Ada语言重新开发,至少必须和Ada语言有方便的接口。


【注: ada语言在1998年被放弃了 强制作为美英军方唯一编程语言的规定,这是因为,随着计算机软件的进步,很多复杂的3D图形库都是用C++编写的,很多高级的编译器和解释器比如python和Ruby都是用C语言编写的,军方再强制规定使用ada就落后整个时代了,所以,ada编译器已经过时了,但是ada的这种设计理念非常的重要,还有就是ada对于软件工程的描述和贡献非常的值得学习。


C语言和Ada语言是两种不同风格的程序设计语言,C语言以其动态性强,灵活方便见长,适用于系统软件开发;Ada语言则以其安全性高,结构严谨,而倍受大型程序系统设计者青睐。


Ada语言由于其静态强类型特点,使诸如操作类型不匹配、数据越界、变量非法存取之类的错误在编译时就被发现,增强了程序的可靠性;


另一方面,也限制了其灵活性,所有对象在声明时就必须严格定义其类型,而在实际应用中,例如在专家系统工具的开发中,很多对象的类型、取值范围、空间大小等只有在程序执行过程中由上下文推断出。


类似于C语言的动态数组、函数指针等类型在Ada语言中也难以实现。Ada语言虽然没有C语言的许多特点,但通过Ada语言提供的各种语法机制,能间接完成C语言所特有的各种功能。


相比C语言来说,使用Ada语言可大大改善软件系统的清晰性、可靠性、有效性、可维护性。 因此,在航空航天、医疗设备、交通运输、能源控制系统、空中管制、铁路运输调度等安全性较高的领域,使用Ada语言进行软件研发 是不二之选。

Ada 经过了几次修正【如 Ada2012 】,Ada1995 即 1995年 的新的 ISO 标准。新标准修正了 Ada 83 的很多缺陷,并进一步扩展了它的功能。

Ada 的初始 语言 环境中就有了  【  异常(约等于 Unix 下的 Signal)、任务(线程)、分布式计算、随 数产生、宽字符集 】很多特性的支持,而在现在的具体操作系统中,这些特性往往随系统而异。


Ada 语法明确,基本上没有令人混淆的地方。 Ada 程序的源代码远远比 C 或 C++ 的代码易懂。看程序的人是减轻了不少脑负担。


⑥  Richard Riehle是著名的Ada专家,深深地参与到美国的军用软件开发工作中,实践经验丰富,心态也十分开放和公平,他指出:

  • JSF战机(即F35)已经决定主要用C++和C 开发,Ada将只用于局部系统。

  • F-22的代码中Ada占了很大比重,但也包含其它语言。

  • Ada的确更适合开发军用和民用航空系统软件,但是开发过程仍然是由易犯错误的人类执行的 。良好的工具固然有帮助,但是“A fool with a tool is still a fool”。


  • JSF和F-22的软件系统复杂性远远超过之前的任何系统。在大规模复杂程序的开发中,如果按照“庄严设计”的过程来开发,结果会产生更多的缺陷,原因很大程度归咎于这种重型的设计思想本身。


  • 我相信Ada在这样的项目中较之C++更加适合。但是 不可否认,如果开发者是一个经验丰富的C++程序员,能够谦虚谨慎地选择该语言中安全有效的部分,那么仍然可以做出令人满意的系统。 不过我对那些开发者的自我约束能力实在没什么信心 ,因为该语言中‘邪恶的诱惑’实在太大了。

  • 当一个用Ada写成的系统出现问题时,我们一定要坦率地承认它确实是用Ada写的。再好的借口也还是借口。我见过 用Ada写的极其出色的系统 ,也见过一些 用Ada写得糟糕透顶的系统 ,按照一位神秘的陆军上校的说法,‘公羊见了都会呕吐’。


  • 最后,我坚信不移,当其它一切条件相似时,使用Ada的团队比使用C++或其它任何语言的团队都更有可能获得成功。”


C/ C++语言

Ada 和 fortran、 C++ 同为军标语言。 ada 和C++ 的自然竞争中,因为缺乏像 C++ 那么深厚的人力 代码资源背景,而军标 C++ ,也在某些语义不确定方面进行了 约束,因此Ada让位于 C++ ,也是正常的。


目前的趋势就是 C++ 大规模挺入军用市场,像美国的F-35战斗机,俄罗斯的苏-35啦,都是用了 C++ C++ 从1986年诞生一直到现在,IT业界(包括硬件和软件)为 C++ 的库和编译器投入了无数的人力和金钱,从有 编程语言 开始,唯独只有 C++ 一门语言拥有这样多的厚爱。


② C++模仿了Ada的类属,成为了所谓的模版template,还从Ada模仿了异常处理。
C++对C的类型系统进改革扩充,更加安全,也能检查出更多类型错误。


更重要的是 C++ 支持面向对象的方法,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。


而这种强大的语言 C++ ,确实已经在军用领域运用——譬如美国F-35战机的战斗系统 用C/C++,Java这样的通用商用编程平台。


F22的飞控软件700万行代码,F35的3500万行代码,有70%是C/C++写的,优点是: 一来可以面向社会招标,降低成本。 二来可以避免可发展性,维护性差等问题。


成本对于美国军方而言是敏感的G点,对于其他国家而言也未尝不是敏感点。

例如:计算机辅助作战使F35的软件代码数量急剧膨胀,虽然最终的代码数仍然是机密,但相关分析与军方透露的资料指出美国 F35的代码数量在2000万行到4000万行之间。


考虑到代码行技术只是一种比较简单的定量估算软件规模的方法,不同语言实现同一个软件所需要的代码行数并不相同。此前的战机软件(包括F22)普遍采用 ADA 语言,而F35采用了 C++ 语言。

相对于 ADA C++ 开发的系统通常具备更高的可重用性,也意味着更少的代码行。但是,采用 C++ 的 F35,其代码行数仍然大幅度增加,以致使软件系统成为F35开发的关键瓶颈,这充分说明了F35软件系统的复杂性。


但在涉及执行绝对不能出错的编程里面,C++一般能不用就不用。 C++ 的编译,现在已经变得 和Ada 一样复杂。

COBOL语言


①  COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。(面向商业的通用语言,又称为企业管理语言、数据处理语言等,Common Business Oriented Langauge)


COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。

主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图像是它的强项。


COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。强大的文件处理功能,大量的数据通常以文件的形式存储在磁盘上。美国的退伍军人事务部、国土安全部、财政部等机构仍然在使用COBOL语言。


②  经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言。


COBOL在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。

Python


被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/ C++ )很轻松地联结在一起。


Python具有丰富和强大的库。 应用领域也是非常广泛。而且语言简洁,便于读懂,开发速度快,但因为python属于解释性语言,使用时由解释器解释执行,效率会相对低。


所以常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写。

但是事实上,军用系统开发走向多语言并存的大趋势是不可逆转的。2001年,在美军的参与下,Real-Time Java规范已经通过。

Ada 、SQL、VHDL还是使用比较广泛的,虽然美国军方出于成本的考虑,在F35中使用了很多C 和C++ 代码,但是 Ada 仍然大量应用于各类军用 民用飞 导弹 、卫星、飞船 空间探测器的控制软件,波音、空客、欧洲航天局、NASA都在用,短时间内是不会被取代的。

据称国内,歼10、歼20的飞控软件也是用 Ada 写的(用于出口的FC-1枭龙的软件倒是用 C++ 写的)Ada/C/C++/Java 等编程语言,会有机会在同一个舞台上互相比试。



原资料链接:

https://www.zhihu.com/question/313073462/answer/606980369



/今日岗位推荐/


感兴趣的朋友可以撩一下小西,了解职位JD和其他详细信息。

注:后台回复 000 ,还可查看完整岗位清单

更多技术岗位招聘中……

1、添加小西了解更多信息






请到「今天看啥」查看全文