Functionalism, aesthetics Was:(RE: I come to praise .join, not
Carlos Ribeiro
carribeiro at yahoo.com
Tue Mar 20 21:53:21 EST 2001
At 00:39 21/03/01 +0100, Alex wrote:
>Whatever holds in the realm of architecture, therefore,
>has no necessary parallel in that of programming, where
>"collective judgment" is concerned.
Humm. I've read dozen of answers, and got the impression that my point was
somewhat misunderstood. That one summarizes best what the mistake is about.
And please Alex, have some mercy when replying to me :-)
The parallel itself is valid, and we have a lot of theory on Design
Patterns that say so. It's just that we are pointing our analysis to the
wrong topic. Design patterns do not focus on specific solutions, but on the
*substance* that is behind the solution. Analysing lots of solutions we can
spot these patterns, and they say a lot about this "collective judgement"
that is the net result of individual decisions.
We are not expecting collective judgment to make the right decisions. We
have plenty of proof that this can lead to bad decisions many times. As a
sidenote, this is one of the main failures of the "design-by-comitte"
method. New things need to be invented by someone, and many times they go
against what is considered to be the stablished way of doing things.
What we do expect is to collectively analyse the proposal using our
knowledge of the past. Is this a sureproof method? No. Some of the
innovative proposals will look nice at first but end up showing to be bad
decisions. This is part of the risk of being innovative. The main point is
that our collective judgement may spot failures. And sometimes, we do spot
these failures by intuition. Is the intuition a valid tool? I believe so -
sometimes we just feel that something is not right, and it takes an awful
lot of time to find why. If we are analysing a problem where we do HAVE
previous experience, we'd better checking what our intuition tells us.
Design patterns have other nice property. Good solutions just look right,
because they fit nicely in some well defined pattern. Sometimes is pretty
hard to do it, we try a lot of things, but end up finding by chance
something that fits much better than any of the previous solutions.
Problem is, we cant just sit down and wait for ideas to pour over our head.
We need to do something. And then we have proposals - lots of them - to be
carefully considered. Some of them will fit the problem better than the
others. It is actually desirable to try to develop ideas using some
well-defined method, and the method itself can be described as a proven
pattern. Programming techniques - structured, OOP, and so on - are full of
design patterns that we keep applying to solve our programming needs. But
the solution *must* fit nicely inside the problem, and our previous
collective experience tells us a lot about that, sometimes just as a "gut
feeling".
Many of the extensions that we are analysing right now follow well know
patterns, many of them borrowed from other languages. Some of them are best
described as "anti-patterns" - things that were done before, with dubious
results.
For instance, why many of us are using Python right now? Because of the
nice and consistent environment it does offer. I believe that the
"featuritis" anti-pattern is going against it all. Well thought out
features have their place (string methods, list comprehensions...) but I'm
sure that some of the current candidates aren't really needed.
Carlos Ribeiro
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
More information about the Python-list
mailing list