人の一生とクラス
「C++プログラミング言語の歴史と特徴」連載第19回目の今回も前回に引き続き次の公開論文を精読していきます。
第1回連載資料論文
今回は、「4.2.1 Destructors」節の意味を考えます。Destructorとはそのものずばり"破壊者"ということですが、プログラミング分野では、"消滅子"と呼ばれています。破壊するには、破壊される対象が必要です。その対象を用意するのはConstructorであり、"構築子"と呼ばれています。
私たちはこれまで、Concrete Type(身近な具体的なデータの表現)とAbstract Type(汎用性があり、どこでも通用する意味を持つデータの表現)を学んできました。これらはクラスの性質を表すものですが、本日取り上げるDestructorとConstructorは、クラスの構成要素を表しています。
クラスは、Constructor(構築子)とDestructor(消滅子)を持っていることは分かりました。しかしほとんどの方は、クラスが構築子と消滅子を持つことの意味をはっきりお分かりにならないと思います。この意味が分からない限り、クラスの意味や有用性も当然はっきりしません。結論を申し上げれば、このあたりの説明を行っている文献を筆者自身読んだことがありません(資源管理の一手法という見解は十分承知していますが、本連載ではその見解には立ち入りません)。筆者は次のような"言い伝え"(つまり、私たち庶民の知恵)が結構役に立つのではと思っています。
"すべての物事には、始まりがあれば、終わりもある"
"宇宙空間内では、物質の生成と消滅が繰り返されている"
筆者は、あるオブジェクト指向に関する文献を読んでいたとき、最終的に、古代ギリシャ文明まで連れて行かれてしまったことがあります。しかし、いくら読んでも、"クラスが構築子と消滅子を持つことの意味"を理解することはできませんでした。ましてや、ソフトウェア工学の歴史の中で、いったい誰がこの組み合わせを考え出し、理論化したのか分かりませんでした。筆者は最近、先に紹介した2つの文章に加えて、次の、きわめてありふれた会話文も重視しています。
"人には、誕生日と終焉日がある"
Stroustrup氏は、これまでの連載で何度も触れている1994年発行の「The Design and Evolution of C++」の中で、"ヘーゲルやマルクスの抽象的なヒューマニズムより、キルケゴールのきわめて個人的な心理学的洞察の方が感動的である"と述べています。キルケゴールというのは、Stroustrup氏と同じデンマーク生まれの哲学者です。この哲学者には、"死に至る病"という著作物があります。筆者はその著を読んだことはないのですが、もしかすると、"クラスが構築子と消滅子を持つことの意味"はノルウェーやデンマークなどの、いわゆる北欧文化圏を背景にして生まれてきたものではないかと想像しています。皆さんご存知のLinuxの創始者であるLinusさんは北欧のフィンランドで生まれています。考えてみると、私たちは北欧文化のことをほとんど学んでいません。基地局のエリクソン、携帯のノキアやオープンソースのMySQLなども北欧文化圏の中から生まれています。
筆者は、"クラスが構築子と消滅子を持つことの意味"を考えるとき、人の一生、というものを想起することにしています。この意識操作は筆者固有のものですから、皆さんにその操作の採用を薦めているわけではありません。しかし、"クラスは人の一生を描くもの"と考えてしまうと、(筆者の場合)ことのほかオブジェクト指向が分かるようになりました。なんとも不思議なことです。"クラスは人の一生を描くもの"に"利潤追求"という概念を組み合わせると、筆者の場合、ほとんどのオブジェクト指向論を理解できるようになりました。この「理解」の中には、"そのオブジェクト指向論はおかしい!"という結論付けも含まれます。
オブジェクト指向という用語を目にすると、気が重くなってしまう人が大勢を占めます。しかし、食わず嫌いはよくありません。もし皆さんが食わず嫌い状態に入っているのでしたら、筆者が取っている2つの視点、"クラスは人の一生を描くもの"と"利潤追求"を一度は採用されてみてはいかがでしょうか。利潤を追求するためには、作業効率や開発者間の円滑なコミュニケーションが必要になります。これらの必要性は、UMLやExcelなどの効率化補助道具を必然的に生み出します。
前へ |
次へ
Copyright©豊田孝 2004-
2009
本日は2009-01-07です。