Python is readable
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Fri Mar 30 06:47:32 EDT 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
spear.
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.
http://www.joelonsoftware.com/articles/fog0000000018.html
http://www.joelonsoftware.com/items/2005/10/21.html
http://www.joelonsoftware.com/items/2008/05/01.html
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?
http://www.codinghorror.com/blog/2004/12/it-came-from-planet-architecture.html
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
astronauting.
>>> 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:
http://sites.google.com/site/transistorhistory/faraday-to-shockley
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
generalisation.
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:
http://en.wikipedia.org/wiki/Hydrogen_atom#Features_going_beyond_the_Schr.C3.B6dinger_solution
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).
--
Steven
More information about the Python-list
mailing list