01 August 2015

I met Stephen Wolfram at CodeDay Boston Spring 2015, where he demonstrated the capabilities of the Wolfram Language. I quickly became interested in how to create a programming language. I think that the Wolfram Language is fascinating, and its applications seem boundless. However, I really, really wish that it was open source. Some pseudo-equivalents exist, like Sympy Gamma, but I wish there were a true equivalent to the language; one that functioned the same way, and had as many equivalent functions as possible. I do not mean to detract in any way from Sympy Gamma. It’s incredible what can be done with it, and I’m sure it will only become more incredible.

Anyway, the meeting with Stephen Wolfram started me thinking about just trying to create a language with the basic functions of the Wolfram Language, which I could then open source. It’s obviously a massive undertaking, and I’m not deceiving myself into thinking that I could recreate any significant portion of what Wolfram has made, but it seems like an interesting thing to try. After thinking some more, I came to the conclusion that I’d like to make the base in JavaScript. My journey to try to figure out how to create a basic programming language in JavaScript is what much of this blog will likely be about.

While there is very extensive information about many computer-related topics online, this is surprisingly untrue of language design. That’s not to say that there is no information/documentation about it, but it’s sparser than you’d expect. So, I thought that along my way to trying to understand how programming languages work, I’d write a little about it to make it easier for people who come after me.

As of writing this, I’m working through the Dragon Book (admittedly, I’m very close to the beginning). The Dragon Book has exercises at the end of many sections, the answers to which can be found at this GitHub repo (please do the exercises first!). While I was writing this post, I also came across this course from Brown University which I plan to take a look at.

This is simply an introductory post; future posts should contain substantially more real programming-related content. Stay tuned!

Disclaimer: I am not knowledgable about programming language design, compiler design, or anything else related to creating a programming language. I just think it’s interesting, and want to learn more about it.

blog comments powered by Disqus