A small matter of programming

Published 2021-02-25

https://mitpress.mit.edu/books/small-matter-programming

An excellent book on end-user programming. A strong counter-argument to the widespread assumption that all we need to do is turn existing language models into pretty point-and-click diagrams.

End-user programming is needed because it's impossible to predict in advance what the user will need, and expensive to cover all the options

Natural language is poorly suited to user interfaces, because natural language is disambiguated by context and common knowledge, which computers so far lack

In natural language interfaces, users have to learn the undocumented subset of their natural language that the machine understands correctly

We don't drive a car by talking to it, but by providing an interface which tightly couples the users body to the problem domain

Rather than a uniform natural language, many professions have their own specialized dialects (ie we have specialized interfaces even in natural language)

Many successful notations are not even speakable - eg math proofs, circuit diagrams

Examples of 'regular' people using formal languages with complex syntax: musical notation, crochet/knitting patterns, baseball scoring

Crochet and knitting patterns sometimes contain modular functions

The rise of digital tools means that experts are no longer able to design/modify their own interfaces/notations like they did when using paper

Critical property of end-user languages - allow users to focus on the task instead of the tool

Accountants, biologists, musicians may all be using different high-level libraries, but today all of them are forced to also be conversant in the language of arrays and instruction pointers

[In programming languages] it is hard to see what combination of low-level primitives will produce the correct task-related behavior.

A mathematician, in a broad sense, already knows Mathematica.

The goal of a tool is not to be 'natural', but to be quickly learnable and efficiently usable

Rather than thinking of a non-programmer who needs to be coddled, think of a domain expert whose strengths can be augmented