[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 760] Re: B-Free AP の開発環境
ども。Aki です。
In "[b-free: 748] Re: B-Free APの開発環境" with Hidetosi Ochiai ,
(05:23:29 PM +0900 in November 07,1997)
- h953046b wrote.
|こんにちは、落合です。
|
| |アプリケーションプログラマ向け:
| | o プログラミング環境の整備
| | OOP 指向のライブラリの提供など
|
|以前、C++ で TAD クラスを作ろうとしたことがあります。
|けっきょく途中やりでほかったままですが。
僕は、同じ穴の狢。(ひょ〜)
まあ、僕の場合は、「手も着けていない」のですが。^^;
|TAD をオブジェクト指向のライブラリにしようとすると、
|文字(固定長セグメント)の扱いが非常に難しいです。
|可変長セグメントはそれぞれのセグメントを
|そのままクラスにすればよいのですが、
|文字は「1文字 - 1オブジェクト」が良いのか
|「1続きの文字列(可変長セグメントに挟まれた部分) - 1オブジェクト」
|が良いのか、難しいところです。
|
|「1文字 - 1オブジェクト」のほうがすっきりしていて
|良いのですが、どう考えても効率悪いですから、
|文字列のほうが良いのかな、とも思います。
これについては、2通り僕は考えていました。
1 文字列は既存の String クラスなどを使う。
2 文字列も従えるTADと言う、基底クラスを作る。
どちらにしろ、文字、一文字をオブジェクトにする意味はあまり無いと思いま
す。オブジェクトにすると言うことは、それに対する操作が規定できるという
事ですから。一文字だとあまり可能な操作を思いつきません。それに、何か文
字列中で一文字を操作したいときは、すぐに、String の変換演算子が使えると
思います。
もう一つは、TAD をクラス化した場合の利点ですが、これは「ストリーム中で
使える」というのにつきると思います。たとえば、
aWindow >> anEvent // Get an event from a window
aFile >> String // Read a String from a file
aFile << Fig // Write a Figure to a file(TAD)
MessagePanel << String << Beep // Control the MessagePanel
Keyboard >> aProcess // Read key stroke and send it to a process
とか、こう言った風に TAD を自由に混ぜられたら、それはかなりプログラムが
楽です。
まあ、上の例は完全に適当につくったんですが。
|あと、仮身セグメントだけではリンクが表現できません。
|だから、仮身クラスは「仮身セグメント+リンクレコード」
|にしなくてはなりません。
これは、僕も、すごく困った。
で、当時考えてたことは、
ifstream >> vlink
で、セグメントもレコードも、自動的に取ってくればいいじゃないかと。
ofstream << vlink
で、両方書き出せばいいと。と言うことで、常に同時扱い。
それだけで良いんじゃないかな?
|これは、BTRON1 のトレーマネジャを見ても
|そうなっているのが分かると思います。
|また、TAD クラスにしても「TAD レコード + リンクレコード」
|を1まとまりに扱うべきです。
そうですね。
Tray >> aLink << anotherLink
で、トレーの先頭の情報を入れ替えるとか。:)
|せっかくだから、BTRON 専用ではなくて、どの OS でも
|使えるようにしたほうが良いように思いますが、
|どうなんでしょう。
それは、難しいと思います。
なにせ、TRON Application Databus ですから。
難しいと言うより、意味がないと言った方が近いかも。
# 他の OS に、TAD 表示用の環境を作ればいくらか
# 意味もでるだろけど。