tough-to-explain Python

pdpi pdpinheiro at
Fri Jul 10 18:23:55 CEST 2009

On Jul 10, 2:11 pm, Steven D'Aprano <st... at REMOVE-THIS-> wrote:
> On Fri, 10 Jul 2009 12:54:21 +0200, Hendrik van Rooyen wrote:
> > "Steven D'Aprano" <steve at> wrote:
> >>On Wed, 08 Jul 2009 22:05:57 -0700, Simon Forman wrote:
> >>>> persistent idea "out there" that programming is a very accessible
> >>>> skill, like cooking or gardening, anyone can do it, and even profit
> >>>> from it, monetarily or otherwise, etc., and to some extent I am
> >>> Programming is not like any other human activity.
> >>In practice? In principle? Programming in principle is not the same as
> >>it is performed in practice.
> >>But in either case, programming requires both the logical reasoning of
> >>mathematics and the creativity of the arts. Funnily enough,
> > I do not buy this arty creativity stuff. - or are you talking about
> > making a website look pretty?
> I must admit, it never crossed my mind that anyone here would claim that
> there was no creativity involved in programming, that it was all a
> mindless, algorithmic process capable of being done by a simple
> mechanical device.
> This is certainly the accusation made against *bad* programmers -- that
> they can't actually solve new, unique problems, but just apply recipes
> they learned without any insight or intelligence. The sort of people who
> program so poorly that "a trained monkey could do what they do".

I wholeheartedly agree. Coming up with Duff's device is nothing if not
creative. My mind still reels at trying to grok it.

> Even *soup stock* fits the same profile as what Hendrik claims is almost
> unique to programming. On its own, soup stock is totally useless. But you
> make it, now, so you can you feed it into something else later on.
> Or instant coffee.

I've always found cooking an apt metaphor for programming.

You've got your well-limited for loops (cook for x minutes), your less
straightforward while/until loops (roast until golden), you have your
subprocedures (prepare sauce in advance/in parallel), you have some
conditionals (tenderize the steak if the meat isn't really that
tender), etc etc.

The complexities of assignment can be easily visualized in terms of
containers and mixing stuff together. Nothing makes a += b more
obvious than having a bowl of cream (a), an egg (b), and adding the
egg to the bowl of cream (a += b). Well, except for the part where
that in that case evaluating b is destructive ;)

> They can't reason? Then what are they doing when they manipulate symbols?

"Computers aren't intelligent. They only think they are." Or, more to
the point: the typical definition of "reasoning" tends to involve more
of what defines humans as self-aware, animate beings than what is
usually ascribed to computers.

More information about the Python-list mailing list