When I started developing the Gravity programming language I knew nothing about how to develop an interpreter or how to traverse an AST. This project proved to be an invaluable experience to me and I am sure that developing a programming language from scratch is the best way to become a much better developer with a deeper understanding about what happens inside the compiler we use every single day.

I'd like to collect all my experience in this book, trying to not assume any prior knowledge except the C language. This book guides you to gain the foundational knowledge required to write a new programming language from scratch and will give you concrete answers to questions like what is really a closure or how a garbage collector works under the hood.


If you find any grammatical issue, please report it using Github Issues. Or, if some sentence or paragraph is difficult to understand, feel free to make a pull request. This book is in active development and I'll regularly update and improve it. I am not a native English speaker so feel free to correct me if something is not properly written.

If you have any question related to the material or the development of the book, feel free to open a GitHub issue or to contact me.

About me

I am Marco Bambini and you can reach me at: