[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Goals and Major Design Principles (violent reply)
You standardize a language in order to write (MANY) portable programs - you do
NOT standardize everything written in it. I sincerely doubt that any single
object system can reflect even the few views that have been presented so far.
I am a user, and I would like to be able to use LOOPs, Flavors, and anything
else that comes along in the comfortableness and cleanliness of my own Common
Lisp. I am not qualified to say "This is good, this is bad."
"Advantage comes from what is; usefulness comes from what is not." [The Tao]
As for small machines, let's not design for obsolescence, huh? Very fast,
cheap and REAL machines are beginning to become available. Let's plan for it,
instead of against it. Real things should be done on real machines.
Re: defstruct. Defstruct is single-inheritance; Flavors is multiple. Very
different. There are different tools for different uses. You don't open a
paint can with a sharp knife. It's always possible that someone will invent a
sharp-knife/paint-can-opener in one, but you don't waste your time trying to
figure one out. There are entire catalogs of bogus tools that nobody uses [I
guess if you buy one, you're apt to buy many].
Trying to redefine everything to use message passing is a good way to create a
blob of string that nobody can separate, as well as to slow otherwise fast
things down. We have an editor that is more powerful and faster than the Lisp
Machine's, mostly BECAUSE it was written without Flavors (it's also fairly
We DO need standardization to do things like have the lisp system be able to
talk to different object systems. Once we have this, then we can worry about
defining streams and such. I'm not sure how possible this is, or even if it's
especially desirable. [Yeah, it's fun, but...] It could be that all we need
to do is standardize on there being a message name and arguments, and then have
some system SEND operation that various object systems can interface to. [Like
have it dispatch on the name of the instance's object system to get the sending
function] This has possiblities.