Functional programming is a popular paradigm in computer science, but it can be referred to by a number of synonyms. One synonym for functional programming is declarative programming. This term reflects the fact that functional programming is concerned with the what, rather than the how, of programming. Another synonym is pure programming. This term emphasizes functional programming's emphasis on using pure functions, which are functions that always return the same output for a given input. Other synonyms for functional programming include immutable programming and higher-order programming. Immutable programming emphasizes the importance of avoiding mutable state, while higher-order programming emphasizes the use of higher-order functions, which can take functions as input or output.