HAL/S:アセンブラとC++の狭間で2020年09月06日 12:14

HAL/S:アセンブラとC++の狭間で
HAL/S:アセンブラとC++の狭間で


打ち上げロケットが一段落して、宇宙ネタも一休み・・・。

何か面白いことはないかと、いつも覗いているチェコ語のページを見ると、一風変わった記事が出ていた。

(NASAと協力して、SpaceXは異なる企業文化に対処する必要がありましたが、最終的に批評家を沈黙させました)
https://www.elonx.cz/spacex-se-pri-spolupraci-s-nasa-muselo-vyporadat-s-odlisnou-firemni-kulturou-ale-nakonec-umlcelo-kritiky/

主筆のペトルメレチンや、味わい深い記事を載せているイジーハダチではない。

どうやら翻訳記事のようだ。

(SpaceXとNASAが米国の宇宙飛行士の打ち上げを取り戻すために苦い文化衝突をどのように克服したか)
https://edition.cnn.com/2020/08/09/business/spacex-nasa-astronaut-launch-demo-2-culture-clash-scn/index.html

英語の記事だが、自動翻訳の得手不得手もあり、チェコ語からの方が読みやすかったりする(そうなのかあ?)。

ビミョーなニュアンスのところだけ、英語の原文に当たりながら読んだ。

この記事自体も面白かったが、スペースシャトルのプログラム開発に使用されていたというHAL/Sというプログラミング言語について読んだ別記事が楽しかったな。

(プログラミング HAL/S)
http://www2a.biglobe.ne.jp/~mizuki/tmp/programming_HAL_S_V2a.pdf

「本書では、残念ながら優れた言語とならなかった例として、ひとつのプログラミング言語を紹介する。」

浮沈子は、専門家ではないので、言語仕様の詳細に触れられているこの記事が理解できるとは言わない。

1割も分からないかもしれない。

また、言語仕様の優劣について触れられている部分の妥当性についても判断はできない。

でも、面白かったな。

関連事項も調べたりして、少しお勉強もした(セマフォとか)。

スペースXが、組み込み系でC++を使っていることは、以前にも読んで知っている。

(SpaceX開発のロケット「Falcon 9」はLinuxとC++で宇宙へ飛び立っている)
https://gigazine.net/news/20200719-linux-on-falcon-9/

「Falcon 9やGrasshopper、Crew Dragonのソフトウェア担当チームは35人のエンジニアで構成されているとのこと。任務はそれぞれのコアプラットフォームやシミュレーションソフトウェア、地上局の通信および分析用のソフトウェアの開発で、ソフトウェアはCあるいはC++でコーディングされている」

また、スペースレーザーの開発に当たって、C++の技術者を募集しているという記事も読んだ。

(SpaceXは、Starlinkインターネット衛星用の「スペースレーザー」を開発するエンジニアを探しています)
https://www.tesmanian.com/blogs/tesmanian-blog/spacex-starlink-lasers

「個々の衛星はおよそ227キログラム(500.5ポンド)の打ち上げ質量を持つオフィスデスクのサイズです。」

うーん、バージョン0.9の仕様だな・・・。

まあいい。

「SpaceXは今週、「エンジニアリングへの情熱」とC ++プログラミング言語の知識を持つシニアソフトウェアエンジニアを探して、「スペースレーザー」の開発を支援する「スターリンクレーザーコミュニケーションチーム」に参加することを発表しました。」

「ゼロから新しいテクノロジーを構築する必要があります」

「この職務には航空宇宙の経験は必要ありません。「組み込みC ++に習熟している」だけです。」

(C++)
https://ja.wikipedia.org/wiki/C%2B%2B

「C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。」

現在でも、たびたび改定が行われている現役バリバリの言語だな。

先に引用したHAL/Sの記事を読むと、スペースシャトルのプログラムは、下手をしたらアセンブラで書かれていたかもしれない。

「1962 年から暫く、アポロ誘導コンピュータのソフトウェア開発初期には YUL と呼ばれる独自のアセンブラ言語が用いられていた。」

「最終的には DAPというアセンブラ言語に置き換えられたようである。」

「それでもアセンブラで開発するよりかは遥かにましだった。実際は当初 NASA ではアセンブラでの開発が強く主張されていた。組み込み用プログラミング言語は当時信頼性とパフォーマンスの両面でまったく信用されていなかった。」

「パフォーマンステストで、アセンブラ記述より 5 パーセント速度が务るだけという性能をベンチマークで示し、ようやく HAL/S の採用が決まったのである。」

「ただ、シャトルフライトソフトウェアの開発が HAL/Sという高級言語で行えたことは成功と言っても良かったのかも知れない。もしアセンブラで開発が行われていたら、プロジェクトは果たしてどうなっていただろうか。……いや、それでもうまく行っていたのかも知れない。開発期間やコストはまったく違うものになっていただろうが。」

HAL/Sは、失敗した言語だったんだろうか?。

記事の筆者である水城氏は、こんな風に評している。

「シャトルフライトソフトウェアの開発はコストの問題はあるにしても、安全にその使命を果たしたという意味では成功だった。しかし HAL/S そのものは、やはり失敗した開発である。宇宙機向け汎用言語という当初の目的を果たせず、組み込みソフトウェアの世界で HAL/S はほとんど影響を与えることができなかった。」

そして、こうも述べている。

「HAL/S は珍しい、死亡日時がはっきりしたプログラミング言語となる。STS-135 向けのミッション用コード差分の最後のものが書かれた瞬間に、HAL/S の死は確定する。命日は 2011 年 7 月 21 日、最後のシャトル OV-104 アトランティス搭載のP-101S から火が落とされる瞬間だった。これより先、HAL/S でコードが記述されることは二度と無いだろう。」

どんなプログラミング言語であれ、そこには、それに関わった多くの人々の英知と凡知(?)が染みついている(コードを書かされたプログラマの恨みも・・・)。

まあ、どうでもいいんですが。

オリオンやスターライナーのプログラムが、どんな言語で開発されているかは知らない。

時が経てば、C++だって同じように呼ばれることになるのかも知れないしな。

現代の宇宙船は、ソフトウェアのデバイスに過ぎない。

人間が操縦して飛ばすことは最早出来ず、操縦桿(タブレットのボタン)とエンジンの間には、コンピューター殿がデンと構えて仕切っている。

何をどうしたいかを指示すれば、最適な操縦で良きに計らってくれる。

ISSタクシー程度なら、完全自動運転で連れて行ってもらえる(タイマーさえ合っていれば!)。

HAL/Sは、当時作られた2001年宇宙の旅に登場するコンピューター、HAL9000にあやかったものともいわれる。

「HAL/S という言語の名前の前半はこの MAC 言語の主開発者、Halcomp の名前に由来するとされているが、当時公開された映画"2001:a space dyssey"の中に出てくるコンピュータ、HAL9000 に由来する部分も当然ある筈である。」

「HAL/S の名前の後半、スラッシュの次の S は、シャトルを意味するとされている。」

コンパイラの作成に成功していれば、探査機ガリレオにも使用されて、HAL/Gとか出来てたかもしれないな。

「正直なところを言おう。シャトルがこの言語を使いながらコンピュータシステムで致命的な不具合を出さなかったというのは、ひとつの奇跡だ。」

そうならなかったのは、膨大なチェックの手間をかけたからに相違ない。

スターライナーのソフトウェアチームに、爪の垢でも煎じて飲ませたいところだろうが、彼らに必要だったのは経費と時間(人手も?)かもな。

結果的に、スペースシャトルは地に落ち、ファルコン9だけが残った(開発言語とは無関係でしょうが)。

今後、様々な宇宙機が飛び回るだろうが、それを飛ばしているのは人間じゃない。

人間が書いたコードを実行しているコンピューター殿が、良きに計らっている。

言語の良し悪しは、実行コードの品質に関わるだろうが、時間とコストと手間の問題でもある。

スペースレーザーのコードが間違っちまって、多数のスターリンク衛星からの集中砲火を受けて、カイパー衛星が焼かれて落ちたりしてな(そんなあ!)。

よくよく検証してから実装してもらいたいもんだな・・・。

OMS違い:ダイビング器材のブランドと枯れた制御系ロケット2020年09月06日 13:09

OMS違い:ダイビング器材のブランドと枯れた制御系ロケット
OMS違い:ダイビング器材のブランドと枯れた制御系ロケット


今日もまた、何か面白いことはないかとネットを徘徊する。

(オリオン宇宙船が最初のアルテミス打ち上げの最終マイルストーンを通過)
https://www.spaceflightinsider.com/missions/human-spaceflight/orion-spacecraft-passes-final-milestone-for-first-artemis-launch/

「欧州宇宙機関がエアバスによって設計および構築された欧州サービスモジュールを提供したため、宇宙船は国際的な取り組みでもあります。」

(欧州サービスモジュール:ESA公式ページ)
https://www.esa.int/Science_Exploration/Human_and_Robotic_Exploration/Orion/European_Service_Module

「European Service Moduleは、NASAのOrion宇宙船に対するESAの貢献であり、月に宇宙飛行士を送ります。電気、水、酸素、窒素を供給するだけでなく、宇宙船を適切な温度に保ちます。」

暫定の第二段ロケットから切り離されてしまえば、このサービスモジュールの推進システムだけを使って飛行することになる。

「サービスモジュールの本体は約2 mの高さですが、そのメインエンジンであるOrbital Maneuvering System EngineはSpacecraft Adapterまで伸びています。」

そのメインエンジンは、スペースシャトルの軌道制御用エンジンとしても使われた(バンガードロケットまで遡れるそうです)。

(スペースシャトル軌道制御システム)
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%B7%E3%83%A3%E3%83%88%E3%83%AB%E8%BB%8C%E9%81%93%E5%88%B6%E5%BE%A1%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0

「Space Shuttle Orbital Maneuvering System、OMS」

だから、OMSと呼ばれる(OMS-Eとも)。

(欧州サービスモジュール)
https://en.wikipedia.org/wiki/European_Service_Module

「AJ10-190エンジン」(OMSで使用された:メインエンジン:1基:燃料はモノメチルヒドラジンで、酸化剤は四酸化二窒素)

「R-4D-11補助スラスタ」(HTV、ATVなどで使用された:8基:燃料としてモノメチルヒドラジン(MMH)、酸化剤として一酸化窒素を3%添加した四酸化二窒素(MON-3)を採用)

「スラストエアバスリアクションコントロールシステムエンジン」(リンクされている元ネタを当たると、ATV(欧州補給機)に使われてたやつらしい:4基×6ポッド)

燃料は、3種類のエンジンとも共通のようだ。

オリオン宇宙船といったときは、このサービスモジュール(緊急脱出システムとかアダプター、カバーなども)を含めた概念となり、再突入して洋上回収され再使用されるカプセルはクルーモジュール(CM)と呼ばれる。

どっかで聞いたような呼称だが、業界では一般名詞のようなもんなんだろう。

2014年のEFT-1(無人飛行試験)の際には、クルーモジュールのドンガラ(といっても、本物ですが)だけ打ち上げられ、脱出塔やサービスモジュールはダミーだった。

(EFT-1)
https://ja.wikipedia.org/wiki/EFT-1

「ESAが開発を担当しているサービス・モジュールや、新たに開発された打ち上げ脱出システム(分離用のモーターのみ装備)はダミーを使っている。」

OMSなどを積んだ、本物のサービスモジュールと統合されてチェックされるのは、初めてということになる。

もちろん、ESMは毎回使い捨てだ。

OMSといえば、どこかで聞いたような気がして確認する。

(OCEAN MANAGEMENT SYSTEMS)
https://omsdive.com/

最近、あまり買わなくなったけど、浮沈子の初期のテクニカル器材には、赤と黄色のマークがいっぱい付いている。

まあ、どうでもいいんですが。

2010年に始まったSLSプロジェクトは、1970年代(50年代も含む)から連綿と続く枯れた技術を寄せ集め、現代のメカトロニクスのトッピングを施してでっち上げた代物だ(それが悪いというわけじゃない)。

電子デバイスをしこたま仕込んでそれらしく見せてはいるけど、中身はアポロ時代のまま。

ダメ出しをし尽くし、改良に改良を重ねて磨き上げた珠だ。

全く新しいロケットなどではなく、少なくともスペースシャトルに遡ることができる程度の実績は積んでいる(リアクションコントロールシステムエンジンは、ATVまでか)。

新しければいいというもんじゃない。

そういうのが好みなら、テキサスのボカチカ辺りで吹っ飛んでいるのをいくらでも見ることができる(そんなあ!)。

金も時間も湯水のごとくつぎ込んで、SLSもやがて飛び立つ。

戻ってくるのは、CMだけだ。

以前は回収して再使用していた固体燃料ブースター(SRBs)も、SLSでは使い捨てになる(今度のは、FSB-1って言うんだそうだ)。

スーパーヘビーやスターシップのようなわけにはいかない。

ふつーの使い捨てロケットだからな。

ESMは、アルテミスー3の分まで作成中だという。

その先は?。

ESAには、もう、ESMを作成する義理はないかも知れない(ISS経費の代わりにもう少し作るかもな)。

NASA自体が、いつまでSLSにしがみついているかということもある。

もちろん、有人宇宙船システムとしてのSLS/オリオンは、米国にとっては唯一の地球低軌道以遠へのアクセスパスだ(ソユーズは月くらいまでは対応しているし、中国は時期宇宙船を開発中だしな)。

他に、代替手段はない。

しかし、仮に2030年代にスペースシップなりなんなりが、有人認定を受ければ話は変わる。

オリオン不要論が噴出する(今でも、出ているようですが)。

10年くらいの短いライフサイクルになるかも知れない。

再使用ロケットであったスペースシャトルの事故が相次ぎ、冷戦が終結し、米国の経済に陰りが出てきて時代は変わった。

そんな中で構想されたSLSだが、飛び上がる前に賞味期限が来てしまった。

地球低軌道に民間宇宙船が飛び交い、月や火星に行こうとか言いだしているし、かつての宇宙開発競争は身内同士ということになり始めた。

そうこうしているうちに、中国とかに詰め寄られ始めているし(そうなのかあ?)。

SLSの中には、米国(欧州も)の宇宙開発の歴史が詰まっている。

化学ロケットに地球軌道上で給油して、月以遠に有人宇宙船を飛ばせるようになれば、巨大な使い捨てロケットは用済みだ。

何時になるかは分からないが、その時がSLSの終焉だろう。

その、最初の打ち上げに供されるCMとESMの試験が終わった。

これは、きっと、終わりの始まりなのだと思うと、ちょっと感無量だな。

まだテストフライトの前から終焉を語ってはいけないかもしれない。

しかし、考えてみれば、オリオンは有人では月より先に行くことはできない(ちょっとなら行けるかな)。

乗員の生命維持にしても、21日間の期限が切られている。

馬車がカボチャに変わり、白馬がネズミに戻り、シンデレラはおうちに帰らなければならない。

最大運用期間は210日(6か月という記述も)となっているが、それは無人運用とか、宇宙ステーションなどに係留されている時の話だ。

オリオン宇宙船単体としての運用寿命は、4人の宇宙飛行士を21日間生かしておくことしかできない。

莫大な経費を払って得たものは、3週間のミッションと後には何も残らない探査結果だけだ(そうなのかあ?)。

月に行ったって、何かがあるわけでもないだろう?。

小惑星ミッションという話もあったが、無人でそこから引っ張ってきた小振りのやつを、月の裏側でコソコソするだけの話だったしな(小惑星探査とは似て非なる話だ)。

ロボット使って、小惑星の鉱物資源をほじくり返す話(もちろん、無人)の方が余程気が利いている。

使えないオリオンと、SLSの連携。

無人探査機を打ち上げたりすることもあるから(エウロパクリッパーとかあ?)、SLSはまだ使いようがあるかも知れないが、オリオンは使い潰しが効かない。

ISSに救命ボートとして係留しておくには上等すぎるからな(半年で寿命だし)。

開発に200億ドル(2兆円以上)かけて、たぶん、3回くらいしか使わないかもしれないしな(そうなのかあ?)。

まあいい。

何の目的もなく、開発のための開発を行ったツケを、米国民は延々と払い続けなければならない。

地球低軌道より遠い宇宙に行きたい、太陽系の中を縦横無尽に飛び回りたい、可能ならその外側にも行って見たい・・・。

そのためには、オリオンの他に、宇宙空間専用の巨大宇宙船を建造して運用しなければならない。

化学ロケットで飛ぶのか、電気仕掛けなのか、新手の原子力ロケットなのかは知らない。

オリオンじゃダメなことだけは確かだ(せいぜい月くらいまで)。

SLSの完成が近づいてきて、NASAが月だ月だと言い始めたのには理由があった(たぶん)。

いきなり、火星は無理なんだと、納税者に納得させなければならない(S社はやるといってるけどな)。

火星ってのは、月を諦めさせるための方便だったんだと悟らせてはいかんからな(そうなのかあ?)。

コンステレーション計画がとん挫した時、なんとかして体裁を整えなければならなかっただけだ。

今更、月に行くというのもハズカシイ話だ。

しかし、それは現実の、手が届く範囲の話だ。

オリオンの使い道としても正しい(それが限界だし)。

先行きがどうなるにせよ、少なくとも1度は上がるに違いない。

トランプ政権が続くようなら月面に向かって飛ぶし(途中で乗り換えますが)、民主党が政権奪還に成功すれば、月周回軌道止まりだ。

どっちにしても、そのまま火星に向かって飛ぶことはできない。

そういう宇宙船じゃない。

作る時から、それは分かっている。

惑星間宇宙船の具体な絵面は見えていない。

放射線からの有効な遮蔽と人工重力というのは予想されるところだし、長期間の生命維持をどのように行うかについては議論があるだろう。

水や酸素のリサイクル、場合によっては食料も再生産するかもしれないしな。

火星程度なら、現在の技術をしこたま詰め込めばどうにかなるかもしれないが、木星圏ともなれば実現可能性も含めて慎重に検討することになる。

金星は、行ったとしても降りることはできないから、当面選択の余地はないかも知れない(回って帰ってくることは検討されているようです)。

小惑星帯までくらいは、将来の有人探査の範囲として考慮されているだろう。

数年に渡る惑星間空間での滞在が、どんな影響を人体に与えるかは未知の世界だ。

それはもう、22世紀以降の宇宙開発になる。

いや、23世紀以降かな。

オリオンの、次の次の次の次の次の次くらいか(テキトーです)。

確認しておこう。

最終チェックが行われたオリオン宇宙船は、月周辺までしか行けない。

月面にも(着陸船に乗り換えなければ)、火星にも、それ以遠の何処にも行けない。

宇宙空間で、別の宇宙船に乗り換え、乗り継いでいかなければならない(くっつけて一緒に飛ばす案もあるようですが、運用期間がネックになりそう)。

地球と宇宙とを結ぶ有人のタクシーのようなもんだ。

ISSより高く、GPS航法ができないバンアレン帯の外に行くことを想定して設計されているだけで、ISSタクシーであるクルードラゴンとかスターライナーと大した違いはないのだ(そうなのかあ?)。

月周回ステーションが、そこから先の深宇宙探査にどれ程有効なのかは知らないが、アプリケーションとしてはちょうどいいところだ。

21世紀の人類は、月へ乗り込んだ20世紀の先達の後を追って、月へ回帰するのがせいぜいかも知れない。

有人月面基地までは無理かもな(スターシップ次第というところか)。

月周回ステーションがいいところだ(常時滞在はムリポ!:乗り換えステーションに改名が必要?)。

そこから、惑星間探査に出発するというが、地球低軌道での給油ができれば、そんなもんはいらない(たぶん)。

おっと、ブンブン飛んでるスターリンク衛星にぶつからないように気を付けないとな・・・。