Attack a sacred Python Cow
Lie.1296 at gmail.com
Fri Jul 25 13:49:44 CEST 2008
On Jul 24, 9:26 pm, Jordan <jordanrastr... at gmail.com> wrote:
> In reality? I'll just keep writing Python (hopefully enough so that
> explicit self become burned into muscle memory), and use other
> languages when necessary (no more C than I have to, looking forward to
> dabbling in Erlang soon, and one day overcoming the parentheses phobia
> enough to really tackle Lisp properly). When I'm old enough and wise
> enough, and have the time, energy and inclination, maybe I'll sit down
> and put a proper effort into designing and implementing a new language
> that bests suits my own particular style and needs.
> Just maybe it'll
> be good enough that smart people will rally to defend its design
> principles from people attacking them on the internet :-)
Forgive me in advance, but that is just a day dream, however good a
language design is, there WILL be other people who disagree with the
corner cases. Python is one example, even with Guido that is great at
designing language, there are many edges in python that many people
disagree and attack from time to time, but not every one of those
edges got fixed, why? Because it is impossible to appeal everyone, if
the language is changed according to your (or other's) idea, there
will be some other people who don't like it (with your examples, it
might be the people who are used to functional programming and people
who want to implement a very complex behavior in __eq__ and __ne__).
What seemed to be the obviously correct behavior for you would be
unexpected for some other people (this is also in python's Zen
although in a slightly twisted kind of way: "There should be one--
and preferably only one --obvious way to do it; Although that way may
not be obvious at first unless you're Dutch.").
 Basically, the Zen is saying that whether and idea is the
obviously correct way to do something is measured by Guido's measuring
tape. Basically it's also saying that python is designed according to
what HE thinks is obviously correct.
The Zen you're attacking: "Explicit is better than implicit," is a
generally good advice, although as you mentioned, it doesn't fit every
single cases in the world, which leads us to the other Zen:
"Special cases aren't special enough to break the rules; Although
practicality beats purity."
 In our case, "Explicit is better than implicit" is the "rules",
the corner cases where implicit is a generally better choice is the
"special cases". The first verse ("Special cases ... break rules")
implies that everything should be explicit, no exceptions, while the
second verse ("practicality beats purity") means that if something
breaking the rule makes it more practical, then you don't have to
follow the rules. These two statements contradicts each other,
implying an implicit Zen: "Foolish consistency is the hobgoblin's
little minds", it is OK to break the rules sometimes.
 Despite saying this, I also have to emphasize that what is
practical or not is measured by Guido's tape.
With this explained, I hope you understand the point I'm making:
"There is no The Perfect Language, that is liked by everyone in the
world." The moral is, if you like a language, try to resist its warts
and know that each wart have its own story. You don't have to like the
warts, but you just need to stand to it.
More information about the Python-list