A programming paradigm is a way or style of how computer programs are written. There are four fundamentally different programming paradigms:
The Models of computation are different; Object-oriented and imperative paradigms use a Turing machine, functional programming is based on lambda calculus, and logic programming uses first order logic. Today, many programming languages support more than one of the paradigms above. The choice of what paradigm to use to solve a problem is left to the software developer. Designers of Object-oriented system think of their program as a collection of interacting objects. People who use functional programming can think of it as a number of mathematical functions being applied. Different software engineers have different opinions on what paradigm is best to use. This is the same for programming languages. Very often, functional programming languages try to keep people from using assignments; in this view, it is better to use recursion to solve a problem. Another example is that of currying, used in functional programming. The idea there is to change a function taking many arguments into a number of functions, each one only taking one argument. These can then be called in turn,to get the same result.