Quite generally the word paradigm stands for a fundamental way of thinking, for thought pattern or scheme. Related to programming, the programming paradigm is about basic programming approaches, their coding, algorithms and implementation.
There are several basic principles of programming, which are called programming paradigms. Thus, object-oriented programming and functional programming.
The two main paradigms that serve as the basis for all further refinements are imperative programming and declarative programming. In imperative programming, programs are coded as sequential functions at each step; in declarative programming, the imperative programming paradigm is reversed. Thus, procedural programming and object-oriented programming follow the imperative, logical programming paradigms, and functional programming follows the declarative programming paradigm. Many programming languages also support multiple paradigms.
In addition to these main paradigms, there are many other paradigms, some of which complement each other and most of which are used in both imperative and declarative software development. In imperative programming, programs are coded as sequential step-by-step instructions. The programming paradigm gives with the imperative programming thus the sequence of the instructions and thus the order in which these are to be executed. Differently it is with the declarative programming, with which the programming paradigm of the imperative programming is reversed. With this paradigm not the solution way is specified with programming, but only the final product.
Examples are for instance the modularity as well as the structured programming, which facilitates the production of programs with readable code, the generic programming and the generative programming, with which the source code is not entered manually by the programmer, but is generated by existing software on the basis templates and input parameters. And the aspect-oriented programming, with which the programming is accomplished by component-spreading connections.