Newsgroups: comp.lang.clos
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!lucid.com!jonl%kuwait
From: jonl%kuwait@lucid.com (Jon L White)
Subject: CLOS Private Methods
Message-ID: <9106271914.AA14030@kuwait>
Sender: daemon@cis.ohio-state.edu
Organization: The Ohio State University Department of Computer and Information Science
References: <1991Jun26.202149.1346@ircam.fr>
Date: Thu, 27 Jun 1991 19:14:25 GMT
Lines: 32

re: An "Object Oriented system without any information hiding" !?

That's a gross overstatement (despite Harley's acquiescence for the
sake of argument.)

It may be belaboring the point, but it needs to be said again:

   In a world with the kind of dynamism of Common Lisp, "information
   hiding" and "Encapsulation" have to mean different things.

For example, "information hiding" in the context of the "other"
object systems often means nothing more than lexical scoping.  You
are aware of the lexical constructs in Common Lisp, no?

But suppose for example that a language like C embodied the notion
of first-class symbol-tables available at runtime -- with perhaps
an access protocol such as you might use in typical C debuggers.
What would "information hiding" mean then?  Everything is inherently
accessible, albeit by a few lines of symbol-table programming rather
than a purely static token.

With the dynamism of Lisp, a notion of module-spearated names is
not a bad idea.  Common Lisp packages is one cut at this approach;
it leaves as much as possible still inherently accessible, but with
some suggested "safe" protocols.  Some other kindred approaches would 
cut out a lot of the runtime accessibilies -- in pretty much the same 
way that most Common Lisp compilers cut out the actual symbol on 
compiled, lexically-local variables.  But for a language with a full 
reflective power, you need that accessibility.


-- JonL --
