Modern software systems are heterogeneous and complex, and the way to tame their complexity so as to support analytical techniques consists in supporting modular forms of reasoning. Indeed, program semantics is traditionally centred around the notion of program identity, that is to say of program equivalence: a program is identified with its meaning, and programs are considered equal only if their meanings are exactly the same. This view has been extremely fruitful in the past, allowing for a deep understanding of highly interactive forms of computation, like those taking place in higher-order or concurrent programs. The byproducts of all this lie everywhere in computer science, from programming language design to verification methodologies. The emphasis on equality — as opposed to difference — is, however, not in line with the way programs are written and structured in modern complex software systems. Subtasks are delegated to pieces of code which behave as expected only up to a certain probability of error, and only if the environment in which they operate makes this possible deviation irrelevant. This phenomenon is ubiquitous, but particularly apparent in fields like approximate computing, machine learning, or cryptography. Notions of program distances measuring in an inherently quantitative way how far two programs are to each other (or how far a program is to its specification), have been almost neglected by the program semantics community until relatively recently, and still have a marginal role in theoretical computer science. DIAPASoN's goal is to study differences between programs as a constitutive and informative concept, rather than by way of relational reasoning. This is accomplished by generalising four major frameworks of program semantics, traditionally used for giving semantics to, comparing, proving properties of, and controlling the usage of resources of programs, namely logical relations, bisimulation, game semantics, and linear logic.