[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 803] Re: B-Free APの開発環境



今日は、落合です。

   ||以前、C++ で TAD クラスを作ろうとしたことがあります。
   ||けっきょく途中やりでほかったままですが。
   |僕は、同じ穴の狢。(ひょ〜)
   |まあ、僕の場合は、「手も着けていない」のですが。^^;

あら、そうだったんですか。
私の場合、作り始めたはいいけど
設計が悪くてづまづいてしまいました。

   ||TAD をオブジェクト指向のライブラリにしようとすると、
   ||文字(固定長セグメント)の扱いが非常に難しいです。
   ||可変長セグメントはそれぞれのセグメントを
   ||そのままクラスにすればよいのですが、
   ||文字は「1文字 - 1オブジェクト」が良いのか
   ||「1続きの文字列(可変長セグメントに挟まれた部分) - 1オブジェクト」
   ||が良いのか、難しいところです。
   ||
   ||「1文字 - 1オブジェクト」のほうがすっきりしていて
   ||良いのですが、どう考えても効率悪いですから、
   ||文字列のほうが良いのかな、とも思います。
   |
   |これについては、2通り僕は考えていました。
   | 1 文字列は既存の String クラスなどを使う。

文字コードが TRON コードになるので、流用するにしても
いろいろ改造が必要そうですね。

   | 2 文字列も従えるTADと言う、基底クラスを作る。
   |
   |どちらにしろ、文字、一文字をオブジェクトにする意味はあまり無いと思いま
   |す。オブジェクトにすると言うことは、それに対する操作が規定できるという
   |事ですから。一文字だとあまり可能な操作を思いつきません。それに、何か文
   |字列中で一文字を操作したいときは、すぐに、String の変換演算子が使えると
   |思います。

TAD って「1セグメント」と「1文字」が等価ですよね。
ある文字列の途中にセグメントを挿入しようとするとき、
「1続きの文字列 - 1オブジェクト」だと困ってしまいます。

今思い付いたのですが、従来「文字列」と扱われていたところを
BTRON ではに置き換えて考える、というのはどうでしょうか。
ここでいう「文章データ」とは TAD 規格書の BNF での TAD の定義
で使われている非終端記号のことです。
文字列の代わりになるのは TAD ではなく
TAD の構成要素である「文章データ」のほうが適当のように思います。
ですから、ちょっと前に話題になっていた、
「実身名に TAD を許す」というのも
「実身名に文章データを許す」としてみてはどうでしょう。

   ||あと、仮身セグメントだけではリンクが表現できません。
   ||だから、仮身クラスは「仮身セグメント+リンクレコード」
   ||にしなくてはなりません。
   |これは、僕も、すごく困った。
   |で、当時考えてたことは、
   |
   |ifstream >> vlink
   |
   |で、セグメントもレコードも、自動的に取ってくればいいじゃないかと。
   |
   |ofstream << vlink
   |
   |で、両方書き出せばいいと。と言うことで、常に同時扱い。
   |それだけで良いんじゃないかな?

仮身セグメントなしでリンクレコードがある事がありますが、
そういうときはどうしましょう。

あと、ファイルストリームと言っても、
TAD 以外のレコードをどうするのか、という問題があります。
1つのレコードを1ストリーム、複数のストリームが集まって
1つの実身ができている、というようにしたとしても、
リンクはどうするの?という事になるし、
なかなかうまい事いきませんね。

   ||せっかくだから、BTRON 専用ではなくて、どの OS でも
   ||使えるようにしたほうが良いように思いますが、
   ||どうなんでしょう。
   |
   |それは、難しいと思います。
   |なにせ、TRON Application Databus ですから。
   |難しいと言うより、意味がないと言った方が近いかも。
   |
   |# 他の OS に、TAD 表示用の環境を作ればいくらか
   |# 意味もでるだろけど。

その事を考えてのことです。
ほかの OS 上で TAD ビュアを作るときなどに使えたら
良いのではないのか、と思ったわけです。
まあ、どう考えてもリンクは表現できませんが。

===
  落合秀俊   名古屋大学工学部情報工学科
  h953046b@ice.nuie.nagoya-u.ac.jp