Ano. Zde je seznam, co všechno je napsané v ADA:
https://www.seas.gwu.edu/~mfeldman/ada- ... mmary.html
S tím, že to není HOL jsem se unáhlil, já mám takovou úchylku, že za HOL nepovažuji ani svou oblíbenou PL/I, která přitom umí spoustu věcí, které neumělo ani Cčko pár let poté. Takže viz ukázky kódu:
http://sandbox.mc.edu/~bennet/ada/examp ... t_adb.html
Udělal jsem si ale teď rešerši:
Jak tomu je se softwarem F-22
Software pro F-22 psali zvlášť Lockheed a Boeing (+subdodavatelé). Lockheed psal integrované navigační, komunikační, identifikační systémy a REB. Boeing psal 70% tzv. "Mission software" a byl odpovědný za integraci veškeré avioniky dohromady, což testoval v létající laboratoři B757 FTB:
Jednou z klíčových vlastností stíhačů 5. generace je právě Integrovaný Avionický Systém (dále IAS). Právě ten přináší onu schopnost "první vidět, první střílet a první zničit" skrze fúzi dat a prezentaci dat pilotu tak, že má vynikající povědomí o situaci ve vzduchu i mimo vizuální dohled. To znamená, že IAS musí zajistit
- automatické zjišťování a sledování cílů
- poskytnutí pilotu dat, zda se chce cíli vyhnout nebo jej postřelovat
- rozpoznání typu cíle a zda je přítel či nepřítel nad vizuální dosah
- navedení stíhačky do ideální pozice pro postřelování cíle
- odpal zbraní v nejlepší možný okamžik a směr
- vyhnutí se nepřátelské palbě
To vše automaticky, aby se pilot vůbec nemusel zahazovat s ovládáním senzorů a mohl věnovat 100% kapacity taktickým rozhodnutím.
Mimochodem, toto je hřebíček do rakve všem tvrzením, že "F-22 má horší situační přehled, než F-35, protože je starší". Houby: umí to dnes dokonce ještě mnohem lépe, než F-35, protože už to celé má naprogramované.
Nu a "mozkem" IAS je právě výše zmíněný "Mission software". To ten integruje výstupy ze všech senzorů a sám senzory ovládá tak, aby maximálně efektivně sledovaly cíl s přihlédnutím k pravděpodobnosti vlastní detekce. To ten vyhodnocuje všechny informace a zajišťuje ten seznam popsaný výše. krom toho řeší i použití REB a klamných cílů.
Hardwarově je systém decentralizovaný do
- dvou hlavních CIPů (Common Integrated Processor, jakoby hlavní univerzální počítače)
a dedikovaných "počítačů" pro
- Komunikaci+Navigaci+Identifikaci,
- Radar,
- REB
Plus dedikované moduly
- Vehicle Management System (VMS)
- Integrated Vehicle System Controller (IVSC)
- ovládání odhozu zbraní
- ovládání vícefunkčních displejů v kokpitu
Proč "počítač" v uvozovkách - fakticky se jedná o moduly "racků", tzn. zásuvek integrujících vyměnitelné elektronické karty, které teprve odvádějí vlastní práci. V těchto zásuvkách jsou standardizované karty SEM-E, na kterých jsou teprve vlastní skutečné procesory, do kterých je nahraný, resp. distribuovaný operační systém a práce. CIPy mají 66 slotů na karty SEM-E a jsou jimi zaplněny jen ze 66%, aby bylo místo pro další růst v budoucnosti. K tomu je nainstalovaný prostor, chlazení, kabeláž a výkon pro instalaci třetího CIPu, takže je zde 200% prostor pro nárůst výkonu avioniky.
Karty SEM-E použité v CIPech byly minimálně jednu dobu, možná až dnes, postavené na mikrokontrolerech Intel 80960:
Každý CIP by dohromady měl mít nominální výpočetní výkon 700 MIPS (s možností růstu na 2000 MIPS) a 300MB paměti s možností rozšíření na 650MB.
Mission software pro F-22 běží na CIPech plus propojených "počítačích". Je asi z 80-90% napsán v jazyce ADA 83. Pouze z většiny proto, že samotný vývoj softwaru byl poznamenán neustálými změnami HW, na kterém běžel. To si mělo vynucovat neustálé úpravy SW a kvalita kódu těmito neustálými změnami strašlivě utrpěla. Na konci 90. let proto přišlo manažerské rozhodnutí, že se z jazyka ADA přejde na C, protože tím se vše zázračně zlepší. Zde je zpráva, kterou si USAF nechalo udělat o porovnání ADA a C++:
http://www.sei.cmu.edu/reports/91sr004.pdf
Jenže vývojáři zůstali stejní (pochopitelně, už kvůli své znalosti systému). Takže se ještě museli přeučit na jazyk, který jim asi nebyl vlastní, a to zřejmě také moc nepomohlo. Podle zmínky jednoho člověka, který jim dělal pár auditů, to bylo nakonec zralé na rearchitekturu.
Je ale také možné, že je vše jinak. Jeden člověk z obranného průmyslu napsal toto:
Podle informací z doslechu (helikoptéry, pokud jen vím) vedlo efektivní používání jazyka Spark/ADA ve srovnání s C++ k upřednostnění druhého jen kvůli potížím s hlášením výsledků. Po jeden rok soupeřily dva týmy. Ten co psal v Spark/ADA neměl vůbec žádné chyby v kódu a 100% splnil zadání, jenže odevzdával výsledky až v pozdějších fázích a později používal (dodal?) simulátory. Z toho šíleli projektoví manažeři ("ukažte nám nějaké výsledky"), kteří tak nakonec upřednostnili C++, ačkoli tam zvládli zadání splnit jen cca. na 80% a měli nějaké chyby v kódu.
Nu a já jsem zjistil, že vývoj F-22 již probíhal metodologií Agile. Která je celá postavená na neustálém dodávání malých výsledků a tom, že celek nemá příliš promyšlenou architekturu, protože na takové "papírování" není vyčleněno dost kapacity. Což by vysvětlovalo jak přechod z ADA na C, tak kód o špatné kvalitě, kde se vše neustále měnilo bez pořádné zastřešující architektury. Ale to už je má subjektivní averze k Agile.
Každopádně oficiální stanovisko Pentagonu je, že software F-22 má 1,7 milionu řádek kódu a je skoro celý psán v ADA, přičemž jiný jazyk je schválen "jen na výjimku pro speciální použití kvůli zvláštním výpočtům či údržbě".
Pro nás je zde ale ještě zajímavé, že i F-35 používá asi ze 6% jazyk ADA, a to proto, že v SW vybavení F-35 byly zcela přebrány ty části softwaru F-22, které šlo na F-35 použít bez větších úprav - a to právě z Mission Software. Určitá kompatibilita zde tedy je. Jakkoli software F-35 je z většiny napsán v C:
A má přes 8 milionů řádek kódu.
Právě proto jsou zde hlasy volající po tom, aby v rámci spirálového vývoje F-35 i F-22 došlo ke standardizaci softwaru mezi oběma typy, aby co největší část byla sdílená a tím se zlevnila údržba i vývoj.