PLATEAU Keynote: How to Design a Programming Language
Programming languages - how to tell a computer what to do - are the core technology of the digital revolution, just as the invention of the wheel was the core technology enabling the design of land transportation systems, and the invention of the roof was the core technology enabling the design of cities. Roofs and wheels have been necessary, but not sufficient, for the design of effective cities and cars. Beyond basic optimisation, and occasional innovation, research into wheel and roof technologies may be important, but provides little practical guidance for successful products. In the same way, compilers and type systems are necessary, but not sufficient, for the design of effective programming languages. This talk draws lessons from the design of cars and cities to propose principles and processes for programming language design, as well as research agendas that will support those principles and processes.
Alan Blackwell is Professor of Interdisciplinary Design at the University of Cambridge Computer Laboratory. Originally trained as a control engineer, his early career in industrial automation soon led to an interest in programming as a technical user interface. He implemented his first visual programming language in 1983 (an antecedent of Harel’s StateCharts) for specifying control of a cement batching plant in his hometown Wellington. Subsequent projects included a real-time expert systems language used to implement emergency response systems that now run on the trains of London Underground’s Central and Jubilee lines. After delivering his first conference keynote on programming language design in 1995, he realised that he knew nothing about the scientific causes that made one programming language more usable than another, so left his role as design lead of novel end-user programming languages at Hitachi to study for a PhD with Thomas Green at the MRC Applied Psychology Unit in Cambridge. Since becoming an academic, he and his team have contributed to the design of programming languages, tools and techniques at companies around the world, including Microsoft, Google, Intel, Nokia, Sony, AutoDesk and many others.