Charlie Wants to Write a Programming Language / by Charlie Francis Cassidy

Backstory

It all started with me coming across an article on Medium, about someone who had started writing their own programming language. I was immediately intrigued and started reading more about it. I could feel an interest forming, I wanted to try this for myself!

I started doing a bit more research into resources that could help me learn this, a starting point somewhere. I collated what I found into a database in Notion.

After this I selected some textbooks to purchase that would hopefully give me a solid base for starting and continuing on this journey.

Bookshelf filled with programming textbooks

Programming Language Dev Textbooks

I started reading through a few books:

  • Write an Interpreter in GO

  • Crafting Interpreters

  • How to Create Pragmatic, Lightweight Languages

However, I don't learn best just reading. I was learning, but not really applying it anywhere, so I could feel this new information quickly getting lost in my head. This is when I decided it was time to jump into this language creation head first! Which led me to my latest endeavour, the Carmine programming language!

What is Carmine for?

The concept for Carmine is to be a fairly basic/easy to pick up scripting language, with functionality to get and use content sourced from an online blog. This may sound pretty niche (and it is) but it's inspired by my personal game creation: In My Mind. A game filled with content sourced directly from a blog I've kept about my mental health journey.

Screenshot from game In My Mind

After this game, I created a bit of a game template in Unity with the idea that others could maybe use it to do similar work. This language is the next step in bringing this idea forward in an easy to access way. I want developers to do cool things with their own blogs! I want people to think about how content like this can be played with and presented in new ways.

Finally, I'll be creating this language in C++. Since it's going to be an interpreted language, it makes sense to use a compiled language to build it for performance reasons. That and I really want to expand my C++ knowledge and I think this is a great opportunity to do that!