"Namespaces" really are EUO's way of implementating a sort of "stack". In most programming languages (I'll use C as an example), you can call a function to do something to data you pass it, or you can have it return a value to you, or both.
At the Operating System level, when you call a function, you are basically putting any data you're giving it onto the "stack" and telling the function where you put it. When control is handed over to the function, the very first thing is does is make a copy of the variables it was passed so that it can play around with them without corrupting the original values. Essentially it's creating it's own "namespace" where it can play around with "x, y, z, etc" as much as it wants without changing their original values.
After the function completes, it will then "pop" the new values back onto the stack and officially change those values UNLESS some sort of error occurs! That's the beauty of it! Since it's not changing the actual values, if an error occurs, the function can hand control of the program back to whatever called it and say "Oh yea, btw, something was all screwed up so I couldn't do what you wanted" and hands back the original values.
Now this is a very watered-down version of what happens, because it all depends on the error controls of the function. Some functions may return the original values as well as the messed up values so that you can analyze what went wrong. There are many other possibilities, but you get the general idea.
So here's a quick summary of namespaces:
Person 1:
"Hey, I need you to take a look at something and figure something out"
Person 2:
*looks at what person 1 is showing him and jots it down on his own sheet of paper*
Person 1:
*waits patiently while person 2 is working*
Person 2:
"Hey, I did what you wanted, here it is!"
*writes down the results on person 1's original paper*
Person 1:
"Thanks!"
*take his results and goes to do whatever with them*
Now, EUO is a very BAD implementation of this! gosub's are supposedly "functions" but arguments are not passed the same way as they would be in any other scripting language. Type's are pretty much non-existent in EUO. There is no difference between numbers, strings, arrays, or anything else. And let's not even get started with pointers. I guess the moral of this story is, don't ever model anything after EUO!!