The Structure and Legal Interpretation of Computer ProgramsVirtual
This is an essay about the relationship between legal interpretation and software interpretation, and in particular about what we gain by thinking about computers and programmers as interpreters in the same way that lawyers and judges are interpreters. I wish to propose that there is something to be gained by treating software as another type of law-like text, one that has its own interpretive rules, and that can be analyzed using the conceptual tools we typically apply to legal interpretation.
In particular, we can usefully distinguish three types of meaning that a program can have. The first is naive functional meaning: the effects that a program has when executed on a specific computer on a specific occasion. The second is literal functional meaning: the effects that a program would have if executed on a correctly functioning computer. The third is ordinary functional meaning: the effects that a program would have if executed correctly and was free of bugs.
The punchline is that literal and ordinary functional meanings are inescapably social. The notions of what makes a computer ‘correctly functioning’ and what makes a program ‘bug free’ depend on the conventions of a particular technical community. We cannot reduce the meaning and effects of software to purely technical questions because, although meaning in programming languages is conventional in a different way than meaning in legal language, it is conventional all the same.
The Structure and Legal Interpretation of Computer Programs (Preprint) (Software Interpretation ProLaLa.pdf) | 416KiB |