針對具有更高安全需求的行業(yè),AdaCore 表示將為其 Rust fork 提供長期支持。
對于安全問題較為重視的行業(yè)如今都對 Rust 語言抱有興趣,就連微軟最近也承認 Rust 可能是安全系統(tǒng)編程的最佳選項。但對于汽車、航空航天及國防等其他行業(yè)來說,開源語言那快速變化的特性又總會讓人望而卻步。
AdaCore 公司專門為這些比較特殊的行業(yè)提供軟件開發(fā)與驗證工具。AdaCore 最初誕生時專門支持 Ada 語言——這是一種由美國國防部于上世紀 80 年代初開發(fā)的編程語言,用以替代更早那些復雜且極易出錯的語言。
AdaCore 公司產品經(jīng)理兼技術策略師 Tony Aiello 表示,“從意愿上講,人們其實越來越渴望把 Rust 引入那些以安全認證為重點的長期項目當中。我們感受到了這波趨勢,也從客戶那里了解到不少需求。他們目前的主要顧慮是當下的開源工具發(fā)展太快,而能夠從開源社區(qū)處獲取到的專業(yè)支持還不完善,導致他們遲遲不敢在 Rust 上邁出這重要的一步?!?/p>
Aiello 這里說的顧慮,是指客戶擔心開源選項不能像傳統(tǒng)服務商那樣在幾天內修復 bug,或者幫助企業(yè)解決工具鏈中可能出現(xiàn)的深層技術問題。他承認,大多數(shù)開源項目都無法在幾天之內響應上報的問題。
“但這種快速響應能力在航空航天和國防領域已經(jīng)非常重要,特別是考慮到此類系統(tǒng)都有很長的使用壽命。我們面對的往往是飛行了幾十年的飛機,這些機體上搭載的軟件棧也大多穩(wěn)定運行了幾十年。”
作為另外一種需要長期支持的應用方向,人們對于 Rust 在嵌入式設備上的表現(xiàn)也抱有興趣。
“很多人都吵著要使用 Rust,對這種新的內存安全語言充滿熱情。即使是在航空航天和國防等具有嚴格安全要求的領域,這樣一份對于工作的熱情和沖勁也同樣難能可貴?!?/p>
古老的 Ada 編程語言
Ada 源于美國軍方的一個計劃,旨在整合美軍系統(tǒng)中運行著上百種不同的程序設計語言編寫的程序。其名是為了紀念埃達·洛夫萊斯(Ada Lovelace)而使用 Ada 命名。
也就是說 Ada 早期是美國軍方的專用計算機語言,后來逐漸被應用到商業(yè)航空、鐵路運輸、科學航天器等領域。在 Ada 文檔中的最佳案例上,其中有一個就是波音 777,該機型的軟件 99% 是用 Ada 完成,其中制動系統(tǒng)完全用 Ada 來完成。
Ada 雖然在軍事和航空領域應用廣泛,但在商業(yè)領域使用場景有限。世界公認的 Ada 專家 Bruce Krell 曾言,自 1983 年 Ada 問世以來,他始終致力于 Ada 編程,專注于國防和航空領域。然而,自 1994 年他離開航空航天領域后,再未有機會使用 Ada。因為他遇到的所有商業(yè)工作都以 C++、Java 和 C# 完成。他坦言,初入商業(yè)世界時,他感受到了一種文化沖擊,對 C/C++ 和零軟件工程的綜合依賴猶如回到了恐龍時代。
至于具體有哪些項目使用了 Ada,從事 Ada 編程和教學 30 年,白發(fā)蒼蒼的 Jim Rogers 在 Quora 上回復道,如你所見 Ada 已被用于構建商用、民用飛機、軍用飛機、衛(wèi)星及其運載火箭的軟件。F-22 戰(zhàn)斗機的航電軟件全部用 Ada 編寫?!耙郧坝幸晃焕辖淌诰S護了一份清單,但他在 2014 年退休了,這份清單就從此再也沒人能維護了?!?/p>
從 Ada 到 Rust
AdaCore 綜合計算各類操作系統(tǒng)和硬件之間的組合,AdaCore 現(xiàn)可支持 50 多種不同平臺。
Ada 的語法源自 Pascal,而且跟 Rust 也有很多共同點,特別是內存安全。二者都屬于強類型語言,就是說會嚴格限定存放在變量當中的數(shù)據(jù)類型,由此防止因類型不匹配而導致的錯誤。
Aiello 還補充道,Rust 的類型強度高于 C 甚至 C++。與 Rust 一樣,Ada 也是一種靜態(tài)類型語言,就是說會在編譯時(而非運行時)檢查數(shù)據(jù)類型,從而防止錯誤的發(fā)生。
GNAT Pro 是 AdaCore 打造的開發(fā)平臺,其中包含編譯器、鏈接器、調試器和語言運行時。Aiello 表示,GNAT Pro 訂閱用戶可以使用 Rust 語言開發(fā)出可安全認證的嵌入式應用程序,并享受到 AdaCore 提供的技術支持。
Aiello 在采訪中解釋道,“我們提供所有服務選項并隨附保障承諾,這跟大家以往的開源工具鏈使用體驗完全不同。在實踐當中,專業(yè)開發(fā)團隊一旦在使用我們的工具時發(fā)現(xiàn) bug,則可立即向我們提交工單,AdaCore 會盡快為您完成修復?!?/p>
打造 Rust Fork
AdaCore 之所以選擇分叉 Rust,是為了更好地提供長期支持并實現(xiàn)向下兼容性。AdaCore 在其中采用了 Rust 編譯器、build 加包管理器(Cargo),以及面向 x86_64 Linux 及各 Linux 交叉目標的調試器(gdb)。該公司表示,GNAT Pro for Rust 25 計劃于明年 10 月正式推出,屆時將提供與 gprbuild 的全面集成,同時帶來先進的 Ada-Rust 雙向綁定以支持更多平臺。
“從某種意義上說,這將是一項相當獨特的服務,也把我們與典型的開源軟件市場區(qū)分開來。在典型的開源市場中,用戶往往不清楚舊版本的編譯器會出哪些問題。一旦在舊版本中發(fā)現(xiàn) bug,問題可能長期得不到修復。因為每位貢獻者都在繼續(xù)前進、展望未來,所以對以往的缺陷并不是特別關注。這在某些開發(fā)環(huán)境中有其合理性,但卻不適合那些需要長生命周期和穩(wěn)定認證的應用場景?!?/p>
AdaCore 還通過 GNAT Pro Assurance 提供 Rust 技術支持。只要客戶需要,這項計劃就會持續(xù)通過分支為整個工具鏈提供長效支持。
為了支持這套 Rust fork,AdaCore 還會定期從更新流中提取反饋,不斷聽取客戶對于功能的具體需求,確定將哪些內容整合到其版本當中。
Aiello 總結稱,“我們會獲取整個代碼倉庫,為其創(chuàng)建副本,并以此為基礎持續(xù)更新多個分支。當我們將 Rust 移植到新平臺時,也會全面推動支持包的上游化,保證移植成果能夠反哺開源社區(qū)?!?/p>
對比 Rust,Ada 無疑可以算作一種“上古”編程語言。雖然 Ada 不會消亡,但年輕人也并不愿意去學它。如果 Ada 的應用領域從此逐漸能用 Rust 語言代替,看起來并不是壞事。
使用 Ada 的程序員,普遍也都不年輕了。但那些年老的 Ada 程序員看到 AdaCore 支持 Rust,心中卻五味雜陳,跟我們想象中的歡欣鼓舞不太相同,他們實際上很擔心 Ada 的覆蓋范圍會進一步收窄。
一位退休的 Ada 程序員表示很擔憂 Ada 從此會被忽視。“一個典型的例子:當 Rational 在 80 年代中期出現(xiàn)時,他們擊敗了其他 Ada 開發(fā)環(huán)境。然后他們開始支持其他語言(都是出于良好的商業(yè)原因),對 Ada 支持開始減弱,最終,他們停止發(fā)展他們的 IDE, Rational Ada 也交給其他人了?!?/p>
另一位 Ada 程序員也對此表示贊同,他甚至預測不久后 AdaCore 會更名,以淡化 Ada 的重要性?!八麄冎耙仓С侄嗾Z言,比如 C 和和 C++ ,但(據(jù)我所知)他們從未支持 C 和 C++ 的進步(即對 C 和 C++ 的發(fā)展做出貢獻),但現(xiàn)在他們對 Rust 的支持程度顯然不一樣?!?/p>
-
編程語言
+關注
關注
10文章
1947瀏覽量
34845 -
ada
+關注
關注
0文章
16瀏覽量
21614 -
Rust
+關注
關注
1文章
229瀏覽量
6626
原文標題:用 Rust 拯救 60 歲老程序員:用 Ada 寫了幾十年的飛機程序,現(xiàn)在終于可以改用 Rust 了
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論