In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
|Uses Immutable data.
|Uses Mutable data.
|Follows Declarative Programming Model.
|Follows Imperative Programming Model.
|Focus is on: “What you are doing”
|Focus is on “How you are doing”
|Supports Parallel Programming
|Not suitable for Parallel Programming
|Its functions have no-side effects
|Its methods can produce serious side effects.
|Flow Control is done using function calls & function calls with recursion
|Flow control is done using loops and conditional statements.
|It uses “Recursion” concept to iterate Collection Data.
|It uses “Loop” concept to iterate Collection Data. For example: For-each loop in Java
|Execution order of statements is not so important.
|Execution order of statements is very important.
|Supports both “Abstraction over Data” and “Abstraction over Behavior”.
|Supports only “Abstraction over Data”.
Functional programming languages are specially designed to handle symbolic computation and list processing applications. Functional programming is based on mathematical functions. Some of the popular functional programming languages include: Lisp, Python, Erlang, Haskell, Clojure, etc.