Published: October 31, 2018 • 2 min read
Recently, I hit Day 50 of the ‘100 Days of Code’ challenge. I’ve been focused on language design, and I’d like to pause and reflect on that experience.
I started by building a language written in Ruby called Awesome. I’d been eager to explore language design for most of this year, and this was a great introduction. Next, I moved into my current project, a language written in Go called Monkey. Monkey has been a much more challenging (I’m learning Go on fly) and satisfying endeavor. I’d like to thank Marc-André Cournoyer and Thorsten Ball for the incredible books that guide this journey.
Language design fascinates me. In my daily work, I live in frontend JavaScript code. Paraphrasing Steve Jobs, it’s a high floor of the technology skyscraper. From that vantage point, crawling through a collection of tokens is exhilarating. It’s not quite low-level, but it feels that way to me.
I love how simple logic slowly builds into something mind-breaking even to most programmers. I love how small decisions inform the user experience. I enjoy thinking about design tradeoffs that people have grappled with since the beginning of programming.
I hope that these projects help me write better code. I’ve gained a lot of empathy for language creators and maintainers; never again will I listen uncritically to the “this language is bad and here’s why” school of thought. It’s almost always a bad argument.
This challenge has been fun, even on the days when it’s hard. I’m committed to hitting Day 100, and I anticipate spending most of that effort on Monkey. There’s much to learn.
What are your thoughts on this? Let me know!
Get better at programming by learning with me! Join my 100+ subscribers receiving weekly ideas, creations, and curated resources from across the world of programming.