Francisco Soto Ramblings about code, life and stuff.

I shall learn Lisp
Mar 18, 2012

Babel Tower

I’ve been meaning to do this for a long time, finally get to learn Lisp, but for whatever reason I always end up procrastinating in this particular endeavor (and in others as well).

Everybody that already know Lisp say the same thing, that learning Lisp will forever change you as a programmer, this may seem over hyped but I truly believe such thing is possible, that learning a particular language can forever change the way you think about programming. I’ve felt such thing with a language I learned a long time ago: x86 assembly language, maybe not to the degree of Lisp, enlightening in the ways of computation, but I certainly have benefited a lot from my experience with assembly.

When I was learning to program, I wanted to make games, and I started learning QuickBasic, after some time I found it to be very slow to do anything interesting in the computer I had at the time (80386SX, 2MB RAM), the game coding community in QB back then suggested using a game programming library coded in assembly, there were many available (it was a very thriving community at the time), after playing with some, of course, I wanted to make my own, and CosmoX was born.

At first it had a very humble beginning but I found learning assembly and making my own graphic routines very fun, so I kept going and going, I began learning many intricacies of MS-DOS programming, like Expanded Memory and Extended Memory, I learned about 3D mathematics and added a matrix/vector math module using the FPU, custom “drivers” for the mouse/keyboard, so after a while, CosmoX got a bit popular in the QB community and some people/games began using it, talking about it, etc, it was a small community, but few times after that I’ve felt so much pride.

Now after all that reminiscence, the point at hand, I spent all those long nights learning assembly, crashing my computer and then trying to find what piece of code that was misbehaving (not an easy to do task when you are in MSDOS and a bad instruction meant a reboot), learning about how the machine worked, optimization, learning obsolete technologies (all this happened in 2000-2001) I was left with a lot of experience that may not applicable in every day work but it certainly helps.

Every line of code I write, in any language, C#, Java, C, even Javascript or SQL, I cannot stop thinking about the very metal of the machine. How is this language going to do this? How much memory is this going to use? How are the final instructions that the CPU is going to execute going to look like?

I’m forever cursed with X-ray vision into the innards of the machine and although I am no expert, I am pretty sure it certainly helps me write more effective code, code that benefits the most of the abstractions offered to me by my tools, because, most of the time, I know what the abstractions are trying to help me with, what they are shielding me from, and instead of blindly using them without a clue, I wield them effectively as I know what lies beneath them.

Armed with my faithful archlinux based netbook, Common Lisp, and a copy of Land Of Lisp I plan on learning Lisp.

I will embark in the journey of Lisp learning in order to get enlightening and understanding. I know about functional programming and some of its concept and I apply them in my day to day work using C# and Ruby. But I certainly do not grok it, I do not fully understand it and I do not like that feeling, I want to know, I want to understand, I want to see the light and join the ranks of the Lisp preachers and me too, be able to say to you, that if you learn Lisp, you will be forever changed.

Go up.


comments powered by Disqus