Curry On
July 15-16th, 2019

Declarative - The paradigm that didn't get mentioned
Steven Pemberton
CWI, Amsterdam


Declarative programming is a programming paradigm that allows you describe what you want to achieve rather than exactly how to achieve it. Our experience has shown that it saves at least an order of magnitude in programming time and costs. The first public computer was installed in 1957 in Norwich, England. That was also the time that the first mainstream programming languages were designed, Cobol, Fortran, Algol, Lisp. At that time, computers were immensely expensive; so expensive that most companies leased them rather than buying. As part of the leasing deal, the computer would typically come with some programmers who knew how to program it already, at no extra cost. The economic realtionship was that compared with computers, programmers were essentially free. It was in that atmosphere that the first programming languages were designed: it was less important if it took a long time to program, as long as the program ran fast, and so were born procedural programming methods, where you tell the computer step-by-step how to achieve the solution. Slowly but surely, and largely unnoticed, Moore’s Switch happened: computers became cheap, and programmers expensive, giving exactly the opposite position: compared to programmers, computers are essentially free. And yet that relationship hasn’t yet had an effect on the design of programming languages: we are still telling the computers what do to, rather than what we are trying to achieve. This is why documentation is so essential in programming, because the program has only a very tenuous relationship with the problem domain. XForms (the name refers to the Form in “Form and Content”) is a Turing-complete declarative programming language, standardised at W3C, and in use around the world. This talk will explain the benefits of declarative programming in more detail.


Steven Pemberton is a researcher at CWI Amsterdam, the Dutch national research centre for mathematics and informatics. His research is in interaction, and how the underlying software architecture can support users. He co-designed the ABC programming language that formed the basis for Python and was one of the first handful of people on the open internet in Europe, when the CWI set it up in 1988. Involved with the Web from the beginning, he organised two workshops at the first Web Conference in 1994. For the best part of a decade he chaired the W3C HTML working group, and has co-authored many web standards, including HTML, XHTML, CSS, XForms and RDFa. He now chairs the W3C XForms group, and was until recently a member of the ODF (Open Document Format) technical committee. More details at