The language muddle and the system middle

Stephen Kell

We all know that modern programming environments like Python or JavaScript are worlds apart from old-fashioned C, Fortran and their contemporaries, right?

In this talk I’ll talk about why this might not be true. I’ll describe some surprising connections between two kinds of systems: the “old world” Unix-style ahead-of-time compilers, linkers and the like; and the “new world” language environments such as JavaScript, Python, Ruby and so on that are supported by a virtual machine providing highly dynamic operations.

In particular, I’ll talk about why the C language can be viewed as a dynamically safe language; why linkers are like garbage collectors; and why custom memory allocators in C are in some ways a more usable kind of foreign function interface (FFI). In each case I’ll be trying to persuade you that apparently diverse programming environments are more alike than they appear, and that not-so-distant future systems can harness this realise our existing languages (not just new ones!) in radically more usable, more interoperable and better-tooled ways.

Towards the end, I’ll recap some recent research towards these goals, by myself and others, and outline some near-term steps to take things further.