Original post

So you suddenly see all of these different things as problems that are now solvable. Your reach gets much wider. You can suddenly implement stuff that you didn’t even maybe dare to think about implementing before.

Just to give you another example, configuration files was one. Templating language. Queries. If you’re writing a sort of database – not everybody does this… But a database for example has queries, needs to parse the queries, needs to put them in some kind of structured form to interpret, or compile, or do something with them.

At work, for example – I work at Sourcegraph – we built a search engine for code, and you can search for code and put in queries. These also need to get parsed. And then you send them to a database, and that also parses the queries. And I looked at the code of how this database does it, and it’s surprisingly similar. In the end it’s a bunch of functions that build up a tree, so to say, and then it gets interpreted.

Before I got into parsing and parsing languages, I wouldn’t even know where to begin with that. This is like another tool in your toolbox that you can hopefully pull out when you need it. So that is the first answer I wanted to give.

The second one was what you said, Mat, that it helps with learning; that after you have this programming language implemented, you can add a bunch more stuff, that Matt said in Slack. And I just want to add to that that it’s so much fun to do that once you have a language or an interpreter running, adding little bits and pieces.

[00:16:02.23] It sounds really like I’m exaggerating, but it is nearly boundless creativity. You can add a lot of different stuff to your language, and the nice thing or fun thing about developing a language is, compared to web applications, which is my background, you don’t need a database, you don’t need an internet connection, you don’t need a second database, you don’t need a huge build process. It’s really like making stuff up in the air. You have a text file, you write stuff in the text file, and then on the other end you get hopefully output, or something. But it’s a really fun thing to work on and develop.