航空機の話題からAda,Java,並列オブジェクトへ

5
ICHIRO SATOH @ichiro_satoh

BoeingもAirbusも三菱MRJも最近の旅客機の制御系はHamilton Sundstrand製のはず、言語はAda。@masanork 複雑なソフトウェアというと戦闘機、そこから一桁減って旅客機らしいが、あの辺の品質管理ってどれくらいちゃんとしているのか。

2010-02-24 09:35:46
ICHIRO SATOH @ichiro_satoh

Adaというと過去の遺物のプログラミング言語という方が多いのですが、すくなくても旅客機に乗るとき、我々はAdaのプログラムに命を預けているのですよね。ちなみにB787も制御系はAdaのようですから、Adaは当面生き残りそう。

2010-02-24 09:40:42
Ken Wakita @kwakita

@ichiro_satoh なんと、知りませんでした。Ada が航空機の制御に用いられているなんて。

2010-02-24 09:56:25
ICHIRO SATOH @ichiro_satoh

いまでも航空機の制御系はAdaが多いようです。ちなみに軍用機では制御系がConcurrent Pascalで書かれた戦闘機もあったそうです。 @kwakita @ichiro_satoh なんと、知りませんでした。Ada が航空機の制御に用いられているなんて。

2010-02-24 10:05:18
ICHIRO SATOH @ichiro_satoh

ソフトウェア信頼性はエンタープライズ系よりも制御系が重要、制御系でも家電や車載よりも航空機は信頼性要求が桁違い高い。もし高信頼要求向け技術が低信頼向けに降りてくるとしたら、航空・軍事産業のない日本はソフトウエア信頼性で航空・軍事産業のある国は勝てない。

2010-02-24 10:17:45
Ken Wakita @kwakita

@ichiro_satoh Ada は学生時代に読んでいた OS や並列プログラミングの教科書にも取り上げられていました。モジュール機構を備えて、スレッドやモニターをとりいれた特徴的な言語でしたね。

2010-02-24 10:20:38
ICHIRO SATOH @ichiro_satoh

Adaはガード付き構文など、制御系のプログラミングでは便利なのでしょう。言語仕様の複雑さが問題とされましたが、並行処理を構文で扱おうとするといたしかたないのかもしれません。@kwakita Adaは…。モジュール機構を備えて、スレッドやモニターをとりいれた特徴的な言語でしたね。

2010-02-24 12:10:35
ICHIRO SATOH @ichiro_satoh

副作用の少ない関数型プログラミング言語は並列記述に相性がいいのですが、90年前後に並列Lispの研究では逆に並列性を抑えるのがたいへんになりました。並列度をあげやすいことは無条件でメリットになるとは限らない。特に課金があるクラウドの世界では。

2010-02-24 12:32:30
ICHIRO SATOH @ichiro_satoh

Adaの実行コードは効率よりも信頼性。そもそもプロセッサも性能よりも枯れた製品の方がいい。コード実行効率を心配する人は少ないと思いますけど。 @yamatanikawagoe Adaの実行コードの効率は、今時点でみるとどんなものなのでしょう。

2010-02-24 12:49:50
ICHIRO SATOH @ichiro_satoh

最近、ScalaやErlangがもてはやされる理由のひとつとして、部分的とはいえ、並行的な処理と言語構文を対応している点はあげられると思っています。@latache78 その部分には異論はありません。処理系の実装を考える立場になると血の気が引きますが。

2010-02-24 16:53:33
ICHIRO SATOH @ichiro_satoh

並行オブジェクトは記述性を考えると、アクターのようにオブジェクト内はシングルスレッド実行に限定すべき、という議論を20年前に散々されたのですが、結果としては効率性を優先してマルチスレッド実行可能なオブジェクトが主流になったわけですが、結局、もとに戻ってきました。

2010-02-24 17:19:04
Ken Wakita @kwakita

@ichiro_satoh マルチスレッドなオブジェクトが主流になったのは Java の影響が大きいのではないですか。Gosling にその点についてどれだけ検討したのか尋ねたことがあります。

2010-02-24 17:25:38
ICHIRO SATOH @ichiro_satoh

ErlangやScalaが流行ると言うことは、CSPにしてもAdaにしても並行記述の設計思想はまちがっていなかったのでしょうね。 @latache78 当時Hoareが、Adaももう少し仕様を刈取りすればよくなる、と言っていたのが、この辺りに落ち着いたのかもしれませんね。

2010-02-24 17:26:14
Ken Wakita @kwakita

回答は、並列オブジェクトに関する研究があったのは知っていたが、速やかに Java を外に出すために単純な仕様を選んだ。それが並列スレッド+モニターだったと。

2010-02-24 17:26:46
ICHIRO SATOH @ichiro_satoh

このあたりは @kwakita 先生の方がくわしいかと…。研究レベルではマルチスレッドオブジェクトの提案がありましたが、Javaがとどめを刺したのはご指摘の通りだと思います。@kwakita マルチスレッドなオブジェクトが主流になったのは Java の影響が大きいのではないですか

2010-02-24 17:29:38
ICHIRO SATOH @ichiro_satoh

ちなみにGoslingはなんとこたえたのですか? @kwakita Gosling にその点についてどれだけ検討したのか尋ねたことがあります。

2010-02-24 17:32:14
Ken Wakita @kwakita

@ichiro_satoh Gosling の回答は直前のメッセージの通りで、簡単に言えば単純な方式を採用したということでした。

2010-02-24 17:38:32
ICHIRO SATOH @ichiro_satoh

なるほどね。Javaの方式は実装も単純だし、言語的拡張も最小限に抑えられますね。個人的には(Runnable)インターフェースを使った方法には当時、感動しました。@kwakita Gosling の回答は直前のメッセージの通りで、簡単に言えば単純な方式を採用したということでした。

2010-02-24 17:43:15
ICHIRO SATOH @ichiro_satoh

なるほどね。Javaの方式は実装も単純だし、言語的拡張も最小限に抑えられますね。個人的には(Runnable)インターフェースを使った方法には当時、感動しました。@kwakita Gosling の回答は直前のメッセージの通りで、簡単に言えば単純な方式を採用したということでした。

2010-02-24 17:43:15
Ken Wakita @kwakita

@ichiro_satoh あのころは Actor づけだったので、synchronized を見てがっくりときたような記憶が。。。

2010-02-24 17:48:17