expresses computation by fully-controlled/specified manipulation of named data in a step-wise
fashion. Foundation of these is the
stored program concept.
Languages include Fortran, Algol, Pascal, C.
Basically the same as imperative, but related variables and operations on variables are organized into
. Access privileges of vars and methods (operations) in objects can be defined to reduce (simplify) the
interaction among objects. Objects considered the main building blocks of programs, which support features like
inheritance, class hierarchy, polymorphism. Smalltalk, C++, Java, C#
Expresses computation in terms of mathematical functions. Supposed to be easy to understand,
simple to use. No concept of memory locations in functional programming languages. Each function takes in a number of
values as input (parameters) and produces a single return value. Return values not stored. ML, SML, Lisp/Scheme
Expresses computation in terms of logic predicates. A logic program is a set of facts, rules, questions.
Programs compare a question to each fact and rule in given fact and rulebase. Receive yes/no. Prolog.
Orthogonality, control structures, data types and data structures, syntax design, support for abstraction, expressiveness,
type equivalence, strong vs weak type checking
exception handling, aliasing.
Reliability, readability, writeability,
support for abstraction
defines the vocabulary of a language. Units include:
(e.g. final, const),
(+,-,<, >, AND, NOT),