針對具有更高安全需求的行業,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 的支持程度顯然不一樣。”
-
編程語言
+關注
關注
10文章
1950瀏覽量
34987 -
ada
+關注
關注
0文章
16瀏覽量
21627 -
Rust
+關注
關注
1文章
230瀏覽量
6665
原文標題:用 Rust 拯救 60 歲老程序員:用 Ada 寫了幾十年的飛機程序,現在終于可以改用 Rust 了
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論