写点什么

用 Rust 拯救 60 岁老程序员:用 Ada 写了几十年的飞机程序,现在终于可以改用 Rust 了

  • 2023-09-01
    北京
  • 本文字数:2753 字

    阅读完需:约 9 分钟

大小:1.39M时长:08:06
用Rust拯救60岁老程序员:用Ada写了几十年的飞机程序,现在终于可以改用Rust了

针对具有更高安全需求的行业,AdaCore 表示将为其 Rust fork 提供长期支持。

 

对于安全问题较为重视的行业如今都对 Rust 语言抱有兴趣,就连微软最近也承认 Rust 可能是安全系统编程的最佳选项。但对于汽车、航空航天及国防等其他行业来说,开源语言那快速变化的特性又总会让人望而却步。

 

AdaCore 公司专门为这些比较特殊的行业提供软件开发与验证工具。AdaCore 最初诞生时专门支持 Ada 语言——这是一种由美国国防部于上世纪 80 年代初开发的编程语言,用以替代更早那些复杂且极易出错的语言。

 

AdaCore 公司产品经理兼技术策略师 Tony Aiello 表示,“从意愿上讲,人们其实越来越渴望把 Rust 引入那些以安全认证为重点的长期项目当中。我们感受到了这波趋势,也从客户那里了解到不少需求。他们目前的主要顾虑是当下的开源工具发展太快,而能够从开源社区处获取到的专业支持还不完善,导致他们迟迟不敢在 Rust 上迈出这重要的一步。”

 

Aiello 这里说的顾虑,是指客户担心开源选项不能像传统服务商那样在几天内修复 bug,或者帮助企业解决工具链中可能出现的深层技术问题。他承认,大多数开源项目都无法在几天之内响应上报的问题。

 

“但这种快速响应能力在航空航天和国防领域已经非常重要,特别是考虑到此类系统都有很长的使用寿命。我们面对的往往是飞行了几十年的飞机,这些机体上搭载的软件栈也大多稳定运行了几十年。”

 

作为另外一种需要长期支持的应用方向,人们对于 Rust 在嵌入式设备上的表现也抱有兴趣。

很多人都吵着要使用 Rust,对这种新的内存安全语言充满热情。即使是在航空航天和国防等具有严格安全要求的领域,这样一份对于工作的热情和冲劲也同样难能可贵。

 

古老的 Ada 编程语言

 

Ada 源于美国军方的一个计划,旨在整合美军系统中运行着上百种不同的程序设计语言编写的程序。其名是为了纪念埃达·洛夫莱斯(Ada Lovelace)而使用 Ada 命名。

 

也就是说 Ada 早期是美国军方的专用计算机语言,后来逐渐被应用到商业航空、铁路运输、科学航天器等领域。在 Ada 文档中的最佳案例上,其中有一个就是波音 777,该机型的软件 99%是用 Ada 完成,其中制动系统完全用 Ada 来完成。

 


Ada 虽然在军事和航空领域应用广泛,但在商业领域使用场景有限。世界公认的 Ada 专家 Bruce Krell 曾言,自 1983 年 Ada 问世以来,他始终致力于 Ada 编程,专注于国防和航空领域。然而,自 1994 年他离开航空航天领域后,再未有机会使用 Ada。因为他遇到的所有商业工作都以 C++、Java 和 C#完成。他坦言,初入商业世界时,他感受到了一种文化冲击,对 C/C++和零软件工程的综合依赖犹如回到了恐龙时代。

 


至于具体有哪些项目使用了 Ada,从事 Ada 编程和教学 30 年,白发苍苍的 Jim Rogers 在 Quora 上回复道,如你所见 Ada 已被用于构建商用、民用飞机、军用飞机、卫星及其运载火箭的软件。F-22 战斗机的航电软件全部用 Ada 编写。“以前有一位老教授维护了一份清单,但他在 2014 年退休了,这份清单就从此再也没人能维护了。”

从 Ada 到 Rust

AdaCore 综合计算各类操作系统和硬件之间的组合,AdaCore 现可支持 50 多种不同平台。

 

Ada 的语法源自 Pascal,而且跟 Rust 也有很多共同点,特别是内存安全。二者都属于强类型语言,就是说会严格限定存放在变量当中的数据类型,由此防止因类型不匹配而导致的错误。

 

Aiello 还补充道,Rust 的类型强度高于 C 甚至 C++。与 Rust 一样,Ada 也是一种静态类型语言,就是说会在编译时(而非运行时)检查数据类型,从而防止错误的发生。

 

GNAT Pro 是 AdaCore 打造的开发平台,其中包含编译器、链接器、调试器和语言运行时。Aiello 表示,GNAT Pro 订阅用户可以使用 Rust 语言开发出可安全认证的嵌入式应用程序,并享受到 AdaCore 提供的技术支持。

 

Aiello 在采访中解释道,“我们提供所有服务选项并随附保障承诺,这跟大家以往的开源工具链使用体验完全不同。在实践当中,专业开发团队一旦在使用我们的工具时发现 bug,则可立即向我们提交工单,AdaCore 会尽快为您完成修复。”

打造 Rust Fork

AdaCore 之所以选择分叉 Rust,是为了更好地提供长期支持并实现向下兼容性。AdaCore 在其中采用了 Rust 编译器、build 加包管理器(Cargo),以及面向 x86_64 Linux 及各 Linux 交叉目标的调试器(gdb)。该公司表示,GNAT Pro for Rust 25 计划于明年 10 月正式推出,届时将提供与 gprbuild 的全面集成,同时带来先进的 Ada-Rust 双向绑定以支持更多平台。

 

“从某种意义上说,这将是一项相当独特的服务,也把我们与典型的开源软件市场区分开来。在典型的开源市场中,用户往往不清楚旧版本的编译器会出哪些问题。一旦在旧版本中发现 bug,问题可能长期得不到修复。因为每位贡献者都在继续前进、展望未来,所以对以往的缺陷并不是特别关注。这在某些开发环境中有其合理性,但却不适合那些需要长生命周期和稳定认证的应用场景。”

 

AdaCore 还通过 GNAT Pro Assurance 提供 Rust 技术支持。只要客户需要,这项计划就会持续通过分支为整个工具链提供长效支持。

 

为了支持这套 Rust fork,AdaCore 还会定期从更新流中提取反馈,不断听取客户对于功能的具体需求,确定将哪些内容整合到其版本当中。

 

Aiello 总结称,“我们会获取整个代码仓库,为其创建副本,并以此为基础持续更新多个分支。当我们将 Rust 移植到新平台时,也会全面推动支持包的上游化,保证移植成果能够反哺开源社区。

 

对比 Rust,Ada 无疑可以算作一种“上古”编程语言。虽然 Ada 不会消亡,但年轻人也并不愿意去学它。如果 Ada 的应用领域从此逐渐能用 Rust 语言代替,看起来并不是坏事。

 

使用 Ada 的程序员,普遍也都不年轻了。但那些年老的 Ada 程序员看到 AdaCore 支持 Rust,心中却五味杂陈,跟我们想象中的欢欣鼓舞不太相同,他们实际上很担心 Ada 的覆盖范围会进一步收窄。

 

一位退休的 Ada 程序员表示很担忧 Ada 从此会被忽视。“一个典型的例子:当 Rational 在 80 年代中期出现时,他们击败了其他 Ada 开发环境。然后他们开始支持其他语言(都是出于良好的商业原因),对 Ada 支持开始减弱,最终,他们停止发展他们的 IDE, Rational Ada 也交给其他人了。”

 

另一位 Ada 程序员也对此表示赞同,他甚至预测不久后 AdaCore 会更名,以淡化 Ada 的重要性。“他们之前也支持多语言,比如 C 和和 C++ ,但(据我所知)他们从未支持 C 和 C++ 的进步(即对 C 和 C++的发展做出贡献),但现在他们对 Rust 的支持程度显然不一样。”

 

参考链接:

https://github.com/AdaCore/gprbuild

https://en.wikipedia.org/wiki/Ada_(programming_language)

https://thenewstack.io/how-adacores-rust-fork-may-make-the-language-more-adoptable/

http://archive.adaic.com/projects/atwork/boeing.html

https://www.quora.com/Is-it-possible-to-write-code-on-a-plane-with-Ada-programming-language

https://www.reddit.com/r/ada/comments/10xvmka/adacore_joins_the_rust_foundation/

2023-09-01 16:469590

评论 2 条评论

发布
用户头像
Rust是針對C/C++的Memory Unsafe而提出的一種語言。 Rust根本沒有ADA對計算標準的那種管控和維護有任何的顧及, 所以Rust根本沒有ADA應付Safty Critical的功能的。 Rust被Adacore更大可能是因爲系統編程現在很多時候涉及C, 然後ADA要Bind到C才可能聯絡到系統界面。 Rust只不過在這裏是取代了C的位置, 如果ADA要注重存貯安全性, ADA目前有Spark副集
2024-12-22 14:10 · 中国香港
回复
用户头像
Rust 是針對C/C++的, ADA 那種嚴謹的計算標準化的概念在Rust這個語言裏根本沒有任何顧及
2024-12-22 13:59 · 中国香港
回复
没有更多了
发现更多内容

链路级资损防控之资损字段防控实践|得物技术

得物技术

最佳实践 测试 资损防控 企业号2024年7月PK榜

LED异型显示屏:创新设计与市场需求的完美融合

Dylan

设计 应用 LED LED显示屏 市场

ChemDraw可以绘制哪些物质?ChemDraw破解补丁版下载安装 Mac/win

Rose

ChemDraw破解版 ChemDraw化学绘图 ChemDraw下载安装

flowjo 10 for mac流式细胞分析 详细安装破解教程 支持m1/m2/intel

Rose

流式细胞分析软件 FlowJo 10破解版 FlowJo Mac版 FlowJo 安装教程

IntelliJ IDEA 2019 mac破解版 含IDEA 2019永久密钥 附IDEA 2019中文版设置教程

Rose

IntelliJ IDEA 2019 IntelliJ IDEA 2019密钥 编程软件 IDEA 2019

最高可管理 10K 实例的 InstanceSet 是什么?

小猿姐

数据库 Kubernetes 云原生

Microsoft PowerPoint 2019 for Mac永久使用版 支持Inte.m1.m2.m3安装

Rose

PowerPoint 2019 ppt2019下载 PowerPoint 2019 破解

告别手动错误,NineData自动化平台保障数据库变更零失误

NineData

数据库 dba NineData 变更一致性 多环境结构

微软Azure遭遇DDoS攻击,全球云服务再次敲响警钟!

网络安全服务

微软 azure 云服务 DDoS DDoS 攻击

豆包,大模型的磁力三重奏

脑极体

AI

品牌与分类:解析京东商品详情API中的品牌与分类信息

技术冰糖葫芦

API 安全 API 文档 API 测试 API 优先

如何定量分析 Llama 3,大模型系统工程师视角的 Transformer 架构

百度Geek说

大模型 Llama3

BetterTouchTool for mac触摸板增强神器下载 bettertouchtool破解版详细使用教程

Rose

BetterTouchTool破解 BetterTouchTool教程 Mac触控板增强工具

职场<火焰杯>测试开发大赛证书已开放下载!

霍格沃兹测试开发学社

喜加一!望繁信科技再摘「2023年度新锐技术品牌奖」

望繁信科技

流程挖掘 流程资产 流程智能 数字北极星 望繁信科技

什么情况下你能接受 996

王中阳Go

Go 工作 面经

GraphPad Prism科技绘图与数据分析

Rose

GraphPad Prism破解版 科学绘图和统计分析 GraphPad Prism下载

视角 | 麻省理工学院提出出温度计校准法,专治AI大模型过度自信

硅纪元

科学文献管理软件EndNote 21功能介绍 含(EndNote 21激活码)

Rose

文献管理工具 EndNote 21下载 EndNote 21破解版 EndNote 21授权码

Magnet for mac v2.12.0中文免激活版 支持多种不同方式的窗口布局模式

Rose

Magnet破解版 Magnet Mac下载 苹果电脑分屏软件 macOS窗口管理

PDF解析,还能做得更好

合合技术团队

PDF 大模型 文档解析

Downie 4 v4.7.24最新中文版下载 永久使用 支持M1.M2.M3芯片安装

Rose

Downie 4许可证 Mac视频下载器 Downie 4下载 Downie 4使用教程

担心异构数据库迁移踩“坑”?听听大咖们怎么说

YashanDB

yashandb 崖山数据库 崖山DB

职场<火焰杯>测试开发大赛证书已开放下载!

测试人

软件测试

用Rust拯救60岁老程序员:用Ada写了几十年的飞机程序,现在终于可以改用Rust了_编程语言_核子可乐_InfoQ精选文章