Compilers and Compiler Generators
scifac.ru.ac.za
scifac.ru.ac.za
This seems really informative and timely for me.
Thanks a ton fogus!
Personally, I am very partial to the back-end, which involves very, very different data structures, algorithms, and theory. Once you make your way through this, I highly recommend taking a look. I would say it constitutes a different field entirely!
Here is a list of some such algorithms.
http://llvm.org/docs/Passes.html
What boggles my mind is that some of these algorithms can be made to do useful things besides generating efficient code (which includes code that runs on several cores!), such as finding bugs and security flaws.
Have fun!
Thanks!
For instance, parsing is one area that has been researched in incredible depth and the parsers that you find in modern compilers (often) reflect this research.
There are also many interesting algorithms found in things such as register allocation, control flow analysis etc.
Personally, I find working on compilers fascinating. If you've never written any sort of interpreter or compiler, I would recommend giving it a go. Creating a language that you actually use to program is immensely satisfying.
There's also the point that if you are interested in optimisation then compilers are a fantastic place to get stuck in Optimise a part of a spreadsheet program and, well, your spreadsheet program will be quicker. But improve the code generator of your compiler and every program will be quicker!
it's nice to know some compiler theory. even as an autodidact. (which I am too)
but don't worry the basic stuff is really basic. it gets only complex when you try to optimize or employ some sort of "smarter" parsing than LL(1). and for that there are bison and friends.
It seems as if nobody seems to recommend this book, perhaps it just wasn't noticed before? Thanks for posting to hn.