Show HN: Koi - a programming language that teaches language implementation.
thingsaaronmade.com
thingsaaronmade.com
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...
It definitely pointed me in the right direction though so I appreciate that!
http://www.complang.org/ragel/
http://en.wikipedia.org/wiki/Abstract_syntax_tree
http://en.wikipedia.org/wiki/Compiler
http://en.wikipedia.org/wiki/Parsing
http://en.wikipedia.org/wiki/Parsing_expression_grammar
http://www.hokstad.com/writing-a-compiler-in-ruby-bottom-up-...
Great fun!