タイトル | : Re^3: Pascal & Basic |
投稿日 | : 2022/11/11(金) 03:33 |
投稿者 | : としき |
参照先 | : http://toshiki.la.coocan.jp/ | 番 号 | : 10386 10377 番 文太 さんへのコメント |
> > この拡張というのが何なのか分からなかったのですが。> APPENDIX E. PASCAL STANDARD AND IBM FEATURES> Metalanguage> Metacommands: ;これらはコンパイラへの擬似命令。なるほど、これは私の感覚では、確かに正統な拡張と言う感じです。> どうしても本気で知りたいなら、basm最終版を落としてもらって、basm.txtを> 読んでもらうしかないですが、僕がなんとなく理解できたのは、そこそこ興味はそそられるので、落としてしまうかも。 とりあえず、ネットをさまよって、英語で書かれたいくつかのサイトをざっくり 読んでみたのですがね。関係者が書いたのか善意の第三者が書いたのかわからない ページで、compilingという単語を見かけました。なので、これって実は、ただの BASICコンパイラなのではないか、と思いました。 とはいえ、今の所はまだ、表面をなぞっただけ、という自覚はある。 私の知りたいところとしては、ごく簡単なもの、例えば hello world を表示する だけとかでいいので、完璧に動作するソースリストと、それの変換結果がどうなる か、というのを見たい。なぜかいまだにBASM用のソースリストにお目にかかれて いない。> いっぱい足りないものがあるのかもしれませんが、概略としてはこんな感じ> みたいです。↓これをみるに、なかなかできの良いBASICコンパイラではないか、という思いが ますます強くなります。> ふーん。コンパイラよりアセンブラのほうがもっとマシンよりなのかと思って> ましたけど、そうとも限らない、と。ふーん、です。ここだけ、ちょっと長くなるけど、解説。 私の感覚が古い、とか、かつてはそうだったけど今は違う、という部分は多々ある かと思います。でも、もしBASMが20世紀末にリリースされたのであれば、私の 感覚も大ハズレではないと思う。 まず機械語というのはビットの羅列。そして人間には、どのコードが何をするか なんてことを覚えるのはなかなか難しい。そこで記憶用の、いわゆるニーモニック というのが開発された。最初はまさに、それぞれのコードの挙動の記憶用。のはず。 なお、ニーモニックという言葉の由来とか原義とかは、たぶん英語の専門家にお尋ね いただいたほうがいいでしょう。 そして、ニーモニックを使ってコンピュータの挙動全体を書き下ろすようになった。 すると次に、それをそのまま機械語に変換できるとうれしい。 ということで、ニーモニックを機械語に変換するのがアセンブラ。 その後、アセンブラには擬似命令だのマクロ機能だのが追加されて、構造化構文 までサポートされるようになりました。 とはいえ、基本的にニーモニックと機械語は1対1。 そうではなく、変数に定数を代入する、というようなロジックでプログラムを書く のが高級言語。最初のころのFORTRANとかCOBOLとか。そして、そのプログラムを 複数の機械語に変換する、というのがコンパイラ。 また、コンパイラも、ターゲットのマシンの機械語にコンパイルする、いわゆる 普通のコンパイラのほかにも、仮想的なマシンの機械語にコンパイルするという 種類のものが昔からありました。有名なところでは、JavaはJVMという仮想マシン をターゲットにコンパイルされることが多く、WindowsやLinuxではそれぞれ自分 の環境で動くJVMを用意しています。古くは、PASCALでp-codeコンパイラという ものがありました。これは pseudo code というものを出力するコンパイラで、 別途 p-codeを解釈するインタプリタを実際の各マシンで用意するという形に なっていました。 これら伝統的なアセンブラやコンパイラのほかに、トランスレータというのかな、 別の言語処理系があります。つまり、ある言語を別の言語に変換する、というもの。 最初にBASMの話を聞いたとき、私はこれだと思ったんですよ。つまり、BASICの ソースをバリバリの機械語にいきなり変換するのならコンパイラだけど、例えば マクロを使いまくったアセンブラのソースに変換するのであれば、それはコンパイラ でもアセンブラでもないよね、ということ。 これの有名なものにratforという言語があります。rational FORTRANということで、 構造化されたPascalっぽい構文のratforで書かれたプログラムをトラディショナルな FORTRANに変換してくれるのです。ratforが最初に紹介されたときは、これはFORTRAN の前処理、すなわちプリプロセッサであるという言い方をしていましたが、今では プリプロセッサというのは単なる置き換え程度のみ行うものをさすようになっていて、 ratforのように構文解析して全く異なったものを出力するものに対しては使わない 用語となっているようです。 ということで、BASMの入力と出力がどうなっているか、ということに興味津々。 とはいえ、今日はもう寝る。
- No.10386 一括表示へ - コメント元:10377 一括表示へ - [ 返信 ] [引用あり] pre