tough-to-explain Python

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Jul 10 15:11:09 CEST 2009


On Fri, 10 Jul 2009 12:54:21 +0200, Hendrik van Rooyen wrote:

> "Steven D'Aprano" <steve at 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".

Do you really think that applies to good programmers too? If so, then a 
good code generator should be able to replace any programmer. Is that 
what you believe?


 
>>mathematicians will tell you that mathematics requires the same, and so
>>will the best artists. I think mathematicians, engineers, artists, even
>>great chefs, will pour scorn on your claim that programming is not like
>>any other human activity.
> 
> So a chef is now an authority on programming?

Did I say that?

Chefs are authorities on OTHER HUMAN ACTIVITIES.



> Programming is actually kind of different - almost everything else is
> just done, at the time that you do it.
> 
> Programming is creating stuff that is completely useless until it is fed
> into something that uses it, to do something else, in conjuction with
> the thing it is fed into, at a later time.

Somebody should teach Hendrik that human beings have been creating TOOLS 
for hundreds of thousands of years. People have been creating tools to 
build tools for thousands of years. Software is just more of the same.

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.

No, Henrik, if that's the best you can do, it's not very good. It is 
rather sad, but also hilarious, that the most different thing you have 
noticed about software is that it's just like instant coffee.


> This is a highly significant difference, IMHO.


>>[...]
>>> He talks about how "when all is said and done, the only thing
>>> computers can do for us is to manipulate symbols and produce results
>>> of such manipulations" and he emphasises the "uninterpreted" nature of
>>> mechanical symbol manipulation, i.e. that the machine is doing it
>>> mindlessly.
>>
>>"Manipulate symbols" is so abstract as to be pointless. By that
>>reasoning, I can build a "computer" consisting of a box open at the top.
>>I represent a symbol by an object (say, a helium-filled balloon, or a
>>stone), instead of a pattern of bits. I manipulate the symbol by holding
>>the object over the box and letting go. If it flies up into the sky,
>>that represents the symbol "Love is War", if it falls into the box, it
>>represents the symbol "Strength is Blue", and if it just floats there,
>>it represents "Cheddar Cheese". This is a deterministic, analog computer
>>which manipulates symbols. Great.
>>
>>And utterly, utterly useless. So what is my computer lacking that real
>>computers have? When you have answered that question, you'll see why
>>Dijkstra's claim is under-specified.
>>
>>
> So if computers do not manipulate symbols, what is it that they do?

Did I say they don't manipulate symbols?


> They
> sure cannot think,
> or drink,
> or reason,

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

Yet again, it didn't even cross my mind that somebody would make this 
claim. My entire point is that it's not enough to just "manipulate 
symbols", you have to manipulate symbols the correct way, following laws 
of logic, so that the computer can *mindlessly* reason.


> or almost any verb you can think of.

If you're going to take that argument, then I'll remind you that there 
are no symbols inside a computer. There are only bits. And in fact, there 
aren't even any bits -- there are only analog voltages, and analog 
magnetic fields.


> "Manipulating symbols" is actually an elegant definition. Try coming up
> with a better one and you will see.

As I said above, it's not enough to just manipulate symbols. Here's a set 
of rules to manipulate symbols:

X => 0

or in English, "Any symbol becomes the zero symbol".

That's symbol manipulation. Utterly useless. This is why it's not enough 
to just manipulate symbols, you have to manipulate them THE RIGHT WAY.



-- 
Steven



More information about the Python-list mailing list