Creating A Programming Language With Xojo

I've been fascinated with programming languages for the last 3 or 4 years, ever since I started working on a personal home assistant project in Xojo. I had a need for a scripting language that the assistant would run and for various reasons Xojoscript wouldn't cut it.

From that tinkering, Roo was born. Roo was my first attempt at creating my own programming language. Mostly I'd call it a success. The language was Python-like and pretty powerful. Thanks to Roo I was asked to present at XDC in Miami in 2019 and the talk was received pretty well.

Roo had a few short-comings. Firstly, it was slow. I implemented it as a tree-walker interpreter. This was the same approach that Ruby took up until about version 1.9. Secondly, the code was sloppy - afterall, I didn't really know what I was doing at that stage.

Fast forwards a year or so and I decided to try again. This time I worked on an (unreleased) language running as bytecode on a stack-based virtual machine. This was much much faster and pretty good (even if I do say so myself). The language syntax itself however was still in flux. It again was Python-like (using indentation) and, whilst powerful, become overly complex to implement.

Since I recently started using YouTube to try to teach people about programming using Xojo I've had a lot of feedback and requests to target a more advanced audience, not just newcomers. It occurred to me that implementing a programming language could be a good topic / project to use as a teaching platform. Hence the idea to create a third language (called Objo) and build it step-by-step on YouTube. This time the language is BASIC-like (similar to Xojo) and is fully object-oriented. I've scaled back its ambitions (no planned support for modules, anonymouse functions and a few other things) to make it a realistic target.

I hope it'll be of interest to some people. You can find the playlist of videos on YouTube here. The open source GitHub repository is here. Please feel free to leave a comment on one of the videos or drop me an email if you find it interesting.