[Python-3000] Generic function PEP won't make it in time
Talin
talin at acm.org
Thu Apr 26 18:00:45 CEST 2007
Phillip J. Eby wrote:
> In particular, when you implement generic functions using generic
> functions, it reads a lot like trying to explain the relationships between
> "type" and "object" (i.e. type being its own type and an instance of
> object, and object being a subclass of type). You can say what needs to be
> said in a fairly short space, but saying it in a way that lets people
> actually wrap their heads around it takes a bit more text. :)
I meant to comment on this earlier, and forgot.
I kind of wonder about the idea of implementing generic functions using
generic functions. It's one of those ideas that is so obviously elegant
and clever, that it's very easy for a programmer to fall in love with.
As someone who frequently finds himself in a similar situation, I often
discover later that the clever idea I loved wasn't the most practical.
I've occasionally been accused of being an "architecture astronaut",
someone whose designs have a theoretical purity that is far above the
heads of most of its users, to the point where it is hard for them to
wrap their head around the design:
http://www.joelonsoftware.com/articles/fog0000000018.html
Related to this is my tendency towards "dual-duty design", in which
every line of code is serving multiple agendas (like the way that all of
the major components on an airplane serve more than one functions - the
wings are not only the primary lift surfaces, they are also the fuel
tanks and the mounting points for landing gear, engines, running lights,
and so on.)
The advantage of this is that it makes the code very compact and dense,
with lots of ideas being embodied in a relatively few lines of code.
The problem with this is that someone who comes along and reads my code
may not be able to make any sense of it, especially if they are only
aware of the primary agenda that is informing the code.
Now, I may be talking out of my butt here - I don't know much about your
situation, or what rationales you have for designing things the way that
you have. However, I would suggest that you might want to consider what
your actual, practical needs are, and if there is a way to get them that
is more straightforward and easy to explain.
-- Talin
More information about the Python-3000
mailing list