Why "Automated Imagination"?
My secondary purpose for creating this blog is to let me write about simulations. (My primary purpose is to get myself to write more often.) When you program a simulation, you have automated your imagined model of the way something works. This is incredibly important, because suddenly it is no longer necessary to hold the entire model in your head at all times. You can work on one part of the model, and see how it interacts with your previous work, even if you couldn't possibly hold the entire model in your head at once. This makes it possible for non-genius scientists to work on things previously understood only by a select few. It also allows programmers to simulate things that scientists previously only imagined.
Simulation programming isn't a commonly acknowledged field of computer science, but it probably deserves to be. In order to write a simulation, a programmer has to grok what's being simulated. The result is that most simulations are written by physicists, chemists, biologists, geologists, economists, social scientists, etc., often using only the most basic programming skills, rather than an experienced programmer. Since you can, in theory, compute anything using only the most basic programming skills, the simulations usually work correctly. But there is much wasted time and potential. I intend to write about a few of the tricks, tools, and concepts that have helped me automate my imagination.
Simulation programming isn't a commonly acknowledged field of computer science, but it probably deserves to be. In order to write a simulation, a programmer has to grok what's being simulated. The result is that most simulations are written by physicists, chemists, biologists, geologists, economists, social scientists, etc., often using only the most basic programming skills, rather than an experienced programmer. Since you can, in theory, compute anything using only the most basic programming skills, the simulations usually work correctly. But there is much wasted time and potential. I intend to write about a few of the tricks, tools, and concepts that have helped me automate my imagination.
3 Comments:
Good post. One issue I see with simulation is that when they get good enough, people lose sight of the fact that they're simulations and forget the first, most vital step of simulation evaluation: verifying that the simulation still matches reality. There are lots of ratholes you can go down trying to figure out why all your critters are dying when it turns out that something somewhere is setting their life expectancy in milliseconds instead of seconds.
...which is a weak analogy, but you probably knew that.
Actually, there's another thread there, too! Simulations are analogies, and analogies are like climbing the 4 mountains *around* the one you actually want to scale. You get a pretty good idea of what it would have been like to climb the real one, but it's still Not The Same.
...kinda like that analogy doesn't really work either.
Verifying that a model still matches reality is an issue that goes far beyond simulation. Arguably simulation makes this process easier, since you can read the source code. Mental models are almost inaccessible in comparison. You may still go down lots of ratholes while trying to figure out what's wrong with your simulation, but you can also have many sets of eyes looking at the problem.
Darwin Award winners are excellent examples of the ways unverified mental models can cause trouble.
There's probably some "Law" lurking in here about how simulations gain in complexity until they can't be understood any more.
Nonetheless, simulations are still less complex than the real world, and are therefore always easier to understand. Which is just a different way of saying what you said about analogies.
Post a Comment
<< Home