4 ms·
> A very instructive exercise for anyone who is or intends to be a software developer is to write some sort of interpreter and/or compiler. Another exercise, p
by AdieuToLogic 7y ago
> A very instructive exercise for anyone who is or intends to be a software developer is to write some sort of interpreter and/or compiler.
Another exercise, perhaps less demanding in this regard, is to explore using Free Monads[0] to implement an EDSL[1] for a problem domain. Of course, the approachability of this varies based on the person involved.
> For instance, and amusingly enough written in golang, one of the most respected recent books on this topic is `Writing an Interpreter in Go` and its sequel `Writing a Compiler in Go`.
Queue obligatory reference to "the dragon book":
Compilers: Principles, Techniques, and Tools[2]
0 - https://softwareengineering.stackexchange.com/questions/242795/what-is-the-free-monad-interpreter-pattern https://softwareengineering.stackexchange.com/questions/2427...
1 - https://www.quora.com/What-is-an-embedded-domain-specific-language https://www.quora.com/What-is-an-embedded-domain-specific-la...
2 - https://suif.stanford.edu/dragonbook/ https://suif.stanford.edu/dragonbook/
- reificator 7y agoYeah I'm definitely not saying anything bad about the Dragon book here. But I know there's a recency bias when people are evaluating tech books, so if there's a good book from the last five years I'll recommend that over a great book from the last 15, just so there's a higher chance of the recommendation actually being used.
- AdieuToLogic 7y agoNo worries mate. I mentioned the dragon book by obligation, not in comparison to the works you referenced.
- andersyr 7y agoIf anyone is curious about an updated resource, I've found Modern Compiler Design much more approachable than the Dragon Book: Published in 2012, it includes chapters on designing object-oriented, functional, and logical compilers. https://www.springer.com/gp/book/9781461446989 https://www.springer.com/gp/book/9781461446989
- reificator 7y agoHadn't heard about that one, thanks!