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.