[comp.software-eng] Name space problem

campbell@maynard.BSW.COM (Larry Campbell) (02/23/88)

From article <3490002@otter.hple.hp.com>, by kers@otter.hple.hp.com (Christopher Dollin):
> I'd go for "one-datatype-per-file". Spliting the files up using directories is
> just a hack for controlling a growing namespace; NO existing language that I
> know of has a decent solution for this (and if *you* know of one that does,
> **please** let me know!).

How about packages, as found (at least) in Common LISP and Ada?
-- 
Larry Campbell                                The Boston Software Works, Inc.
Internet: campbell@maynard.bsw.com          120 Fulton Street, Boston MA 02109
uucp: {husc6,mirror,think}!maynard!campbell         +1 617 367 6846

kers@otter.hple.hp.com (Christopher Dollin) (02/24/88)

I said:

> I'd go for "one-datatype-per-file". Spliting the files up using directories 
> is just a hack for controlling a growing namespace; NO existing language that
> I know of has a decent solution for this (and if *you* know of one that does,
> **please** let me know!).

"campbell@maynard.BSW.COM (Larry Campbell)" said:

> How about packages, as found (at least) in Common LISP and Ada?

Well, those were the ones I was thinking of when I said that no existing
language solved the problem! [BTW - I don't think you can compare the Ada and
Lisp notions of packages, except as you can compare thumbscrews and drowning.]

I don't think Ada even attempts to solve the problem. Correct me if I'm wrong,
but isn't there a single flat namespace for modules? So how do I plug together
different subsystems built independantly?

The Common Lisp system has all sorts of problems. It packages symbols (words;
names), not variables. The package namespace is flat. It has no notion of
access control (you can grab the innards of any package without a declared
intention to do do). It does not support transitive export of things. (If it
did, you can bet that it wouldn't support *non*-transitive export). You can't
rename across a import/export boundary to avoid name clashes. Etc.

It's just like filing systems. They give you this way of separating files one
from another, and Lo! make it hard to join them together again. That's why
Unix has hard links. And symbolic links. And a tree structured hierarchy,
or a DAG if you're super-user. And PATH. And CDPATH. And (csh) ~. And .........

PS No, Pop doesn't get it right either.





Regards,
Kers                                    | "Why Lisp if you can talk Poperly?"