Semantic Density

Semantic Density is a metric of the readability of a program by a non-programming domain expert.

Programs work with representations of some domain. Every program must thus be read in two ways:

  1. as describing changes in the computer
  2. with reference to the domain

The programmer must understand enough of the first to have the computer animate the representational scheme – adequately to the needs of the domain expert. The domain expert can participate in this process most closely when able to follow the domain logic in the program.

This is possible when a sufficiently high proportion of the tokens (eg names of variables or functions) are drawn from the vocabulary of the reader. (Writers of natural languages, under a general injunction to write with their readers in mind, will find nothing surprising in this.)

Leaving aside any familiarity with programming, the minimum threshold appears to vary little between readers, and is in all cases high. Even a low proportion of ‘foreign’ terms degrades readability.

Exceptions to this are

Two common features of programming languages obstruct this effect:

Certain writing techniques facilitate it:

Further reading

Expository Programming by PaulBerry, Vector 22:3
KennethIverson used APL in the 60s to develop readable, executable models of key processes in different scientific fields

Software Development as a Collaborative Writing Project by Brian Bussell (Director of Pensions, Norwich Union Life) and StephenTaylor
Writing software is more like drafting legislation or writing a screenplay than it is like engineering. Paper presented at XP2006, Oulu, June 2006.

Pair Programming with the Users by StephenTaylor, Vector 22:1
Why write specifications when you can collaborate with the users on executable code? Introduces the concept of 'semantic density' in constructing Domain-Specific Notations.

StephenTaylor

SemanticDensity (last edited 2009-04-09 10:40:30 by KaiJaeger)