On Jul 10, 2:11 pm, Steven D'Aprano <st...@remove-this- cybersource.com.au> wrote: > On Fri, 10 Jul 2009 12:54:21 +0200, Hendrik van Rooyen wrote: > > "Steven D'Aprano" <st...@remove-this-cy....e.com.au> 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. http://www.lysator.liu.se/c/duffs-device.html > 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. -- http://mail.python.org/mailman/listinfo/python-list