Functional programming is a programming paradigm that uses functions and avoids side effects, mutable data, and state changes. It is based on lambda calculus. Popular functional programming concepts include map, reduce, filter, take, drop, head, and tail. Functional programming languages like Haskell, ML, Scala, Clojure, and F# are used by companies like Twitter, Facebook, and Apache for applications involving big data processing.