[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