Imperial College London
Sound Languages Underpin Reliable Programming


We believe that programming languages are at the core of computer science.

We work on:

To obtain a clearer understanding of programming languages, we first choose the most pertinent issues in a language. We describe them through formal models, aiming for a succinct and unambiguous description of key features. We clarify the issues and their formalisation with examples, and study the implications of these issues for programming, program development and language implementation.

For the development of language features, we give the rationale for the features in terms of examples, and discuss their implications. We describe the new features in terms of formal models. (It is surprising how indispensable formal models can be when conceiving of new features.) To obtain experience, we develop prototype implementations.

For the design of environments, we build prototypes of tools that support some of the language features.

My point is that a good programmer in these times does not just write programs. A good programmer builds a working vocabulary. In other words, a good programmer does language design, though not from scratch, but by building on the frame of a base language.
- Guy L. Steele Jr, 'Growing a Language'

The main task of a programmer is to invent new languages in which to express his thoughts.
- Nat Pryce