Python is readable

Steven D'Aprano steve+comp.lang.python at
Fri Mar 30 12:47:32 CEST 2012

On Fri, 30 Mar 2012 00:38:26 -0400, Nathan Rice wrote:

>>>> He did no such thing. I challenge you to find me one place where Joel
>>>> has *ever* claimed that "the very notion of abstraction" is
>>>> meaningless or without use.
>> [snip quote]
>>> To me, this directly indicates he views higher order abstractions
>>> skeptically,
>> Yes he does, and so we all should, but that's not the claim you made.
>> You stated that he "fired the broadsides at the very notion of
>> abstraction". He did no such thing. He fired a broadside at (1)
>> software hype based on (2) hyper-abstractions which either don't solve
>> any problems that people care about, or don't solve them any better
>> than more concrete solutions.
> Mathematics is all about abstraction.  There are theories and structures
> in mathematics that have probably gone over a hundred years before being
> applied.  As an analogy, just because a spear isn't useful while farming
> doesn't mean it won't save your life when you venture into the woods and
> come upon a bear.

A spear is a concrete application of the principle of leverage, not an 
abstraction. I also point out leverage was discovered experimentally long 
before anyone had an abstraction for it.

In any case, so what? Who is saying that mathematics is useless? Not me, 
and not Joel Spolksy. You are hunting strawmen with your non-abstract 

Spolsky has written at least three times about Architecture Astronauts, 
and made it abundantly clear that the problem with them is that they 
don't solve problems, they invent overarching abstractions that don't do 
anything useful or important, and hype them everywhere.

Jeff Attwood provides a simple test for the difference between a useful 
abstraction and an Architecture Astronaut hyper-abstraction:

    Does it solve a useful problem?

You keep reading this as an assault on abstract mathematics, science and 
knowledge for its on sake. It isn't any of these things.

If I'm paid to solve a problem, and instead I build an abstraction that 
doesn't help solve the problem, then I'm guilty of doing architecture 

>>> and assumes because he does not see meaning in them, they don't hold
>>> any meaning.
>> You are making assumptions about his mindset that not only aren't
>> justified by his comments, but are *contradicted* by his comments. He
>> repeatedly describes the people coming up with these hyper-abstractions
>> as "great thinkers", "clever thinkers", etc. who are seeing patterns in
>> what people do. He's not saying that they're dummies. He's saying that
>> they're seeing patterns that don't mean anything, not that the patterns
>> aren't there.
> He is basically saying they are too clever for their own good, as a
> result of being fixated upon purely intellectual constructs.

Yes, and he is right to do so, because that is the characteristic of the 
Architecture Astronaut: being so fixated on over-arching abstract 
concepts that, far from those abstractions making it easier to solve the 
problems they are being paid to solve, they actually make them harder.

Good abstractions enable problems to be solved. Bad abstractions don't.

If I ask you to build me a website, I probably don't want a website-
builder, I certainly don't want a website-builder-generator, and I 
absolutely do not want you to generalise the concept of a compiler and 
create a whole new abstract language for describing meta-compilers so 
that I can create a brand new programming language for generating meta-
compilers that build compilers that will build factories for building 
website generators so I can make my own website in just three easy steps 
(the simplest one of which is about twice as difficult as just building 
the website would have been).

If you are being paid to build abstractions in the ivory tower, on the 
chance that one in a thousand abstractions turns out to be a game 
changer, or just because of a love of pure knowledge, that's great. I 
love abstract mathematics too. I read maths in my free time, you won't 
find me saying that it is bad or useless or harmful. But does it solve 
real problems?

Well, of course it does, and often in a most surprising places. But 
that's because out of the hundred thousand abstractions, we see the 
hundred that actually solve concrete problems. The other 99,999 exist 
only in forgotten journals, or perhaps the odd book here or there.

This is all well and good. It's not meant as an attack on mathematics. 
You can't tell ahead of time which abstractions will solve real problems. 
*Somebody* has to be thinking about ways that spherical camels can pass 
through the eye of a 17-dimensional needle, because you never know when 
somebody else will say, "Hey, that's just what we need to make low-fat 
chocolate ice cream that doesn't taste like crap!" and then you'll be 
richer beyond all the dreams of avarice.

But that doesn't mean that you have to turn every one of those 
abstractions into software. I don't really care if checking my email and 
deleting a file are both special cases of some abstract file operation, I 
don't need to see it in my file manager.

> The electronic properties of silicon (among other compounds) is an
> obvious example of where quantum theory provides for us.  We might have
> basic circuits, but we wouldn't have semiconductors.

A poor example. The existence of semiconductors was demonstrated, not 
predicted: Michael Faraday discovered the existence of semiconductors in 
1833, *long* before quantum theory:

The existence of photoconductivity was one of the experimental 
discoveries which eventually led to QM, via Einstein's explanation of the 
photoelectric effect.

But what's your point here? We started off talking about abstractions. 
Quantum mechanics is not an abstraction, or at least no more than any 
other physical theory. It is a *description* of reality (a model), not a 

To counter Spolksy, you need to show the great practical discoveries and 
inventions, not of quantum mechanics, but of a *generalisation* of 
quantum mechanics that encompasses QM as a special, concrete, example.

> The stochastic method, while useful, is many orders of magnitude less
> efficient than analytically closed solutions.  Not having access to
> closed form solutions would have put us back hundreds of years at least.

We don't have closed-form solutions.

At best we have closed-form solutions of simplified and idealised 
problems. E.g. we don't have a closed-form solution for the actual 
hydrogen atom, only of a simplified model of that atom:

And likewise for helium, e.g. one simplifying approximation is to ignore 
the electron-electron repulsion. And that's hardly the only one.

As for closed-form solutions of real devices like a CPU? Forget it.

As the famous saying goes, the more advanced the theory, the fewer 
entities it can solve exactly. Newtonian physics can't solve the three 
body problem exactly; Einsteinian physics can't solve the two body 
problem; quantum mechanics can't solve the one body problem; and quantum 
gravity can't solve the zero body problem (the vacuum).


More information about the Python-list mailing list