Tuesday, July 8, 2008

Make My Head Implode

Ever since I learned about memes, I've loved the idea of our minds as an ecosystem of ideas. The image of our thoughts in mental battlefield is compelling. Along that line of thought, every once in a while there comes an idea that is so powerful it dominates my thinking once it is introduced. When this happens I wander around in a daze as my neurons snap to new positions. I can usually tell how profound the meme is by how long it takes me to 'grok' it. Sometimes it only takes a matter of minutes. Other times it takes a day. When I first started learning Lisp, it took me over a month to feel normal again. Part of this is because Lisp is not a single meme, but rather a memeplex, a collection of supporting memes. Several parts of Lisp come together seemlessly, metacode, closures, cons cells, REPL, etc. all work in a synergistic manner.

But it was more than just that, and it took me a very long time to figure out what it was. I realized I had been lied to for all my years as a software developer. I was taught how use object oriented programming. Then Lisp taught me what object oriented meant. I was told how to use exceptions to create safe programs. Lisp taught me about continuations. STL claimed to harness the power of data structures. Lisp delivered that power without the complexity. C++ taught me how to create and use interfaces. Lisp allowed me to automatically generate them. XML promised I would never need to parse my data again. S-Expressions made my data and code one while being even simpler. Unix taught me how to compile a language file. Lisp taught me how compile a language. My IDE promised to generate and run my programs faster. Lisp's REPL allowed me to modify them while they ran.

The list can go on and on, but what happened that final day was my mind had finished processing the beginnings of Lisp. I began to see programming possibilities instead of obstacles. Suddenly programming became fun again. But what really happened was that I started that month being a C programmer and I ended it being a Lisp programmer.

No comments:

Post a Comment