Process-oriented programming is aprogramming paradigm that separates the concerns of data structures and the concurrent processes that act upon them. The data structures in this case are typically persistent, complex, and large scale - the subject of general purpose applications, as opposed to specialized processing of specialized data sets seen in high productivity applications (HPC). The model allows the creation of large scale applications that partially share common data sets. Programs are functionally decomposed into parallel processes that create and act upon logically shared data.
The paradigm was originally invented for parallel computers in the 1980s, especially computers built withtransputer microprocessors byINMOS, or similar architectures.Occam was an early process-oriented language developed for the Transputer.
Some derivations have evolved from themessage passing paradigm of Occam to enable uniform efficiency when porting applications betweendistributed memory andshared memory parallel computers[citation needed]. The first such derived example appears in the programming languageEase designed at Yale University[1][2] in 1990. Similar models have appeared since in the loose combination of SQL databases and objected oriented languages such asJava, often referred to as object-relational models and widely used in large scale distributed systems today. The paradigm is likely to appear on desktop computers as microprocessors increase the number of processors (multicore) per chip.
TheActor model might usefully be described as a specialized kind of process-oriented system in which the message-passing model is restricted to the simple fixed case of one infiniteinput queue per process (i.e. actor), to which any other process can send messages.