波音 777 飞机由 Ada 语言驱动
(给程序员的那些事加星标)
原创整理:程序员的那些事(id:iProgrammer)
「Working Together」是波音公司最初考虑生产 777 喷气式飞机时选定的项目名称。当时,波音公司打算让参与该 777 飞机项目的 1 万名员工接受公司内部部门和外部供应商之间的开放和非竞争性政策。
波音的管理层认为,从二级液压制动到自动驾驶系统,「Working Together」是实现飞机系统各个部分尽可能高质量的方法。
「Working Together」模式面临一个挑战,波音公司坚持飞机软件必须用 Ada 编程语言编写。波音的工程航空电子软件经理 Brian Pflug 说,大多数公司根本不喜欢标准语言的想法,然后极力反对 Ada 太不成熟。此外,有一个供应商(Sundstrand)在开发其项目的一部分时已经进行了 6 个月,并且用了另一种编程语言。
(波音公司的供应商之一)霍尼韦尔公司通过对 Ada 和 C 编程语言的优势做了广泛研究。研究得出结论,Ada 内置的安全特性能减少开发时间、降低费用,减少调试的关注。所以当研究结果出来后,霍尼韦尔同意采用 Ada 的决定。
波音 777 主要电力系统的供应商 Sundstrand 同意了这种转换。后来 Sundstrand 反馈,在换语言之后,开发工作继续顺利进行。Sundstrand 项目经理德 Dwayne Teske 在接受电话采访时说,「我们不得不重新开始。但在那之后,项目进展非常顺利,所以 Ada 有很多积极的方面。」
由于他们都参与了 777 飞机的 Ada 项目,飞机系统的其他部分的供应商(包括刹车控制系统供应商 Hydro-Aire)继续也就都采用了 Ada 语言。
寻找工具
选定 Ada 语言后,波音的各个供应商的首要任务,就是为手头的任务选择合适的 Ada 编译器。
霍尼韦尔公司(负责驾驶舱的飞行控制系统),从 DDC-I 公司购买了 Ada 编译器系统,将其作为霍尼韦尔符号调试器的前端源代码。后来这 2 家公司合作一年半,针对 AMD 29050 微处理器,构建了 Ada 编译器的最终调试器和整个后端。
Hydro-Aire 公司(负责刹车控制系统),从 Alsys 公司购买了 Ada 软件开发工具 AdaWorld 。每架波音飞机的刹车控制系统都有 2 个摩托罗拉 58333 微控制器。
Sundstrand 公司(负责电力系统)也是选择了 Alsys 的 AdaWorld,然后选用了Intel 80186 微处理器。
波音 777 飞机子系统的代码量
Sundstrand 公司开发的电力系统,大约 8 万行 Ada 代码,代码重用率在 10~15%。
波音 777 的客舱管理系统,大约 7 万行代码;
霍尼韦尔开发的飞机信息管理系统(AIMS)大约有 61.3 万行代码。他们在波音飞机项目上投用的程序员多达 550 名。
「程序员的那些事」暂时只找到波音 777 的 3 个子系统的代码量,至于飞机总代码量是多少,暂没找到相应数据。
参考:维基百科、AdaIC
推荐阅读
(点击标题可跳转阅读)
如果编程语言是飞机
F-35 战斗机的代码量达到 800 万行
关注「程序员的那些事」加星标,不错过圈内事
喜欢就点一下「好看」呗~
波音 777 飞机由 Ada 语言驱动相关推荐
- 飞控计算机的作用,用于波音777飞机的主要飞控计算机
用于波音777飞机的主要飞控计算机 飞行控制计算机容错技术本文介绍了在ERA1992年航空电子会议上介绍的波音777的主要飞控计算机.介绍了系 (本文共1页) 阅读全文>> 在对无人机飞控 ...
- 【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖.根据诺贝尔 ...
- Ada 语言在军工行业的应用
Ada语言几乎就是军工领域的霸主,包括目前最先进的五代机F22猛禽战机都采用的是Ada进行系统开发, 看看其在军事领域的应用吧. 下面的信息来自:http://www.seas.gwu.edu/~mf ...
- Ada语言的这二十年
CROSSTALK(美国国防软件工程杂志, www.crosstalkonline.org)2017年1/2月号的专题是"Software's Greatest Hits and Misse ...
- MongoDB的Go语言驱动----mgo的使用指南
转自:https://blog.csdn.net/skh2015java/article/details/53033473 mgo简介 mgo(音mango)是MongoDB的Go语言驱动,它用基于G ...
- C语言应用到SSD,SSD1963的样例程序 c语言驱动读写程序.doc
SSD1963的样例程序 c语言驱动读写程序 /* STC89C54RD+的flash空间从0x4000~0xf3ff 共90个扇区,每扇区512字节*/ //#define BaseAddr0x10 ...
- 【历史上的今天】3 月 25 日:Ada 语言之父诞生;第一个维基站点问世;TechTV 被收购
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 3 月 25 日,在 1998 年的今天,为迎接 2000 年这一世界性节日的到来,人民日报发起,人 ...
- Ada语言实现-水和水蒸气热力性质IAPWS-IF1997
Ada语言实现-水和水蒸气热力性质IAPWS-IF1997 对外接口文件:IF97-Interfaces.ads -- File: IF97.adswith Ada.Numerics.Generic_ ...
- Ada 语言学习(3)复合类型数据——Array
文章目录 Array 数据类型声明 数组索引 数组范围 数组复制 数组初始化 直接赋值 通过拷贝赋值 不同索引范围但长度相等 非指定类型边界收缩 多维数组 数组遍历 数组切片 访问和动态检查 直接访问 ...
最新文章
- 阿里云服务器 安全狗外部访问mysql_阿里云linux/centos服务器安全狗安装
- 计算机网络(一)计算机网络概述、组成、功能分类、性能指标 | 思维导图
- mysql要怎么定义环境变量_mysql设置环境变量
- html5 --- 特性检测
- java中string 和stringbuffer的区别_Java中的String,StringBuilder,StringBuffer三者的区别...
- 通用计算机系统的工作方式,通用计算机操作系统典型体系结构综述
- 什么事,是你当了领导才明白的?(转)
- failed to connect to raw.githubusercontent.com port 443: Connection refused
- 如何评价程序员相亲约在肯德基反被拉黑?
- linux修改参数命令,linux chfn命令参数及用法详解(linux修改用户资料命令)
- rox + openbox + fbpanel + conky打造又快又稳的桌面[转]
- Firefox 37原生支持HTML5视频回放功能
- 01 Django简介
- java语言的优缺点
- 机架式服务器可以安装win7系统,Win7 32位系统怎么安装电音
- Linux与BSD中TCP协议栈实现比较
- python入门指南by许半仙-《江火欲燃山》《这题超纲了》《Python入门指南》
- 【弄nèng - Skywalking】入门篇(一)—— Skywalking安装与使用
- IT人看十四主星代表
- Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用。