ビジネス WinDbg入門 アクティブなスレッドと非アクティブなスレッド


C言語ファミリ設計の壁

 Bjarne Stroustrup氏(Mr.BS)のインタービュー記事を読む第5回目の今回は、前回に引き続き次の公開記事を読みます。

2000年7月インタービュー記事

 本日は次の質問への3人の回答を検討します。

・As you designed [C/C++/Java], what were the hardest features to get right, or the hardest features to create in a way that your initial users would accept?

 この質問は、言語設計上の難点に関するものです。特に、ユーザであるプログラマをどの程度意識して設計したのかを尋ねています。どのような優れた機能を用意しても、ユーザに受け入れられなけば、その機能の存在価値はありません。それでは、回答を見てみましょう。

Dennis Ritchie氏の回答:
・サポートする機能の選択に苦労した。
・C言語ファミリ以外の言語から見ると、型と変数の宣言仕様(Fortranの影響)は歓迎されないかもしれない。
・配列とポインタの宣言は実質的に区別が付かず、分かりにくい。
・配列とポインタについては現在でもわかりにくいため、私の設計ミスといってよいかもしれない。

Bjarne Stroustrup氏の回答:
・Cとの互換性の確保に苦労した。
・型の静的チェックを特に重視した。
・C++の一部は標準C仕様に好影響を与えた(関数宣言、const、//など)。
・テンプレート(=ジェネリックプログラミング)の採用には時間がかかったが、標準C++の一部になった。
・ジェネリックプログラミングは今後一般化することになるだろう(豊田孝とStroustrup氏の対話)。

James Gosling氏の回答:
・多数の困難があった。
・Javaには"インターフェイス"という概念があるが、多少の混乱を招いた。
・インターフェイスにはマイナス面とプラス面があり、そのバランスを取るのが難しい。
・インターフェイスという概念は、Objective Cから直接拝借したものである。

 Ritchie氏の発言は大変面白いものです。Cといえばポインタと現在でも騒がれていますが、設計者本人も"変なもの"と考えているわけです(筆者は、Cといえば、それはアセンブラ、と考えることにしています。Cを使用する場合、デバッガでアセンブラコードを追う習慣が身に付いています)。

 Javaにはインターフェイスという概念があり、その概念を理解し、自在に活用することは難しい、とGosling氏は述べています。この点は、C++も同じで、Stroustrup氏は多重継承が理解されていない、と別の論文で嘆いています。この点での議論はさらに深まっていきます。

前へ | 次へ



 WinDbgスクリプティング講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-12-04です。