The style of programming, with appropriate language and run-time support, that recognizes persistent data (see persistence). It is based on the view that persistence is orthogonal to data type, so that programmers should not be restricted in the types for which persistent data may be created, and that with appropriate declarations no special statements should be required to handle persistent data; in particular there should be no explicit input/output operations for such data.
A persistent programming language has constructs that define the lifetimes of data objects (as well as their types), without prescribing how they are stored. Programs that are written in such a language reference and use data in the same way whether or not it is persistent. (In contrast, programming using a database or filing system requires explicit operations that read the persistent data from backing store into main memory, and subsequently write it out if it has been modified.)