For the first part of 2014, I felt highly unfocused. I was a bit bored and listless. I started a few side projects, but nothing seemed to stick. I chalked it up to winter blues and put them aside.
A few months later, I had an insight: I only attempt side projects I knew I could finish.
Little wonder I felt stagnant! I’d forgotten that half the thrill of a side project is attempting things that might not pan out. Instead, I viewed side projects as something that needed to be released ASAP. I’d sold my craft to the Church of Lean. I’d stopped training. To instill accountability, I resolved to work on my next project out in the open, however imperfect it was.
Thus, I married two nascent interests: compilers and functional programming. Whereas my previous study in programming language design stayed simple, I felt ready to tackle a real language, with the necessary ugliness it entailed. I wanted the fear of getting my ass kicked by a project of this scope. And I wanted a language that was well fit for the problem. In the age of Blub Languages, I wanted a powerful language that expected more of me than I was used to. Haskell fit the bill perfectly.
I began Hython on July 2nd, 2014, severely underestimating the scope of work to be done. This was a blessing: it protected me from the fears and doubts that would have provided an easy way out. This is reflected in my first commit: a simple interpreter which only handles print statements and blank lines.
I’ll be walking through the commit history with a series of posts, explaining as I go. We’ll make some poor assumptions and gross simplifications along the way, but that’s OK: we are learning, after all. I hope to show you that a study of compilers is actually a study of computation itself. And computation, in it’s purest form, is something very beautiful and creative.
That is my real reason for learning all of this.