Arturo: a programming language for the future

Yanis Zafiropulos
3 min readOct 26, 2020
Project Euler #22 in Arturo

Basically, this is the way the story goes:

I’ve been programming since I was a kid, back in 1994, and I’ve always had a deep interest not only in programming but also in the things many could probably find boring: programming languages, compilers, kernels, and chess engines.

Guess what: 26 years (and a weird choice of deciding to study… medicine) later, I’m still interested in the very same things lol — and have designed at some point all of these in different languages and different implementations.

Although my main “business” is publishing and mac applications, I still keep coming back to what I really love. And although it doesn’t pay the bills by itself, it’s surely very rewarding.

This is how the idea of Arturo came up (aside from being my little pet Emperor scorpion that is):

to make something that I myself will use as an easier do-it-all scripting language, you know… automation scripts, templating, latex generation and perhaps help me a bit in the packaging of webview-based applications (think of Electron, but something far more manageable and without having to deal with Node.js and the likes).

As to what this language would look like, believe me, I’ve drawn numerous sketches throughout the years. Adding, removing, re-thinking (and again rethinking things over). And that’s pretty much how the language has been shaped.

Basically, the main ideas behind Arturo are:

  • Simple, flexible syntax (hence the REBOL inspiration; perhaps it’s the best least-known language out there — not that I don’t see why…)
  • No OOP, nor anything overly bloated like that
  • Ability to create whatever DSL you want easily
  • Easy access to functional programming
  • Keep the easy-and-readable part of REBOL but still allow for shorter, more symbolic syntax if needed (there’s already a lot of such syntactic sugar in Arturo). I’m not saying it has to resemble BF, but I definitely appreciate lots of relevant features of Ruby or Haskell.
  • Be fully independent, no install 1–2–3 in order to get something basic working
  • Batteries-included philosophy (I hate to have to import one million different libraries only to do something simple and also remember what they are called. Most core functions should already be included.) Also, size doesn’t matter. (not meaning that I’m willing to end up with a 10MB binary)
  • Ambitious, but oh well: go full self-hosted.

Whether Arturo and I will make it or fade into history, remains to be seen.

The sure thing is the journey has been more than awesome.

If you want to see what’s all about, just have a look at the official repo. The official Language/Library Reference is also up.

Please, let me know what you think — all ideas/feedback/contributions are more than 100% welcome!

--

--

Yanis Zafiropulos

Programmer, Publisher, Chess player, Arturo programming language author