It is generally a process of developing software simply by composing pure functions, avoiding or minimizing side effects, shared data, and mutable data. | It is generally a process of describing steps that simply change the state of the computer. |
It mainly focuses on what programs should be executed or operate i.e., results. | It mainly focuses on describing how the program executes or operates i.e., process. |
It uses functions to perform everything. | It uses statements that change a program’s state. |
Its advantages include bugs-free code, increase performance, better encapsulation, increase reusability, increase testability, etc. | Its advantages include easy to learn, easy to read, a conceptual model is easy to learn, etc. |
Its characteristics include low importance of the order of execution, stateless programming model, primary manipulations units, primary flow control, etc. | Its characteristics include a sequence of statements, contain state and can change state, might have some side effects, stateful programming model, etc. |
These programs are generally structured as successive nested functional calls. | These programs are structured as successive assignments of values to variable names. |
In this, the command execution order is not fixed. | In this, the command execution order is fixed. |
It involves writing programs in terms of functions and mathematical structures. | It involves writing programs as series of instructions or statements that can actively modify memory. |
It is more expressive and safer as compared to imperative programming. | It is less expressive and safer than compared functional programming. |
It requires the explicit representation of data structures that are used. | It requires data structure to be represented as changes to state. |
In this, new values are usually associated with the same name through command repetition. | In this, new values are usually associated with different names through recursive function call nesting. |