It's so nice when you find the "natural" way to express a coding problem. All of a sudden everything
because so much simpler and the answers just start popping out at you. Like oh, and I can do this
here, and this automatically happens just the way I wanted. Tons of old code just disappears that
was trying to solve the problem in the "un-natural" way.
It doesn't change the code; in the end it all becomes assembly language and it can do the same thing,
but changing the way you write it can change the way you think about it. Also when you find an
simple elegant way to express things, it sort of makes it feel "right", whereas if you are getting
the same thing done through a series of kludges and mess, it feels horrible, even though they are
accomplishing the same thing.
It reminds me of physics. I think some of the greatest discoveries the past century in physics were
not actually discoveries of any phenomenom, but just ways to write the physics down. In particular I
cite Dirac's Bra-Ket notation and Feynman's path integrals.
Neither one added any new physics. If you look at it in a "positivist"
view point, they did nothing - the actual observable predictions were the same.
The physics all existed in the equations which were already known.
But they opened up a new understanding, and just made it so much more natural and easier to work with
the equations, and that can actually have huge consequences.
Dirac's bra ket for example made it clear that quantum mechanics was about Hilbert spaces and Operators.
Transformation between different basis spaces became a powerful tool, and very useful and elegant things
like raising and lowering operators popped out. Quantum mechanics at the time was sort of controversial
(skeptics like Einstein were still questioning it), and finding a clear elegant solid way to write it down
made it seem more reasonable. (physicists have a semi-irrational distrust of any physical laws that are
very complicated or vague or difficult to compute with; they also have a superstition that if a physical
law can be written in a very concise way, it must be true; eg. when you write Maxwell's equations as
d*F = J).
Feynman's path integrals came along just at a time when Quantum Field Theory was in crisis; there were
all these infinities which make the theory impossible to calculate with. There were some successful
computations, and it just seemed like the right way to extend QM to fields, so people were forging ahead,
but these infinities made it an incomplete (and possibly wrong) theory. The path integral didn't solve
this, but it made it much easier to see what was actually being computed in the QFT equations - rather
than just a big opaque integral that becomes infinity and you don't know why, the path integral lets
you separate out the terms and to pretend that they correspond to physical particles flying around in
many different ways. It made it more obvious that QFT was correct, and what renormalization was doing,
and the fact that renormalization was a physically okay way to fix the infinities.
(while I say this is an irrational superstition, it has been the fact that the laws of physics which are true
wind up being expressable in a concise, elegant way (though that way is sometimes not found for a long time
after the law's discovery); most programmers have the same supertition, when we see very complex solutions to
problems we tend to turn up our noses with distate; we imagine that if we just found the right way to think
about the problem, a simple solution would be clear)
(I know this history is somewhat revisionist, but a good story is more important than accuracy, in all things
but science)
Anyhoo, it's nice when you get it.
"12-02-11 - Natural Expression"
No comments yet. -