Path: utzoo!utgpu!watserv1!watmath!att!rutgers!usc!sdd.hp.com!uakari.primate.wisc.edu!aplcen!aplcomm!uunet!mcsun!ukc!edcastle!aiai!jeff From: jeff@aiai.ed.ac.uk (Jeff Dalton) Newsgroups: comp.lang.lisp Subject: Re: Common Lisp Package System Considered Harmful Keywords: Packages, CLOS, Object-Oriented Programming, Common Lisp Message-ID: <3619@skye.ed.ac.uk> Date: 23 Oct 90 17:13:07 GMT References: <271E0D40.451E@wilbur.coyote.trw.com> <3596@skye.ed.ac.uk> <272381E7.44AA@wilbur.coyote.trw.com> Reply-To: jeff@aiai.UUCP (Jeff Dalton) Organization: AIAI, University of Edinburgh, Scotland Lines: 77 In article <272381E7.44AA@wilbur.coyote.trw.com> scott@wiley.UUCP (Scott Simpson) writes: >In article <3596@skye.ed.ac.uk> jeff@aiai.UUCP (Jeff Dalton) writes: >>So don't use them. I don't quite understand what you're trying to >>accomplish. Are you hoping Common Lisp will change, that the Common >>Lisp designers will be embarrassed at their incompetence, that Common >>Lisp will tossed in the trash, or what? > >I am trying to get information hiding semantics like Eiffel and Ada in >Lisp without too much effort. I have been told by many people I >can't. I believe them. I think you are being a tad touchy here. I >guess every language news group has its language zealots... I just think that, after a while, a discussion ought to have some kind of goal. At first I thought you were trying to find the best way to use packages and classes together. Packages are far from perfect, but it makes sense to try to make the best of them. Later, it seemed that what you wanted was a way to get the same facilities as Ada or Eiffel. That too seems reasonable, as far as it goes. It turned out that there wasn't a good way to get such facilities (at least no one has suggested one), but it was worth trying. But then it looked like you'd decided to attack the way Common Lisp did things, pointing out that it was very unsatisfactory from the Ada/Eiffel point of view. Well, fair enough; but at that point it became less clear what practical result you aimed to accomplish. I happen to think that different languages are good for different things and that there isn't much point to "A is better than B" language wars. I probably should have written a milder article, but that's not the way it came out. There's just no way Common Lisp can satisfy everyone in any case. >>>Exactly. Strength of will and extraordinary discipline. You hit the >>>nail on the head. This is *exactly* what I am trying to avoid. >>>Besides, if we didn't cherish information hiding, language protection >>>and ease of uses why don't we all go back to programming in assembly >>>language? They all are Turing machine equivalent anyway. Right? >> >>Turing-equivalence is almost useless as a way to compare programming >>languages. > >This is exactly what I said! I asked a rhetorical question. Reread the >paragraph starting with "Besides". As far as I can tell, what you had in mind was either: 1. If we don't cherish A, B, and C, we may as well use assembler. 2. People who don't cherish A, B, and C don't understand what higher-level languages are for. > You also edited my paragraph and I >fear it could be taken out of context. The last sentence of the above >paragraph stated "We need language features to help in providing >protection and ease of use." I edited the quotes to keep down message size. I didn't ignore the rest and thought what I kept was representative. However, if you think I cut out too much, I accept that and apologize. Common Lisp has at least two ways to make information relatively inaccessible. One is packages. Packages work fairly well for some things, but they don't provide the strong inacessibility that some people want. The other is lexical scoping. Lexical scoping does provide fairly strong inaccessibility, because there are no facilities in the language for looking inside closures. So GENERIC-LABELS would let you hide generic functions, in a sense. >P.S. I *really* promise not to post after this! I hope you do post. Most of what you said about packages was well worth reading. -- Jeff