Interview with Maxime Chevalier-Boisvert before PolyConf 17

Maxime Chevalier-Boisvert completed a PhD degree with a concentration in compiler design at the Université de Montréal. Her thesis was focused on Just-In-Time (JIT) machine code optimization techniques for dynamic programming languages (e.g.: JavaScript, Python, etc.).

How did you get into programming?

I first played with Microsoft’s QBasic when I was about 10 years old. I didn’t speak much english then, and there wasn’t anyone to teach me, so I didn’t have an easy time. I would browse through the QBasic help pages and try to understand what I could. I wrote many programs with lots of spaghetti code that implemented colorful animations, but I didn’t know what a function was. I found old books about basic at the school library, but the programs usually didn’t work in QBasic, because they were aimed at 1980s computers like the Commodore 64.

I got into programming more seriously when I was 15, circa 2000. I was somewhat more fluent in english then, and had internet access at home. I was able to find tutorials and helpful people online. I started learning C++ and working on a 3D game engine. Like everyone else, I wanted to create an epic video game. It took me about a year to have a moderate level of competency in the language. I never did complete my video game, I kept adding new features to my 3D engine and never quite finishing them, but I did have a lot of fun learning to program.

What is your presentation about?

My presentation is about ZetaVM. It’s a virtual machine I’m building for dynamic languages. One of its core objectives is to make it easy for anyone to create their own programming language. It’s aimed at making it easy to build a language with semantics similar to Python, JavaScript, Lua, Ruby or Scheme. The VM will have built in support for garbage collection, dynamic typing, extensible arrays, an object model similar to JS, etc. Right now it comprises an interpreter only, but I did my PhD in compiler design, and I intend to built a JIT what will deliver competitive performance.

ZetaVM will do things differently than other platforms.

I see an experiment and an opportunity to try constructing a system with different building blocks from other more traditional VMs. For instance, I intend to encourage people to do graphics (both 2D and 3D) purely procedurally, using pixel shaders only (think demoscene and raymarching). The aim is for ZetaVM to eventually provide transparent GPU acceleration for code written in any language running in the VM. ZetaVM will not give you access to a million UI objects as the Java VM or the HTML DOM do, it will have a more functional approach to graphics, where you assemble your own constructs by assembling simpler primitives. This probably sounds like lunacy to many people, but it will produce interesting results.

To make things clear, I’m building ZetaVM for fun. I would like the end result to be a useful system, but I also want the system to be free of constraints imposed by trying to satisfy the needs of every possible use case in the industry.

This platform will be different, and I don’t know if it will ever become widely popular, but I’m sure that it will get people talking, and if it ends up inspiring other platforms and programming languages down the line, I consider that a good outcome.

What concepts do you recommend people be familiar with to maximize their experience with your presentation?

People should have some idea how a parser works, they should know what bytecode and a stack machine are. Familiarity with JavaScript will come in handy. Some experience with pixel shaders and functional programming may also be useful.

What are you excited about in 2017?

In all honesty, I’m excited about my own project, and the features I will be rolling out. I really enjoy working on ZetaVM. I think that, because I’m taking a different approach in the design of this system, doing things that fly in the face of the design of other platforms, ZetaVM will get people talking (it already is!). I hope to be able to show people that some things they didn’t think were possible are actually quite possible. That’s when things will get really interesting :)

Can you tell us something surprising or amusing that you’ve learnt recently about programming?

I don’t know about amusing, but I think it was quite fascinating and scary to see the work that was done by Google on the Neural Turing Machine and such.

They are already able to automate some very basic programming tasks.

I think they’re still quite far from being able to automate the work of every programmer at this point, because it seems to me that you would need a machine with truly general artificial intelligence to do that, but it raises interesting questions.

If programmers automate programming, they will eventually themselves out of a job. In general, we tend to think that programming jobs are the last jobs that will be automated, but that might not be true, because you don’t even need a physical body and a real-world presence in order to write code. Some people believe that automation will turn the world into a utopia, but seeing the way our society has distributed the increase in wealth due to technological progress in the last 30 years, I have my doubts.