The focus of a functional programming language is describing what is to be computed, rather than what is to be computed.
Functional programming languages are generally strongly typed, and have built-in memory management. The advantage of their use is that programs are often shorter, and easier to understand. They can also be easier to design and maintain that imperative programs, but can suffer in terms of performance.