I'm 18 and need to complete a project for my diploma within the next year, including some bug fixes afterward. I'm planning to invest around 100 to 150 hours into this project, and I can define the goals myself. I've narrowed it down to two ideas: creating a simple programming language with either an interpreter or a compiler. If I go with the interpreter, I'll use C for implementation, and for the compiler, I would likely compile the new language to LLVM or assembly. I'm struggling with the decision since the interpreter seems easier but less impressive, while the compiler is more interesting but way more complicated. I also wonder what programming languages I'd need for either option, how much more time the compiler would require, and which option is better for learning purposes. Any advice?
3 Answers
If you're aiming for a learning experience, the interpreter is a great choice. It will allow you to grasp the essential concepts quickly. Plus, consider that every project you complete builds your foundation for future challenges. So, don't underestimate the value of learning something "easier." You could always revisit the compiler idea later.
You might want to consider doing both—start with the basics of your interpreter. Once you have that running, you can add compiler features if you have time. Also, if you get comfortable with C for the interpreter, the learning process will make tackling the compiler much easier later on.
This sounds like a good plan! It's definitely a better idea to make progress rather than getting stuck on a super complicated project from the get-go.
Starting with an interpreter is usually a smart choice! They're significantly easier to build since there's no need for complex code generation. You can think of your project as an opportunity to first learn how to define and parse your language, which is fundamental in both cases. Plus, you can eventually extend it into a compiler if you want to. For implementation, C or C++ should work just fine!
I had the same thought! You can always upgrade your interpreter later. Good luck with the project!

Totally get that! Mastering a simpler project can definitely accelerate your learning for the future. Stay focused!