The best way to understand the various programming paradigms (=programming style or method) is to have an overall view of the most important variants: Imperative programming, declarative programming, procedural programming, functional programming and object-oriented programming. In a simplified way this can be summarized as follows.

The history of programming begins with programming languages telling the computer exactly which arithmetic operations to perform. These operations are usually machine-oriented programming code. This is called imperative programming. In the next evolutionary phase of programming languages the high-level languages followed: The description of the tasks to be executed takes place on a more abstract level, these programming languages are easier to "read" and more complex tasks can be represented in comprehensible programming code; the compiler finally "translates" this declarative programming into machine language.

The so-called procedural programming falls into the class of imperative programming, but introduces an important structuring principle: Tasks are broken down into clearly arranged functions, for example "Deliver with the average value of all salaries of employees in a specific Controlling department" or "Output the transferred data in PDF, XML and CSV formats". These functions are easy to call up, parameters are transferred and the results can be processed further. This principle makes a program much clearer. Typical languages for procedural programming are Fortran, COBOL, C.

The functional programming falls into the category of declarative programming. Programs with functional programming describe algorithms very generically without describing the processed data objects more precisely; this means that many "ancient" programs from the 1950s have not had to be adapted since then. Typical programming language: Haskell

Especially widespread today is object-oriented programming. The basic principle (to simplify programming) is to define so-called objects: On the one hand, these have attributes, such as article number, article description, number of articles in stock, expiry date, storage location and so on. On the other hand, there are methods that describe processes such as "Delete article", "Create new article", "Withdraw article from the warehouse". When developing applications, programmers can usually access "proven objects", use existing attributes and the corresponding methods. This speeds up programming significantly.


The author is a manager in the software industry with international expertise: Authorized officer at one of the large consulting firms - Responsible for setting up an IT development center at the Bangalore offshore location - Director M&A at a software company in Berlin.