|Analysis||Requirements & Principles||
|building blocks: Features||
[3KBM] Conrad Bock: Three Kinds of Behavioral Models; JOOP July/Aug 1999.
ADD: set oriented programming in SETL (procedural), Miranda (functional), Z (specification) ...
ADD: conceptual programming: A Conceptual Perspective on the Comparison of Object-Oriented Programming Languages
ADD: William Kent: Participants and performers: a basis for classficing o-o languanges; 67-70 in: H Kilov, B Harvey (eds): Proc of WS on Specification of Behavior Semantics in O-O Information Modeling (at OOPSAL'93).
«[E]ach [programming] language comes along with a certain mindset or worldview, that is, a certain way of thinking, which can be hard to change, because one is not even aware of having it - it just "seems natural" and goes without question» [Goguen]
We will distinguish the following paradigms of
|models of computation:||code execution:||software decomposition:|
For an overview on paradigms (imperative, object-oriented, functional, relational) and their influence see chapter 1 of [Leda].
The object-oriented paradigm
The procedural paradigm
A programming language supporting that MOC (ie., with static and dynamic semantic domains corresponding to the MOC's entities and events) allows computations thus conceptualized to be expressed/specified in program code[>].
Compare this to system models (or models of the world), and to (partial) structural meta-models of object-oriented programming languages with memory-object semantics (C++) or with implicit reference semantics (Java, and similarly Smalltalk, and Eiffel without expanded objects).
See a comparison of Applicative model and Update model for streams of data or timed events.
provider: system request mesg (undir.): op-name + parameters
Imperative Update Models are the main (only?) example:
|primitive op: update|
Applicative Models are the main (only) examples:
provider (single service): operation primitive op: application request mesg (directed): parameters
additional provider: store request mesg to storage: new value OR 'read'
«In all other languages we've considered [Fortran, Algol60, Lisp, APL, Cobol, Pascal], a program consists of passive data-objects on the one hand and the executable program that manipulates these passive objects on the other. Object-oriented programs replace this bipartite structure with a homogeneous one: they consist (partially in Simula, exclusively in Smalltalk) of a set of data systems [i.e. objects, c.f. p. 43], each of which is capable of operating on itself.» [PLing, 249]
|MOC||pure applicative ||applicative storage ||update ||other ||
1. sequence of computation steps: ||algorithmic ||monadic style ||procedural ||imperative || ? ||
2. how outputs relate with inputs: ||declarative ||pure functional ||impure functional || ? || ? ||
3. response to stimuli: ||rule-based|| ? || ? ||state-rules ||event-rules|
|Algorithmic Code focuses on, and thus specifies explicitly, the sequence (thread) of computation steps (the control flow), and not so much on how values depend on each other [3KBM].|
|Declarative Code specifies how outputs depend on inputs (it has a dataflow model in the background). The order of steps follows implicitly from this dependency [3KBM].|
|Rule-based Code: Focus on reaction to stimuli means specifying which steps to take when a stimulus occurs (it has a state-machine-with-I/O model in the background). The sequence of steps is determined by the interplay of stimuli from the environment and between the computational units [3KBM].|
parbegin S1; S2; ... Sn; parend;
for i := 1 to n doparallel ... parend;
parif a==0 then C1;  a<=9 then C2;  a>=9 then C3;  iseven(a) then C4; parend;
On the object-oriented paradigm in general:
|Analysis||Requirements & Principles||Paradigms||Abstractions||Domains||Features||foundational||safety||flexible typing||Syntactics||Defining PLs||Language List|