Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!odi!dlw From: dlw@odi.com (Dan Weinreb) Newsgroups: comp.lang.lisp Subject: Re: CLOS: is it OOP? Message-ID: <1989Sep15.221310.21012@odi.com> Date: 15 Sep 89 22:13:10 GMT References: <19582@mimsy.UUCP> Reply-To: dlw@odi.com Distribution: usa Organization: Object Design, Inc. Lines: 29 In-reply-to: folta@tove.umd.edu's message of 14 Sep 89 00:21:12 GMT In article <19582@mimsy.UUCP> folta@tove.umd.edu (Wayne Folta) writes: "Because CLOS makes no effort at protection or encapsulation, some might find that it lacks the most essential thing for an object-oriented system." This overstates the case. CLOS, following Lisp philosophy, relies on programmers to follow conventions, rather than actually imposing access control; this is particularly helpful in interactive debugging. In CLOS you can still say whether you want accessor functions or not for each slot. "generic functions are a step away from the concept of active data and back toward the conventional division between passive data and active process." This is nonsense. The author of your book cannot distinguish syntax from semantics, or at least worries too much about syntax. CLOS supports "active data" every bit as much as Smalltalk-80 does. Even though the character string "send" isn't used, exactly the same thing is going on (except that CLOS is more general, having multimethods). CLOS uses the syntax of function calling in order to fit into Lisp better. (Historical note: The first implementation of Flavors, 1981-1986 or so, did use "send". After many years of heavy experience, we found that it would make a lot of things easier, clearer, and more elegant to drop the "send" and use the syntax of function calls to perform "message sending"/ "generic functions"/"virtual functions". New Flavors did this. CommonLoops did the same thing, and it was retained in CLOS.)