I'm gradually developing an interest in Software Architectures1, though my knowledge in this area is still limited. Let me share some of my plans with you, which also serve as a reminder for me 😊.
I'm looking to explore compiler architectures at a more relaxed pace. Recognizing compilers as one of the more complex types of software, understanding how they manage such intricacy could be a valuable experience. Notably, the source code of LLVM is among the well-designed bodies of C++2 code in the wild3, providing a unique perspective into the world of C++.
To step into the world of compilers, here are my loose plans:
- Complete4 the VitaminC 🍋 project, a simple C compiler written in C++. Crafting a C compiler is an essential endeavor for anyone aspiring to understand compilers5 😏.
- Finish reading the book Compilers: Principles, Techniques, and Tools 🐉. I can't grasp how the compiler functions without understanding its objectives.
- Learn Rust. Rust, heavily supported by the LLVM infrastructure, introduces an additional layer of intermediate representation (IR) to facilitate its unique borrowing mechanism, which I find quite fascinating 😎.
Footnotes
-
Specifically, I have been studying design patterns, architecture patterns, and various development methodologies. ↩
-
Currently, my most used and favorite programming language 💻. ↩
-
Extracted from Parsing C++ in Python with Clang. ↩
-
The term "complete" may not be entirely accurate, as the project should always be open to improvement or support new features. The key is to ensure it can at least compile valid C programs. ↩
-
Let's not debate this; it's a bit exaggerated 🙏. ↩