== Quote from bearophile (bearophileh...@lycos.com)'s article
> Andrei Alexandrescu:
> > I explained how D works (which I
> > think is a very solid design, probably the best I've seen),
> The D module system has some holes, most of them are already reported in
Bugzilla (some of them are more than just implementation bugs).
> From your words I presume you have never seen the Python module system :-) It
lacks the holes present in the D one and its management of packages is almost 
good.
> Bye,
> bearophile

Python is my language of second choice for things where D just isn't the right
tool for the job.  This basically means anything where efficiency and static
checkability don't count much but either dynamicness or
mainstreamness/maturity/support counts a lot.  There's a lot that's good about 
the
language.  That said, I think D's module system is much better.  Python's module
system suffers from one huge wart that makes me hate it no matter how good it is
otherwise:  There's no way to import a module such that you don't have to use
qualified names, **but** when there's a collision the behavior is reasonable and
avoids hijacking.

I absolutely despise using qualified names because they are both syntactic noise
and extra typing.  D lets me just import tons of stuff and skip the qualified
names in most cases.  Most of the time it does what I mean, and it complains if
and only if there's ambiguity about what I mean.  With Python, I have two 
options:

1.  import module, which sucks because contrary to most of Python's terseness 
and
expressiveness this forces me to constantly qualify my names, leading to extra
typing and syntactic noise.

2.  from module import *, which sucks because contrary to the Python philosophy 
it
allows hijacking, or in other words guesses in the face of ambiguity.

Reply via email to