Hi!
On Wed, 19 Sep 2007 01:18:41 -0700, Göran Krampe goran@krampe.se wrote:
Recall that this is a HUMAN problem, not a technical one. HUMANS have one single shared namespace that we try to keep track of stuff in. If lots and lots of people start reusing the same short name for different things we WILL get confused no matter if the computer is fine with it. :)
Oh, no, humans have more namespaces than the most seasoned Java or .NET programmer could imagine, and we usually don't supply the literal context! If I say program, I'll expect you to fill in the right namespace(s).
television.program work.program government.program football.program computer.education.program computer.code.program
(Forgive my use of "." here. Pascal programmers have been using "." since the introduction of "units", which solved both namespace and package problems.)
Well, philosophically I agree - people have "lots of namespaces" but as you also imply - we usually communicate with "short names" and we tend to try to not have multiple meanings of the word "program" WITHIN the same context.
In software engineering we have one meaning of "program", and not three.
All that aside, Goran's plan seems to address the problem (and nothing else) with a minimal amount of pain, and has the virtue of being currently usable (I think).
It should be usable - IIRC there was one or two small problems left to figure out regarding fileouts or something, I don't recall. But AFAICT it is 90% done. If a few of us grabbed it and sat down we should be able to get it flying quickly. OOPSLA comes to mind, I am going there btw.
It also raises the interesting issue of what problems we should be using tools to solve versus what the language should solve, which I'm not sure gets the proper attention.
Goran, I missed what would happen with existing classes, like "Array". Would existing packages have to be given namespace designations?
Nope! In the beginning I was going with the idea of turning "top level categories" into Namespaces (Kernel, Collections, Graphics etc) but someone pointed out to me that... "why?". And that person was IMHO right - there is no real point in doing that AFAICT. Even though it could probably work quite easily - but why bother?
So no, when you install my Namespaces proposal into your image nothing much happens. Your classes are there just like before, there are no Namespace instances around until you start making classes named Blabla::Something and if you don't WANT to you can just continue like before - you can even ignore it totally and use old fashion prefixing. :)
Hopefully then people can start using the new prefixing for new code and hopefully also convert old prefixed code bases to it.
regards, Göran