Python is readable

Nathan Rice nathan.alexander.rice at gmail.com
Fri Mar 30 15:46:28 CEST 2012


>> 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.

And an analogy is a device to demonstrate the fundamental character of
an argument in a different context.

> 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.

I don't think it is a strawman.  He decries things that aren't
immediately useful.  That describes almost all pure math.  If he had
excluded things that have some characteristic of truth, and just
talked about overly general systems, I might agree with him.

> 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.

I believe in the idea of "things should be as simple as possible, but
not simpler".  Programming as it currently exists is absolutely
convoluted.  I am called on to help people learn to program from time
to time, and I can tell you that we still have a LONG way to go before
programming approaches a global optimum in either the semantic or
syntactic space.  Never mind configuring a build or anything else
related to projects.  The whole setup really is horrible, and I'm
convinced that most of the people who are capable of changing this are
more concerned about their personal investment in the way things are
than helping others.  There are a few exceptions like Alan Kay, but
mostly people want to graft shortcuts on to what already exists.

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

I never said it was an attack on science.  Scientists don't really do
abstraction, they explain observations.  Mathematicians are the ones
who discover truth that may be completely disconnected from reality.

> 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.

If I ignore everything Joel wrote and just use that definition, I
agree with you.

>> 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).

Again, I follow the principle of "everything should be as simple as
possible, but no simpler".  I have in the past built website builders
rather than build websites (and done a similar thing in other cases),
but not because I am trying to discover some fundamental truth of
website building, because that would be bullshit.  I did it because
building websites (or whatever else it was) is a boring, tedious
problem, and a website builder, while being more work, is an engaging
problem that requires thought.  I enjoy challenging myself.

> 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?

You forget that even abstractions that never directly get turned into
something real are almost invariably part of the intellectual
discourse that leads to real things.

> 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.

It is pretty rare that an article that has some element of truth
doesn't live on through its intellectual progeny.  The abstraction
that is used in some amazing way will almost always have a large
number of "useless" abstractions as intellectual ancestors.  This is
easy to see just by following the chain of citations for a paper.

> 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.

I think you're overly concerned with money and consumption Steven.
Those things are ephemeral.  Things like truth and beauty are eternal.
 Moreover, research in psychology suggests people who pursue money and
consumption are less happy in general than people who derive joy from
creation.

> 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.

Careful Steven, when you make statements like this, it makes me want
to agree with you.  People are paralyzed by choice, and in general
they want to be told what to do, so having interfaces tons of options
actually distresses them.

>> 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:

He observed a phenomenon, he did not explain it.

> 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.

Lattice theory, rings of operators, Hilbert spaces, Lebesgue measure.
All very abstract mathematical structures created not to solve a
particular problem in the real world, but as descriptions of
mathematical truth.

> 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.

Quantum mechanics is built on a foundation of "meaningless"
abstractions.  If those abstractions did not exist we wouldn't have
computers.

>
> [...]
>> 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:

Of course, the world is complex and stochastic.  The only complete
solution of a system is the system itself.  Thankfully, things like
the central limit theorem allow us to pretend a lot of that complexity
doesn't exist without sacrificing much.

> 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).

That may be true in some cases, but I wouldn't call that a universal.
If you have to cross a boundary from linear to nonlinear or finitary
to infinitary, of course things are going to get messy, because some
areas of math are better developed than others.  A complex linear
system is just as easy to work with as a simple linear system though.



More information about the Python-list mailing list