Tech News
← Back to articles

I built a programming language using Claude Code

read original related products more articles

Over the course of four weeks in January and February, I built a new programming language using Claude Code. I named it Cutlet after my cat. It’s completely legal to do that. You can find the source code on GitHub, along with build instructions and example programs.

I’ve been using LLM-assisted programming since the original GitHub Copilot release in 2021, but so far I’ve limited my use of LLMs to generating boilerplate and making specific, targeted changes to my projects. While working on Cutlet, though, I allowed Claude to generate every single line of code. I didn’t even read any of the code. Instead, I built guardrails to make sure it worked correctly (more on that later).

I’m surprised by the results of this experiment. Cutlet exists today. It builds and runs on both macOS and Linux. It can execute real programs. There might be bugs hiding deep in its internals, but they’re probably no worse than ones you’d find in any other four-week-old programming language in the world.

I have Feelings™ about all of this and what it means for my profession, but I want to give you a tour of the language before I get up on my soapbox.

A tour of Cutlet

If you want to follow along, build the Cutlet interpreter from source and drop into a REPL using /path/to/cutlet repl .

Arrays and strings work as you’d expect in any dynamic language. Variables are declared with the my keyword.

cutlet> my cities = ["Tokyo", "Paris", "New York", "London", "Sydney"] => [Tokyo, Paris, New York, London, Sydney]

Variable names can include dashes. Same syntax rules as Raku. The only type of number (so far) is a double.

cutlet> my temps-c = [28, 22, 31, 18, 15] => [28, 22, 31, 18, 15]

... continue reading