*The Disillusionment of Math*

### The Early Years

When I was in elementary school, a consultant taught a small group of us some basic algebra. This was amazing to me at the time—solving for the mysterious * x*! I actually shouted loudly when I solved one of them much to the chagrin of everybody in the room.

The next amazing mathematical concept I learned of was imaginary numbers.

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.

The square root of -1 is not a real number…that’s how this craziness starts. Complex numbers may seem pretty mundane to some who read this, but the notion broke new ground in my 11-year old brain.

I would not use complex numbers in an applied way until college for electric circuits…and then never again…

I taught myself to program computers at age 13. 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 code.

### The Experience

And then there is the explorative aspect of programming. The experience.

There is an exciting interaction between the programmer and the program and behavior, or the stuff that is being generated from the program.

And then there’s the whole epic arc of problem solving during coding. And fixing an error until it finally compiles and runs and does (or does not) do what you expected. And fixing bugs and so on…

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

### Worldbuilding

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

### Staying Aloof

I think that staying aloof—or perhaps I should say staying meta—from particular reality models and symbolic tools can be advantageous for creativity, problem solving, and science.

Always be asking, why does a mathematical approach work in some circumstances but not others, 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, even if it uses a brute force method?

### Clash of the Experiences

Insofar as mathematics pursues ideal knowledge and studies the relationship between this ideal and the world as we find it, it has something in common with religion.

^{1}P.J. Davis & R. Hersh, The Mathematical Experience, Houghton Mifflin, 1981.

In the book *The Mathematical Experience*^{1}P.J. Davis & R. Hersh, The Mathematical Experience, Houghton Mifflin, 1981., the chapter on symbols mentions computer programming:

Computer science embraces several varieties of mathematical disciplines but has its own symbols

You might say computer programming can pick and choose from mathematics. And it of course has its own symbols, indeed entire languages and cultures.

But despite the “embracing” I’ve always thought of programming as different than mathematics. And I almost always choose the experience of thinking in code over the experience of thinking in equations.

But some people think of the professions involving coding as requiring lots of mathematics education. If a programmer tells somebody that they are a software engineer, the keyword “engineer” can create a response of “oh you must do a lot of math.”

It’s understandable that programming would appear to be a math activity. After all, they both involve wallowing in pools of nerdy symbols and syntaxes. And computing in general does have an intertwined history with mathematics.

But being a coder doesn’t necessarily mean thinking in or using much math.

**Argument: There’s a lot of math inherent in coding, you just got used to it.**

There’s some truth to that. It’s actually a bit hard to actually try to see what basic things I take for granted. Of the top of my head, here’s a few overlapping things between programming and math experiences:

- The use of numbers
- Symbol manipulation
- Specialized grammars
- Symbols representing variables
- Staring at aforementioned symbols for long periods of time
- Generalization
- Representing real world objects and processes with abstract concepts
- Creating meta-concepts (e.g. structures about structures, symbols referring to symbols) within their systems

But programming and math are also very different. Abstract concepts are not merely written down symbolically—they are actually implemented. General ideas are instantiated. The computer executes the code.

It is running. It is alive.

The electric things have their lives, too.

^{2}Philip K. Dick, Do Androids Dream of Electric Sheep?