[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 表示用の環境を作ればいくらか
# 意味もでるだろけど。