langsmith:96
From: W <ttn3w7u2fs mx6.ttcn.ne.jp>
Date: Sat, 21 Aug 2004 23:23:59 +0900
Subject: [langsmith:96] パターン支援言語? ご意見拝聴
W です。
こんな言語はここで議論する価値はあるでしょうか?
漠然と浮かんだのですが、パターンをサポートする言語、というものです。パ
ターンとは、GoF デザインパターンなども含まれるかと思いますが、もっと広く
「クラス間の関係」ぐらいの意味です。
事例を出してみます。出版社、著者、本、の関係として、
1) 出版社は複数の本をだしている
2) 一人の著者は複数の本を出している
3) 1冊の本は一人以上の著者で書かれる
4) (たまに)出版社は著者を専属契約している場合がある(例:週刊ジャンプ)
があるとします。これをもう少し形式的に表現すると
1') Publisher : Book = 1:n
2') Auther : Book = 1:n
3') Book : Auther = 1:n
4') Publisher : Auther = 1:n
となります。で、1:n 関係パターンを Aggregate と呼ぶこととし、上の
1')..4') を実現するために、単に
class Publisher { string company_name; };
class Auther { string name;};
class Book { string title; };
Aggregate Publisher, Book;
Aggregate Auther, Book;
Aggregate Book, Auther;
Aggregate Publisher, Auther;
で済ますことができる言語、というものです。
C++ のSTL や、これまでの他の言語のコンテナクラスでも当然実現できます。た
だ、クラス間に相互の依存関係が出来てしまい、クラス数が増えるにしたがって
段々ややこしくなってきます。一方、上のアプローチでは、クラス間の相互依存
は表面上ありません(裏ではあるはずですが、まあこれを言語でサポートする、
ということです)。
もともとのアイデアは、邦訳版は既に絶版となってしまいましたが、Jiri
Soukup 著の「C++操縦法」に出てくるパターンライブラリです。ですが、このラ
イブラリは独自の前処理系を1つ通す必要があり、今一つスマートではありませ
ん。前処理を必要とする当たり、既に新言語が生まれる前段階のような気がして
います。
「既にある」、「多重継承(**) ですぐ実現できる」、「価値無さそう」、な
ど、現状の他言語の情報などお聞かせ頂ければ、参考になります。
(**) あるいは類似の機能でも。Mix-in ってそれでしょうか?(よく知らないも
ので)
// W
--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
-> 96 2004-08-21 23:23 [ttn3w7u2fs mx6.ttcn.] パターン支援言語? ご意見拝聴 97 2004-08-22 13:13 ┗[takuo aya.or.jp ] 98 2004-08-22 22:34 ┗[ttn3w7u2fs mx6.ttcn.] 99 2004-08-23 10:12 ┗[takuo aya.or.jp ] 100 2004-08-23 22:47 ┗[ttn3w7u2fs mx6.ttcn.] 101 2004-08-23 23:29 ┣[eclipse cspc.jp ] 102 2004-08-24 22:38 ┃┗[ttn3w7u2fs mx6.ttcn.] 103 2004-08-25 00:11 ┃ ┣[eclipse cspc.jp ] 107 2004-08-25 11:27 ┃ ┗[shiro lava.net ] 108 2004-08-25 13:14 ┃ ┗[shiro lava.net ] 105 2004-08-25 00:30 ┗[takuo aya.or.jp ] 110 2004-08-30 22:29 ┗[ttn3w7u2fs mx6.ttcn.]