Resolutions - 2009
I read quite a bit. I read fiction, fantasy and sci-fi mostly, but I am not
opposed to a good mind numbing blockbuster either. I read non-fiction,
recently the works of Pierre Berton have caught my interest, though I tend to
read a fair bit of political philosophy books as well. I read computer books,
my desk and surrounding area is littered things I have read and occasionally
need to reference or just read a chapter of to refresh my memory. Finally,
like most regular Internet users, I read blogs.
It was directly
due to the words of a couple of well respected bloggers that I started this one. There are
multiple reasons. By writing, you exercise the communication part of the
brain, which is always good. By putting up a public blog, it becomes easier to
control your own Internet presence. As long as your writing is even passable,
it is good marketing for yourself. These were just a few of the points that
were made. I bought into it and am now going on a couple of months of roughly
weekly posts. I believe I can keep this up rather easily.
So, one
mission accomplished.
On more than one occasion, one of these
people who are well respected in the software development field will mention
something about a compiler. Specifically, that every serious programmer should
write one at some point in time. This makes sense as a compiler tends to be
one of those bits of software that does a good job of covering pretty much
everything that a programmer needs to do somewhat regularly. Lots of string
manipulation, lots of recursion, lots of knowledge about how a computer
actually works, memory management, the list goes on.
I have not
yet written a compiler. It is something that I have wanted to do more than
once, but never actually sat down and started working on it. I've seen enough
mentions in passing recently that I feel it is time for me to complete this
particular rite of passage and actually write a compiler. I am capable of it,
but I needed the push down the right path to do it.
So it is not
going to be a huge project and I'm not going to sink huge amounts of time into
it, but I do have goals for it that should be completed by the end of 2009. I
need to define my own language, it should have ifs and whiles, it should
evaluate mathmatical expressions correctly. I think I will compile to JVM
compatible byte code, though I have not decided on that yet either. That would
theoretically allow me to use Java libraries as well, which is appealing. It's
not going to be object oriented, mainly as this is a learning experience and I
don't want to bite off more than I can chew so to speak.
I'm
leaning towards Ruby for the project, but am stronger with Java which will
make some things significantly easier. I will likely make the final decision
once I've read some of the Dragon book and know more about what I am getting
into. My intention is to write it all at this point. I don't think I will use
a parser generator or anything like that, simply as the point of this is to
learn how to write a parser/lexer/etc.
So that's the plan for
2009, dedicate a couple of hours a week to this project and hopefully be able
to run some of my own code in my own language by the end of the year. Who
knows if that's reasonable, but it should be... illuminating.