How I built a programming language - Ep. 0
Published on 8 March 2026 | 2 mins to read
"What one fool can do, another can."
Silvanus P. Thompson
In this blog post series, I will explain how I built Cinnamon, a contraption that just about qualifies as a programming language. I'm not writing this as someone who has it all figured out, but I believe my experience can help programmers like me gain a better understanding of the magic behind compilers and interpreters.
I am going to be writing to this series in small daily increments. Each daily post will cover one concept (maybe two). This is the first post in the series and I discuss what I understand by "programming language".
What even is a programming language anyway?
I am sure there is a thousand better definitions out there, but here's mine: a programming language is a set of rules that define what a syntactically-correct program looks like.
To explain this more, let's start with the idea of a program. It is a set of instructions that tell a computer what to do. Simple enough. A programming language is the set of rules that define how those instructions are to be written.
Suppose, you define those rules and you now have a brand new programming language to your name, do you call it a day? Well no, because your language is useless! The computer doesn't understand it–it only understands binary.
So we need some mechanism for translating programs written in your brand new language into something the computer knows how to execute. Enter language translators, our topic in the next post.