A programming language that is based primarily on writing algorithms (functions). The syntax of functional programming (FP) is mathematical, and the languages are used for applications such as artificial intelligence and distributed networks, not typically for business data processing.
Experienced FP programmers generally have strong opinions about what constitutes essential FP features, as well as which languages are more FP-like than others. However, ask any of the IT professionals you know for a definition of FP, and you will likely get a range of responses, including "huh?" The reason is that traditional programming, known as "imperative programming," also uses functions (subroutines). In fact, every C program ever written is wrapped in a "main" function that encapsulates all the other functions the programmer writes. However, FP adheres to certain principles, including the following. See function
Referential Transparency and No Side Effects
Referential transparency means that the function will always return the same value given the same set of inputs. Also called "no side effects," pure functions do not use data defined outside of the function, although a few functions in most programs deal with external events such as reading and writing a disk. Pure functions help to avoid errors in parallel operations. For example, in multithreading, data being changed in one executing thread can cause problems in another.
Functions can be treated like data, and higher-order functions can take other functions as parameters, enabling the called function to perform the algorithm in the function being passed to it.
Pattern Matching and Recursion
Instead of a series of if-then-else statements, a pattern matching statement compares an argument with a list to find a match. Recursion is a function that can call itself to repeat the processing on the next set of data. These capabilities as well as others attributed to FP can also be found in both imperative and object-oriented languages. See recursion
LISP was the first functional programming language, followed by Erlang, Scheme, Haskell, OCaml, Scala, Clojure, F# and others.