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

[b-free: 1439] Re: 例外処理と RTTIの OSでのサポート (Re: オブジェクト指向のOSへの適用)




隆一です。


From: Hideaki Suzuki <h1suzuki@bridgew.edu>
Subject: [b-free: 1430] Re: 例外処理と RTTIの OSでのサポート (Re:         オブジェクト指向のOSへの適用)
Date: Wed, 22 Apr 1998 03:17:21 -0400

> References: <3528BFA2.2DA12FDA@bridgew.edu> <19980407163521N.night@soft.hitachi.co.jp>
> Content-Type: text/plain; charset=iso-2022-jp
> Content-Transfer-Encoding: 7bit
> 
> Ryuichi Naitoh wrote:
> > 
> > 隆一です。
> > 
> > 結局は便利さと一般性のトレードオフだと思うんですが。。。
> > 特定の言語にしかない機能を OS がサポートするのも
> > 無駄ではないでしょうか?
> 
> うーむ。
> 特定の言語にしかない機能ですか。
> 言語によると思いますが。
> 
> それに、system で使う機能を流用できれば、それに越したことはないと思いま
> す。

それは、言語からの見方でしかありません。

システム(OS) が、特定言語のために機能をサポートするということは、その
ために OS が大きく、重くなるということですから。むしろ、OS の機能は小
さくして、言語レベルでサポートする方がいい場合も多いでしょう。

# だから、トレードオフ。



> > 例外処理と結びつけるならば、C++ とでしょう。鈴木さんのOOについての議
> > 論は、ちょっと C++ という特定の言語に偏りすぎているような気がします
> > (RTTI についても同様)。
> 
> でも、現在の商業用の OOP が C++ 中心な訳ですから、良いんじゃないですか?
> 前に書きましたが、OOPといっても、動的型検査をするもの、静的型検査をす
> るもの、多重継承を許すもの、許さないものと、大分色合いが違います。だか
> ら、C++ と Smalltalk を同列に議論して、OOP の議論を一般化する必要もない
> 気がします。

C++ というのはオブジェクト指向のサンプルとして使うには、特殊すぎません?
オブジェクト指向の議論に、C++ の(オブジェクト指向でない部分の)機能をもっ
てくるのは、おかしいですね。


> > C++ は、プログラムの裏側でコンパイラがごそごそやっている部分がありま
> > すから(constructor/destructor が暗黙で呼ばれたりする)、setjmp/longjmp
> > の処理と合わない部分があるということでしょう。
> 
> ごそごそやっているのは、むしろ、例外処理の方ですね。
> 生成子・破壊子は、呼び出される順序も何も明確に決まっていますから。

生成子・破壊子は、呼び出される順序も何も明確に決まっている。。。
理論的には明確でも、実際に使う時には明確ではないと思いますが。
特に、ソースがないクラスライブラリではどういう順番かを見きわめるのは大
変ではないでしょうか。

# この辺は、実際に C++ でクラスライブラリを作っている/使っている人に聞
# いてみたいところです。


で、内部でごそごそやっているというのは、コンストラクタだと大域変数を宣
言した場合がそうですね。大域変数で、あるクラスの型の変数を宣言した場合、
そのクラスのコンストラクタを呼び出すのは、main より先になります。これ
は、コンパイラ(とリンカ)がごそごそ(こそこそ?)やらないと実現できないで
しょう。

さらに、複数の大域変数が宣言されていると、どの変数のコンストラクタが一
番最初に呼び出されるのかソース上からは明確ではないですよね(特に、複数
のソース上に大域変数が宣言されているケース)。


> > しかし、RTTI の機能にしても例外処理と同じく、C++ の特有の機能であって、
> > 一般的なオブジェクト指向の機能とは言えないでしょう(それ以前に、OS に簡
> > 単に組み込める方法があるんだろうか?)
> 
> これは、OSをOOで作るという話でないと、組み込みにくいでしょうね。
> 要は、「動的型検査」の機能ですから、OSが型を扱うかどうかという話になり
> ます。

鈴木さんのこの意見は、Lisp マシンのようなものでないと当てはまらないで
しょう。OS をオブジェクト指向ベースで作っても、アプリケーションレベル
でのオブジェクト指向をサポートできるとは限りません。

OS が型情報をサポートするようになっても、コンパイルベースでサポートし
た方が実行効率からいうと有利でしょう。OS の機能の呼び出しには、時間が
かかります。

# でも、RTTI って、C++ がオブジェクト指向として不完全だからこそ、
# 出てきたものだと思いますが。



p----------------------------------------------------------------------q
| FROM R.Night                                                         |
| E-mail:                                                              |
|         rnaitoh@st.rim.or.jp                                         |
| Key fingerprint = 89 EB 77 95 40 C0 3C CC  37 A1 A7 FA 1C 66 FF D0   |
b----------------------------------------------------------------------d