Computer Laboratory

Technical reports

Programming for humans: a new paradigm for domain-specific languages

Robin Message

November 2013, 140 pages

This technical report is based on a dissertation submitted March 2013 by the author for the degree of Doctor of Philosophy to the University of Cambridge, Robinson College.


Programming is a difficult, specialist skill. Despite much research in software engineering, programmers still work like craftsmen or artists, not engineers. As a result, programs cannot easily be modified, joined together or customised. However, unlike a craft product, once a programmer has created their program, it can replicated infinitely and perfectly. This means that programs are often not a good fit for their end-users because this infinite duplication gives their creators an incentive to create very general programs.

My thesis is that we can create better paradigms, languages and data structuring techniques to enable end-users to create their own programs.

The first contribution is a new paradigm for programming languages which explicitly separates control and data flow. For example, in a web application, the control level would handle user clicks and database writes, while the data level would handle form inputs and database reads. The language is strongly typed, with type reconstruction. We believe this paradigm is particularly suited to end-user programming of interactive applications.

The second contribution is an implementation of this paradigm in a specialised visual programming language for novice programmers to develop web applications. We describe our programming environment, which has a novel layout algorithm that maps control and data flow onto separate dimensions. We show that experienced programmers are more productive in this system than the alternatives.

The third contribution is a novel data structuring technique which infers fuzzy types from example data. This inference is theoretically founded on Bayesian statistics. Our inference aids programmers in moving from semi-structured data to typed programs. We discuss how this data structuring technique could be visualised and integrated with our visual programming environment.

Full text

PDF (1.6 MB)

BibTeX record

  author =	 {Message, Robin},
  title = 	 {{Programming for humans: a new paradigm for domain-specific
  year = 	 2013,
  month = 	 nov,
  url = 	 {},
  institution =  {University of Cambridge, Computer Laboratory},
  number = 	 {UCAM-CL-TR-843}