The expressiveness of a programming language is informally
characterised as the ease with which ideas and concepts are naturally
mapped into the language.
This gap between intuition and formalisation can be reduced with good
languages but clearly not completely removed. However, we argue that
even when we cannot express the concepts themselves it is nevertheless
useful to express their existence and relationships with other
concepts.
I will introduce extremely simple models, inspired by ontology models
and refinment models, but making no assumption whatsoever about the
internal structure (if any) of the involved abstraction levels. These
models describe the informal part of a program in a way that can be
used for actual computation and software composition. They can
naturally capture computations crossing abstraction levels
(compilation and interpretation, debugging and decompilation, etc.).
They are centered around the notion of identity -- e.g. in which
sense can we say that an image encoded in JPEG is "the same" as the
original one given that JPEG is a lossy file format? Finally, we will
see how they may lift the need for standardisation, including
(reflectively) for their own formalism.
This seminar can be heard as a case against standards in the computer
research and industry, defending the point of view that they are
unnecessary and counter-productive for software composition,
interoperability, and data exchange formats and protocols.
|