archives

"Three Things I Wish I Knew When I Started Designing Languages"

The transcript of Three Things I Wish I Knew When I Started Designing Languages, a talk given by Peter Alvaro somewhere or other, is up at Info Q.

Peter Alavaro's main research interest is in taming distributed systems. He starts his talk with the provocative thesis, "In the future, all radical new languages will be domain-specific languages." He talks of the evolution of his ideas about dealing with distributed systems:

  1. Little interest by designers of programming-language designers in filling huge difficulty of debugging in context of distributed systems;
  2. PLs often make handling of data somewhat implicit, even with functional programming, which he says is dangerous in distributed programming;
  3. To talk about the flow of data properly, we need to talk about time;
  4. Two things that influenced him as a grad student: Jeff Ullman's claim that encapsulation and declarativity are in tension, and Fagin's theorem (the existential fragment of second-order logic characterises NP);
  5. Idea that distributed systems can be considered as protocols specified a bit like SQL or Datalog queries;
  6. Triviality with query languages of characterising the idea of place in distributive systems: they are just another relation parameter;
  7. Describing evolution of a system in time can be done with two other things: counters and negation, leading to Bertram Ludäscher's language Statelog. But this way of doing things leads to the kind of low-level overexpressive modelling he was trying to avoid;
  8. "What is it about...protocols that they seem to require negation to express?” Turns out that if you drop negation, you characterise the protocols that deliver messages deterministically.

He summarises by saying the only good reason to design a programming language (I assume he means a radically novel language) is to shape your understanding of the problem. No regrets of being the only user of his first language, Datalist, because the point is that it shaped all his later thought in his research.

A pretty printing algorithm

A pretty printing algorithm which works for strict languages with an example implementation in ocaml.