TOP > プログラマ2.0日報 > 2007年04月30日

あすなろBlogger

facebookに投稿 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク このエントリーをはてなブックマークに追加 この記事をクリップ! livedoorclip ユーザー数 BuzzurlにブックマークBuzzurlにブックマーク この記事をtweetする

ゴールデンウィークの楽しみは...

2007.04.30

さて、ゴールデンウィークです。

休みがある分、普段できないことをしちゃいたいわけですが、「お楽しみ」として、 amazon に注文した本が届きました。

オブジェクト指向入門 第2版 原則・コンセプト」バートランド・メイヤー著

この本の第1版はすでに読んでいて、素晴らしい名著だと思っています。版型が小さいのでそうでもありませんが、電話帳並の厚さだったりします....(全904ページ)。しかもこれで邦訳は前半だけ、というものです。翻訳者の方に頑張って頂いて、後半も早くお願いしたいものですけどね。

 あ、この本「入門」とタイトルについてますが、全然入門書じゃないです。というか、大学の専門の教科書に「入門」とついているような感じかなぁ。数学書とかだと、「入門」って予備知識を必要とするわけではない、というだけの意味だったりするから、そういう感じで「入門」というだけのことです。

内容は本格的に「オブジェクト指向言語」というものを考察する、というものです。Meyer というと、「契約プログラミング」の概念で有名ですが、要するにこの本は Meyer 自身が「自分の理想」を実現するために設計した言語である Eiffel を「作る」というところから、その中での言語仕様をいろいろと検討していく、というような体裁の本だったりするわけです。

Eiffel という言語はあまり馴染みがない言語なのでしょうが、Pascal 構文的な OOP言語です(比較的影響を受けているのは Ada です)。たとえば次のような特徴を持っています。

1. 多重継承ができる。で、クラスメソッドとかないですから、たとえば数学ライブラリだって多重継承で使います(苦笑)。
2. 汎用体(Generics)を持っている(というか、Meyer によると Generics の「総称性」すなわちOOPの本質的な要素、ということです)
3. ガベージコレクタを備えている(Java っぽいです)。
4. で、「契約によるプログラミング(設計)」をサポートするために、言語仕様として表明を本質的な部分で取り込んでいる。ですから、クラス記述の時に、一緒に事前条件とか不変表明とか記述していくわけです。

まあ、この「契約プログラミング」に関する部分が、今となっては一番議論の的になるような部分でしょう。私は結構この考え方が好きだったりします。簡単に言うと「実社会で契約を結ぶときには、『○○してくれたら、××する』というかたちで、『契約』をするわけだから、プログラム・インターフェイスもこの原理で設計すべきである」という考え方です。たとえば「引数が負でなければ、引数の平方根を返すメソッド」という風に、Math.sqrt() を考えていくわけです。ですから、引数が負でないことの「責任」は、コーラー側で保証すべきであり、sqrt() の側では「もし引数が負ならば何をしてもいい(まあ、トンでもない結果は返すわけにはいきませんから、例外を投げる...くらいが適当でしょう)」ということになるわけです。

これはこれですっきりした考え方だと思います。細かい部分ではもっと面白い仕様とかありますよ。たとえば、「オブジェクトのプロパティが変数フィールドであるかメソッドであるか、は実装詳細である」というのも面白いです。ですから、変数名と同名の無引数のメソッドがあれば、外部からは変数名を隠蔽してしまうわけです。JavaBeans で setter/getter を活用したやり方に今慣れているわけですが、「あ、こういう考え方もアリね」というあたり、面白いです。

あるいは、これは「リファクタリング」でも推薦のやり方ですが、Eiffel は Pascal 風言語のため、function と procedure を区別します。これを Meyer は積極的に捉えて、「function は(目に見える)副作用がない」ということを保証すべきだ、とします。つまり、典型例では getter は function であり、setter は procedure だと捉えるのです。今の仕事だと、副作用てんこ盛りな getter があったりして、私はかなり困っている....わけで、ここらへんもう少しこの考え方が普及するとイイなぁ、などと慨嘆しちゃったりすることもあります(苦笑)。

というわけで、ボチボチ読んでいきます。また面白いところなどご報告しましょう。ちなみに、この本の礼賛だと、今まで見た中では、「オブジェクトの広場」がホントに絶賛です。

ちなみに、わたしはこの本をきちんと読んで理解している人、あるいはEiffelで網羅されているソフトウェア概念すべてについて自分なりに考え抜いたことのある人を除いて、そのひとをオブジェクト指向の専門家とは認めないことにしています。

こんな風に言われる本が書いてみたいです....(←身の程知らず?)

投稿者 : 杉浦 こずえ | 投稿日時 : 2007.04.30 22:30

カレンダー

<< 2007年04月 >>

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

最新のエントリー

最新のトラックバック

最新のコメント

Tag

バックナンバー