Cファミリ言語仕様の変更
Bjarne Stroustrup氏(Mr.BS)のインタービュー記事を読む第6回目の今回は、前回に引き続き次の公開記事を読みます。
2000年7月インタービュー記事
本日は次の質問への3人の回答を検討します。
・Did you ever add features that your users didn't appreciate as much as you did, and then have to deprecate or remove them later? What did you learn from the experience?
この質問は、良かれと思って追加した言語機能が不評を買い、後で削除するという辛酸をなめたことはないか、もしそのような経験があるのであれば、その経験からどのようなことを学んだのかを教えてほしい、というものです。それでは、お三方の回答を見てみましょう。
Dennis Ritchies氏の回答:
・一部のユーザからたびたびプレッシャーをかけられた。
・理解しがたい機能を追加した(たとえば、列挙型とビットフィールド)。
・2つの意味(メモリ管理とリンク管理)を持つstaticキーワードも理解しがたい。
・entryキーワードは削除されることになった。
Bjarne Stroustrup氏の回答:
・「C with Classes」設計当時、"クラスはメンバ関数が動作するための環境を用意するもの"と考えていた。
・上の考え方は今でも有効であると考えている。
・コンストラクタとデストラクタは、例外と資源管理から誕生している。
・メンバー関数の前後に記述できるcall()とreturn()関数は受け入れられなかった。
・Cの宣言構文の見直しを試みたが、失敗した。
James Gosling氏の回答:
・特にない。
・Javaにはコミュニティがあり、私一人で勝手に決めることはできない。
・コミュニティ内の複数の人が要望を出してきたら、私はそれを考慮し、決断することにしている。
Cの歴史は、ハードウェアの隠ぺい(抽象化)の歴史でもありますから、当時のCユーザはハードウェアを知り尽くした実力者揃いのはずです。社会とコンピュータが緊密に連携する時代の幕がまさに開こうとしている時でもあり、Ritchie氏は、彼らからかなりのプレッシャーをかけられたものと推察されます。コンピュータの歴史における"明治維新"といった感じでしょうか。ある意味で活気に満ちた時代であり、うらやましい限りです。1978年に公開されたこの論文などは目を通しておく価値があります。お時間のあるときぜひ、一読してください。
Stroustrup氏の"クラスはメンバ関数が動作するための環境を用意するもの"という発言の内容は、英語では"invariant"と表現されるものです。C#の設計者であるAnders Hejlsberg氏もこの"invariant"という用語を好んで使用する一人です(参照)。この概念は大変難しいものですが、クラスとメンバ関数の関係を定義する上できわめて重要な意味を持っている、といわれています。筆者は、この考え方を拡大解釈し、クラスを"人の一生"に見立てることにしています。なお、"「クラス=オブジェクト指向」ではない"、ことに注意してください。
Gosling氏は、Java Communityを意識した発言をしていますが、最終的には、"自分が決める"という「Java所有者」意識を持っている印象を強く受けます。ご承知のように、2004年4月2日、SunはMirosoftと歴史的な和解を結びましたが、その和解には「Java技術の今後」も含まれています。しかし、このあたりの事情説明をJavaコミュニティに対してどのように行ったのかはまったく不明です。一部の有力Javaサポータはこの面で不満を漏らしています。
前へ |
次へ
Copyright©豊田孝 2004-
2008
本日は2008-12-04です。