The Early Years
When I was in elementary school, a consultant who offered optional advanced studies taught a small group of us some basic algebra. This was amazing to me at the time--solving for the mysterious x!
The next amazing mathematical concept I learned of was imaginary numbers. Just like pornography, I learned about it long before I was supposed to.
I was in 6th grade and I had started reading old science fiction magazines obtained from the town dump. In an issue of Fantasy&Science Fiction from the 1960s, there was an article by Isaac Asimov (he wrote the monthly science fact column) about imaginary numbers. Complex numbers may seem pretty mundane to most people who read this, but the notion broke new ground in my 11-year old brain.
I taught myself to program computers at age 13. (The story can be read in "A Boy and His 286: Into the Coding Wilderness.") I suspect this caused my initial disillusionment in mathematics. Why solve equations when you can instruct a computer to do it for you? Why do anything manually when a computer can do it for you?
The explanatory power of programs was such that I began to prefer thinking in terms of programs.
And then there is the explorative aspect of programming. For instance in programs that generate something--such as other programs, abstract graphics, mazes, human-readable sentences, etc.--there is an exciting interaction between the programmer and the program and the stuff that is being generated. New kinds of creativity can be experienced, such as ridiculous random associations that your brain would almost never create. Even with simple rules that you ordain, a program can still produce surprising results.
And with computers, you really start to get into worldbuilding. I say worldbuilding because it is similar to the world construction of fiction writers. Programming is an act of creation. The blank page of a writer is the blank text editor of a programmer.
But is it fair to call them worlds? There are abstract objects interacting with each other under specific rules. New arbitrary rules can be made to exist within the program-worlds. And you might think of these worlds as layered:
- The architecture of the world (the code).
- The executed world (the code running).
There are several things I've learned and experienced over the years that maintained my aloofness with mathematics. In some ways I've become more interested in math, but in aloof ways--why does a mathematical approach work in some circumstances, why does this particular model work or not work, what other ways to model that system are there? Can we make a computer program to figure it out for us? And stuff like that.
Here are a few--by no means all--of the events that enhanced this stance of mine:
- In 2002 I was introduced to one of the approaches to explaining nature using computer programs, which was A New Kind of Science by Stephen Wolfram. (I got the book from the library and also went to a few of Wolfram's talks in Boston. I met him twice when he was wandering around MIT as well.)
- In 2004, in a metaphysics class at Northeastern University, I was introduced to the philosophical questions of the existence of mathematical objects and mathematical objectivity.
- My own work on increasingly more complex computer programs, and then electro-mechanical systems (namely mobile robots).
- My readings of research and ideas connected to the behavioral robotics scene that had started in the 1980s (but I didn't know about that stuff until around 2001 or 2002). One of the concepts is--what can you do without an internal representation? Can you use the world as its own model in real time?