Language Categories
Procedural Language
Procedural Language
- A language which states how to compute the result of a given problem. This term encompasses both imperative and functional languages.
- Imperative Language
- A language which operates by a sequence of commands that change the value of data elements. Imperative languages are typified by assignments and iteration.
- Declarative Language
- A language which operates by making descriptive statements about data, and relations between data. The algorithm is hidden in the semantics of the language. This category encompasses both applicative and logic languages. Examples of declarative features are set comprehensions and pattern-matching statements.
- Applicative Language
- A language that operates by application of functions to values, with no side effects. A functional language in the broad sense.
- Functional Language
- In the narrow sense, a functional language is one that operates by use of higher-order functions, building operators that manipulate functions directly without ever appearing to manipulate data. Example: FP.
- Definitional Language
- An applicative language containing assignments interpreted as definitions. Example: Lucid.
- Single Assignment Language
- An applicative language using assignments, with the convention that a variable may appear on the left side of an assignment only once within the portion of the program in which it is active.
- Dataflow Language
- A language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and the equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid.
- Logic Language
- A logic language deals with predicates or relationships p(X,Y). A program consists of a set of Horn clauses which may be:
- facts - p(X,Y) is true
- rules - p is true if q1 and q2 and ... qn are true
- queries - is g1 and g2 and ... gn true? (gi's are the goals.)
- OR-parallel logic languages try alternative resolutions in parallel
- AND-parallel logic languages try to satisfy several goals in parallel.
- Constraint Language
- A language in which a problem is specified and solved by a series of constraining relationships.
- Object-Oriented Language
- A language in which data and the functions which access it are treated as a unit.
- Concurrent Language
- A concurrent language describes programs that may be executed in parallel. This may be either
- Multiprogramming: sharing one processor
- Multiprocessing: separate processors sharing one memory
- Distributed
- Coroutines - control is explicitly transferred - examples are Simula I, SL5, BLISS and Modula-2.
- Fork/join - examples are PL/I and Mesa.
- Cobegin/coend - examples are ALGOL 68, CSP, Edison, Argus.
- Process declarations - examples are DP, SR, Concurrent Pascal, Modula, PLITS and Ada.
- Semaphores - ALGOL 68
- Conditional critical regions - Edison, DP, Argus
- Monitors - Concurrent Pascal, Modula
- Message passing - CSP, PLITS, Gypsy, Actors
- Remote procedure calls - DP, *Mod
- Rendezvous - Ada, SR
- Atomic transactions - Argus
- Fourth Generation Language (4GL)
- A very high-level language. It may use natural English or visual constructs. Algorithms or data structures may be selected by the compiler.
- Query Language
- An interface to a database.
- Specification Language
- A formalism for expressing a hardware or software design.
- Assembly Language
- A symbolic representation of the machine language of a specific computer.
- Intermediate Language
- A language used as an intermediate stage in compilation. May be either text or binary.
- Metalanguage
- A language used for the formal description of another language.
COMMENTS