What is Functional Programming? [Dev Concepts #4]

What is “functional programming”, “pure function”, “functional language”, “lambda function” and “higher-order function” and how these concepts work in modern programming?