[前][次][番号順一覧][スレッド一覧][生データ]

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.]