== 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.