🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.lisp
Article #225

Re: オブジェクト指向プログ

#225
From: Ken Wakita
Date: Tue, 17 Dec 1996 00:00
35 lines
2347 bytes

東工大の脇田ともうします。

CLOS はあまりよくしらないので教えてください。

<UEDA.96Dec12212540@kinshow.shpcsl.sharp.co.jp>の記事において
ueda@kinshow.shpcsl.sharp.co.jpさんは書きました。

 > 別の派からは「CLOSなんてオブジェクト指向じゃない!」なんてよく言われる
 > ことです。確かに「多重メソッドはメッセージパッシングの自然な拡張である」
 > なんて言われるとCLOS派でも「おいおい、それはちょっと...」と思ってしま
 > います。おかげでカプセル化なんて概念はCLOSでは雲霧消散してしまっています。

プログラミング言語ごとに言葉使いが違うので私は、ちょっと混乱しているか
もしれません。多重メソッドとは総称関数 (generic function) をさすのです
か?それとも、method override か method overload を指しているのでしょ
うか?

Method dispatch の意味が Smalltalk や C++ ではレシーバで specialize さ
れているのに対して、CLOS や Dylan の総称関数ではすべての引数によって 
specialize されている点で自然な拡張だと思うのです。

カプセル化の話は総称関数の話とはまた直接の関係はない思います。少なくと
も Dylan では、オブジェクトの構造は隠蔽されています。総称関数を導入す
ると、メソッドが必ずしもクラスごとに定義されているわけではないのですが、
それ自体はカプセル化とは独立した事象だと思います。このことと、C++ の 
friend が CLOS や Dylan にないことは興味深いと思います。総称関数が特定
のクラスに属さないことによって、そもそも friend が必要となる状況がなく
なるのだと思います。このことは、総称関数が Smalltalk 流のメッセージパッ
シングの拡張になっていることの傍証になるのかしら?

もし、わたしが多重メソッドの解釈で誤解をしていたら許してください。

わきた
Technical Details
Message-ID: <5959r8$np@nsi.is.titech.ac.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <58o88i$ld8@isws01.is.noda.sut.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 1421c0,94f4ed4aadcf189f
X-Google-Attributes: gid1421c0,public
From: wakita@is.titech.ac.jp (Ken Wakita)
Subject: Re: オブジェクト指向プログ
Date: 1996/12/17
Message-ID: <5959r8$np@nsi.is.titech.ac.jp>
X-Deja-AN: 204869519
references: <58o88i$ld8@isws01.is.noda.sut.ac.jp>
content-type: text/plain; charset=ISO-2022-JP
organization: Dept. math. & comp. sci, Tokyo Inst. Tokyo
mime-version: 1.0
newsgroups: fj.lang.lisp