I can enumerate many features of functional programming, but when my friend asked me Could you define functional programming for me? I couldn\'t.
From wikipedia:
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast with the imperative programming style that emphasizes changes in state.
Using a functional approach gives the following benefits:
There is a great article with more detail here.