Aaron, how did you go about learning about programming languages implementation? I'm mostly interested if you went theory (e.g. reading a PL book) down to implementation (e.g. reading the ruby source code) or the other way around?
It was actually a mixture of both. The first 'book' I read was http://createyourproglang.com/, which pointed me in the right direction as far as next steps. Personally I think the book is a little light on details, but it's much more approachable than anything else I saw.
Most of my learning was through experimentation and lots of time on Wikipedia. The theory stuff mainly came from Wikipedia, then once I had a handle on basic theory I started having a look at how other people had implemented sections of programming languages, mainly sticking to implementations done in high-level languages where I could.
Strangely one of the things I found most helpful was looking through the instruction sets for Virtual Machines. For some reason seeing the operations broken down into chunks like that just 'clicked' in my head.
It's an absolutely huge field to try to digest, and to be honest I still really don't have a good handle on many aspects of it (I've never written a garbage collector for instance) but the biggest thing for me was just getting past the point where I could understand 50% of it, that was when it stopped feeling like 'voodoo'.
I've started work on writing a book that offers more info on this in as simple and approachable a way as possible, I'd be interested to know if this is something people are interested in...
Hey Aaron, glad my book was helpful. What do you feel is missing from it?
Now that I think about it, looking at instruction sets made it click for me too, so maybe it's something i should include.
And nice work with your language!
Thanks Marc! Yeah, this has been a while coming now! I've just started writing a book that goes into greater (and more fundamental) detail on the process of simple language design.