The Two Cultures of Language Implementation
How can we make language implementations that work better for human beings? I’ll explore this question by examining what I claim are broadly the “two cultures” of implementation, namely the toolchain and the virtual machine paradigms. History tells us the former arose from expedience and the latter from humanistic ideals, although in reality their traditions confound such easy classification. I’ll illustrate this with examples drawing on approaches to tool-building and (especially) debugging. Some other themes arising will be: what features belong in a language implementation versus outside it; language implementations’ relationships with operating systems; the potential counterproductivity of performance-chasing; and how political realities colour our notions of technical merit.