I think this is a bad design of the language.
Global variables are bad things.
C# doesn't have them.
In this sense I like C# which prohibits any fields or methods in namespaces.

And few words considering public imports in D.
Excerpt from the C# 4.0 language specification
(http://www.microsoft.com/downloads/details.aspx?FamilyID=dfbf523c-f98c-4804-afbd-459e846b268e&displaylang=en#filelist) says:

A using-namespace-directive imports the types contained in the given namespace, 
but specifically does not import nested namespaces. In the example
namespace N1.N2
{
        class A {}
}
namespace N3
{
        using N1;
        class B: N2.A {}                // Error, N2 unknown
}
the using-namespace-directive imports the types contained in N1, but not the 
namespaces nested in N1. Thus, the reference to N2.A in the declaration of B 
results in a compile-time error because no members named N2 are in scope.

In D I can achieve similar(?) behavior by using 'import'('private import' by default). But I also can evade by using explicit 'public import'. This leads to bugs.
Globals lead to bugs.


--
Alex Makhotin,
the founder of BITPROX,
http://bitprox.com

Reply via email to