I have written much lately, I guess I haven’t felt that I
have had anything relevant to post or perhaps micro blogging is just too
convenient.
I’ve been learning different programming languages over the
past few weeks rather than working on writing C# in my spare time. I’ve spent a couple of weeks with Ruby, then
a week with Scala, and now a few days with Clojure. The interactive nature and quick feedback
that REPL gives you is just awesome for learning a new programming language.
Each language definitely has it’s niche, but I feel like
there’s something I’m missing that allows me to fully grasp the underlying
niche that each language provides. I
have no trouble picking each language up, but I want to get into the guts of
the language and try to understand it from the perspective of the person who
wrote it.
For instance, I spent several hours pouring over the Clojure
source code and found that it was nothing like I had expected. A programming
language written in Java! The nerve. That was laughable only a few years ago (unless
you’re a DBA, then you probably find the entire JVM laughable). When did we graduate from writing languages
in C to Java? I find it absolutely fascinating.
Not to pick on people smarter than myself, but the source
code for Clojure is far messier than I expected. I’m sure at a high level its very well
designed, but the low level source code wasn’t as well abstracted as I expected
and with commented out code all over the place.
It made me wonder how it actually worked without bugs seeping out from
every corner of the code base.
But the more I learn about these languages, and how they’re
written, the lower down in the stack I want to go. Dragon book lower. Although understanding BNF and other compiler
lingo isn’t required for understanding the Clojure compiler, I think it would
answer the question of how it works so well without bugs seeping out from every
corner.