パスワードを忘れた? アカウント作成
1413837 story
プログラミング

スペースシャトル専用言語HAL/Sに関する電子書籍 44

ストーリー by hylom
ハッカーさんいらっしゃい 部門より
あるAnonymous Coward 曰く、

スペースシャトル搭載計算機専用プログラミング言語「HAL/S」に関する電子書籍「プログラミング HAL/S」が、筆者の水城徹さんにより公開されている(MAKE: Japan : スペースシャトル専用言語HAL/Sに関する電子書籍)。この電子書籍は水城さんのWebサイトからPDF版およびepub版がダウンロードできる。

書籍内ではHAL/Sについて「極めて残念ながら、それは悲惨極まりない言語なのだ。」と評し、シャトル制御言語の歴史から「最悪とまでは言わないが、基本的に駄目」という言語仕様、入出力仕様、ハードウェアと運用仕様などが紹介されている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 目の付け所は面白いと思いますが、 PDF 版の第 3 章「演算」 (12~14 ページ) を眺めて 2005 年版言語仕様 (英語) [klabs.org] と照らし合わせてみたところ、内容の正確性に疑問が残ります。

    • ** は「階乗演算子」と説明されていますが (p. 12)、正しくは「べき乗演算子」です (言語仕様 6-4 ページの表 6-2)。
    • 論理否定 ¬ の優先順位が定義されていないという記述があります (p. 13)。言語仕様 6-11 ページの図 6-10 によれば、 ¬ を論理否定の単項演算子として使う場合、括弧を付けなければならないことになっているので、優先順位が問題になることはありません。単項演算子 ¬ はこのほかにビット否定や「イベント」の否定にも使われますが (「イベント」というのが何であるかは僕は把握してない)、構文によればこの単項演算子がとれるのは単独の変数か括弧に入った式と指定されているので、優先順位が最高と指定されているのと同じことです。 (なお記号 ¬ 自体は他の記号と組合せて別の演算子を作るのにも使われます。「¬=」で非等価など。)
    • ちなみに p. 12 の演算子の優先順位の表には「否定演算子 ¬」というのが入っていますが、これが入っているのは p. 13 の記述と矛盾しますし、言語仕様にもこういう記述はないみたいなので、 p. 12 の表に入っていること自体が誤りではないかと思います。
    • = は「代入演算子」と説明されていますが (p. 13)、演算子としての「=」は等価比較であり (言語仕様 6.2.1 節など)、 C でいう == と同じです。 HAL/S には代入文 (言語仕様 7.3 節) はありますが、「代入演算子」なるものは存在しないようです。
    • 「E は G の下添字、つまり対数 G の logE を示す」 (p. 13) というのは僕には意味不明ですが、下付きは配列の添え字等を表します (言語仕様 2.4 節と 5.3 節)。対数は無関係。

    他の章はまともかもしれませんが、 3 ページしかない章の中にこれだけ言語仕様と食い違う点があると、残りを読む気があまり起きないというのが正直なところ。もう少し慎重に事実確認をしてくれればなあと思います。特に、先人のしたことを「悲惨極まりない」と酷評するのであればなおさらです。目の付け所は面白いだけに、もったいない感じがします。

    • >** は「階乗演算子」と説明されていますが (p. 12)、正しくは「べき乗演算子」です (言語仕様 6-4 ページの表 6-2)。
      まあ普通に翻訳ミスの類で、本の価値がさほど変わるものでは無い。

      誤字脱字や翻訳ミスの指摘は作者なら歓迎するだろうけど、
      重箱の隅をつついただけで批判する気になるのはいかがなものか。

      >¬ を論理否定の単項演算子として使う場合、括弧を付けなければならないことになっているので、優先順位が問題になることはありません。
      それは「優先順位がグダグダなので、しょうがないから括弧を付けて運用で回避しろ」というのと同義なのでは。
      それにあの調子だと、括弧を忘れた場合にコンパイルエラーがでるわけでもなさそうだしな。

      >HAL/S には代入文 (言語仕様 7.3 節) はありますが、「代入演算子」なるものは存在しないようです。
      やはりそれも言語仕様が変態すぎるということの傍証なのでは。。。

      #「文脈によっては代入文になるけど、代入の独立した演算子はありません(キリッ)」。
      #それで、どうやって解析すんのさ。。。

      親コメント
      • 重箱の隅をつついただけで批判する気になるのはいかがなものか。

        えーと、書き方が悪かったようですが、僕の指摘は重箱の隅をつついただけではありません。僕は本書で HAL/S を駄作と評する根拠がいろいろガタガタだと指摘しています。

        あと、 BASIC にも HAL/S と同様、代入演算子というのはないのですけれど、 firewheel さんはたぶんご存じないのでしょうね。

        親コメント
        • by Anonymous Coward

          件の文章は去年の2月末から3月にかけて書かれた文章のようですが、そのときから「階乗」などそのまんまのようです。

          pdf/epub化するにあたって読み直すこともしなかったのでしょう。

      • いやいや代入演算子がないから変態ってのはどうかなぁ。評者が代入演算子がある言語しか知らないってだけじゃない?
        親コメント
      • by Anonymous Coward

        > #「文脈によっては代入文になるけど、代入の独立した演算子はありません(キリッ)」。
        > #それで、どうやって解析すんのさ。。。

        行を先頭から見ていって、IF文でもDO文でもなくて行中に'='があれば代入文なので、最初の'='の後の'='は論理演算子と解釈すればいいだけだよ

        知ろうともしないくせに語りたがるだけの馬鹿は死んでくれ

    • by Anonymous Coward

      いつもの本と違って、対象をタダひたすらこき下ろしたいといった調子で書いてあって、なんか変だなぁと思って読んでました。
      実際やっつけなのかも。

      • by Anonymous Coward

        この言語が搭載されたスペースシャトルが「大いなる失敗だった」と全否定される風潮になっているので、そのノリで書いてしまったのかも知れませんね。

        言語の解説だけでなく、現場でどのように運用されていたかがわかるコラムもあるとよかったなと思いました。

        • by Anonymous Coward

          いやいや。
          水城さんって今までもさんざん宇宙機/宇宙関連の本を書いてる人で、
          この方面だとアポロガイダンスコンピュータの本なんかも書いてる。

          今更「大いなる失敗だった」なんて言うわけもない人なんだよね。

          なのになんでこれ書いちゃったんだろう。

    • by Anonymous Coward

      たしかに現在の目からすれば奇妙な仕様の言語で無茶苦茶な貶され方をしているが、常識的に考えてそれをそのまま使い続けていたとはちょっと信じられない.
      おそらくある時期からはもうちょっとましなCやPascal風の仕様記述言語とシミュレータを用いて開発したソースを、トランスレータでHAL/Sに自動変換していたのではないか?(昔作ったHAL/Sのコードはなるべく手を入れないようにしていたのだろうけど)

      • いやこの手の制御プログラムで、そんなトランスレーターなんて出所の知れないコードを交ぜることはありえません。コンパイラさえ疑惑の目で見られたのに、トランスレーターの動作が正しいことを誰がテストして証明するのでしょうか。 パンチカードは流石にファイルシステムでエミュレーションする気の利いたフロントエンドをつかってスクリーンエディタで編集していたでしょうが。
        親コメント
        • by Anonymous Coward

          トランスレータが吐いたコードをチェックすりゃいいんじゃねえの?
          そういう話じゃないのか。

          • by Anonymous Coward

            それはプログラマにとって返って地獄では?
            C言語で書いたプログラムのチェックをアセンブラでするようなもの。

          • by Anonymous Coward
            トランスレータが介在する以上、元々のコードで十分行われたテストと、何より実際に飛行に使用したという実績がリセットされてしまうからでしょう。
            吐き出されたコードを検証する事になって、結局一から作るのと同じになってしまうからそのままずっと使われて来たんだと思います。
      • by Anonymous Coward

        いや、ただ単に我慢して使いつづけていたのだとおもいます。
        すくなくとも、一度は離着陸に成功したプログラムを大幅に書き直すことは、あるはずありませんから。
        ましてや、年間10行くらいの修正(ドキュメントは1万頁かもしれんが)で高給をもらえるなら、だれも文句いいませんて。

    • by Anonymous Coward

      おかしいというか、仕様が逐次改訂されているのに最新版の資料を参照していなかったのでは?

  • NASAドキュメント (スコア:2, 参考になる)

    by Anonymous Coward on 2012年01月20日 21時42分 (#2084497)

    言語の特徴と欠点などがコンパクトにまとまった労作ですね。非常に面白いです。

    HAL/S Documentation [klabs.org]の上のほうにドキュメントがいくつかありました。

    • by Anonymous Coward

      非常に興味深い文書だったが、現在の知見からの批判に終始していて、「当時の水準では一体何ができたのか」という観点はないですね
      歴史学的ではない、あるいは彼はヘーゲル主義者だったのか

      • by firewheel (31280) on 2012年01月22日 13時12分 (#2085096)

        仮に「当時の技術では、これはやむを得ない選択だった」としても、
        今の観点からして失敗言語であるとすれば、それは言語設計が失敗であり、
        言語が生き残れなかったのもそれが理由だったと考えるのは妥当だと思います。

        LISPあたりと対比して書いたら面白いとは思うけど、そうすると議論も発散するし、執筆に関する
        労力もハンパではなくかかるので、こんな簡単には配布できなかったでしょうね。

        あと、当時のNASAに他に選択肢がなかったとしても不思議はないけれど、それはみずほ銀行
        あたりのレガシーシステムをメンテしている人は、日々直面しているジレンマではなかろうか。

        親コメント
        • by Anonymous Coward

          なるほど、レシプロ戦闘機は生き残っていませんが、大戦当時でも失敗した設計だったということですね。

          • by Anonymous Coward

            HAL/Sがレシプロ戦闘機って
            厚かましいにも程がある

  • by yohata (11299) on 2012年01月20日 23時15分 (#2084556)

    この手のものに使う言語って、基本Adaだと思ってましたが。
    何故独自言語を作る必要があったんでしょうね?

    • by Anonymous Coward on 2012年01月21日 0時45分 (#2084600)

      開発が60年代後半から始まって70年代には本格化していた機体の制御に、83年に仕様が決定した言語を使うのはかなり無謀なんじゃないかと。

      親コメント
    • by joey_tribbiani (43367) on 2012年01月21日 13時39分 (#2084740)

      おっしゃりたいのは、米国国防総省関係は Ada 言語で統一されているはずだから…、ということですよね?ごもっともです。

      Wikipedia で調べて見ましたら、米国航空宇宙局は、国家航空宇宙諮問委員会の後継組織として造られたもののようですから、国防総省とは系統が異なる組織のようです。だから、Ada 言語ではなく、独自の HAL/S言語を開発することになったのかもしません。縦割り行政ということでしょうかね? (≧ε≦)

      親コメント
      • by Anonymous Coward

        そんなことはない。単にHALはAdaの前身のひとつです。
        国際宇宙ステーションではAdaが使われています。

        • これは失礼!HAL/S言語の方がAda言語より古いのですね。つまり、Ada言語を作るきっかけになった、数多くの言語のひとつにHAL/S言語があったんですね。

          Ada言語が多機能で先進的な素晴らしい言語になったのは、ひとつにHAL/S言語での反省があったのかも知れませんね。( ´∀`)

          親コメント
    • by Anonymous Coward

      どんな言語も最初に創られた時は独自言語なんだよ。
      #「キリスト教も2千年前は新興宗教だったんだ。」というのを読んで納得した。

      • by Anonymous Coward

        野暮なツッコミとは思いますが、2千年前にはキリスト教はなかったのではないかと。

        • by Anonymous Coward

          #2084571の「2千年前」を、今からきっかり2000年前と読み取るか、それとも約2000年ほど前と読み取るか、そのへんが理系と文系の分かれ目かな。

          #どっちが理系でどっちが文系かは知らん

          • by Anonymous Coward

            前者は自閉症スペクトラム高得点、後者は普通の人ってだけだよ。

            • by tomorou (37252) on 2012年01月21日 9時57分 (#2084681)

              前者のツッコミのトンチにクスリとするのが普通の人。
              病人にしようとするのは医者。

              親コメント
              • by USH (8040) on 2012年01月22日 14時11分 (#2085110) 日記

                精神科医にかかると、どういう反応返しても病人にしてくれます。

                親コメント
              • by Anonymous Coward

                件の「野暮なツッコミ」が“トンチ”だと思える人は、笑いのセンスが独特な人、ってことでよろしいか。

              • by Anonymous Coward

                自分の感覚に合わない奴は全員異常ですね分かります

              • by Anonymous Coward

                相手を「精神科医だと思い込んでいる患者」であると思わせて、精神科医同士に話し合ってもらったらそれぞれどんな診断が下るのだろうか?

              • by Anonymous Coward

                精神科医なら「精神科医だと思い込んでいる患者」はまずいないということくらいは知っている。

          • by Anonymous Coward

            キリスト教の成立は1世紀頃だから、今からきっかり2000年前ととっても、それとも約2000年ほど前ととっても、誤りなのには変わりないね。

            • by Anonymous Coward

              1世紀頃ってことは、大体西暦1~100年の間で、今が2012年。
              5%程度の誤差で『だいたい』が通用しないなんて…

    • by Anonymous Coward

      ただたんに、Adaより古いはなしだから。当時は、陸,海,空でプログラミング言語がちがっていたのですよ。
      これは、その「宇宙」版ね。

      • by Anonymous Coward

        だから、これは現代のプログラミング言語と比較してはだめで、TACPOL、CMS-2、Jovialと比べないといけないわけ。
        これらから、Adaに引き継がれた事項もあるし、ない事項もある。。。

    • by Anonymous Coward

      昔と違って、今は小規模な組込用のプロセッサでもコンパイラの使用を前提としたプロセッサ・アーキテクチャになっているのと、コンパイラ作成技術そのものが進んでいて、コンパイラ屋さんに頼めばCコンパイラなんかを簡単に作ってくれます. 細かな最適化の話を別にすれば、コンパイラ屋さんが持ってる共通の中間コードを吐くフロントエンドに、各プロセッサ固有のコードを生成するコードジェネレータを付け加えるだけで出来てしまう.
      一方、HAL/SはAdaよりもはるか昔の時代が時代だっただけにいろいろ仕方の無いところもあるのです.

      #基本設計の古いDSPなんかにはアーキテクチャ上の制約のために実行効率の良いコンパイラなどどうやっても作りようの無いものがある
      #PICマイコンの初期の製品などもコンパイラ使うことなど考えた作りにはなっていない

  • by soltiox (25610) on 2012年01月21日 12時06分 (#2084716) 日記

    工夫してあるんだか無いんだかよく分からない小技の数々とか、
    微妙な文法規則とか、こういうのって、凄い身近にあったような?

    と、思ってしばし考えて思いついたのが、
    xp までの windows cui のスクリプトかな、と。
    「こういうコトをしたい」と思ったときに、思いついたままのコードでは
    いまいち動かない肩透かし感とか、ちょっと似てる気がした。

  • by Anonymous Coward on 2012年02月13日 15時38分 (#2098000)

    Jay Cutler Jersey [broncosedge.com]
    Tim Tebow Jersey [broncosedge.com]
    Von Miller Jersey [broncosedge.com]
    Broncos Jersey [broncosedge.com]
    Brady Quinn Jersey [broncosedge.com]
    Brandon Lloyd Jersey [broncosedge.com]
    Brandon Marshall Jersey [broncosedge.com]
    Brian Dawkins Jersey [broncosedge.com]
    Broncos Customized Jersey [broncosedge.com]
    Champ Bailey Jersey [broncosedge.com]
    Demaryius Thomas Jersey [broncosedge.com]
    Dennis Smith Jersey [broncosedge.com]
    Eddie Royal Jersey [broncosedge.com]
    Elvis Dumervil Jersey [broncosedge.com]
    Jake Plummer Jersey [broncosedge.com]
    Javon Walker Jersey [broncosedge.com]
    John Elway Jersey [broncosedge.com]
    John Lynch Jersey [broncosedge.com]
    Karl Mecklenburg Jersey [broncosedge.com]
    Knowshon Moreno Jersey [broncosedge.com]
    Kyle Orton Jersey [broncosedge.com]
    Ryan Clady Jersey [broncosedge.com]
    Selvin Young Jersey [broncosedge.com]
    Shannon Sharpe Jersey [broncosedge.com]
    Steve Atwater Jersey [broncosedge.com]
    Terrell Davis Jersey [broncosedge.com]
    Tom Jackson Jersey [broncosedge.com]
    Willis McGahee Jersey [broncosedge.com]

typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...