functional programming

/ˈfʌŋkʃənl ˈproʊɡræmɪŋ/ ファンクショナルプログラミング

1. プログラミングパラダイムの一つで、関数を第一級市民とし、状態や変更可能なデータを避ける手法。

プログラムの構築において、関数を最も重要な要素として扱い、副作用(プログラムの状態変更)を避け、純粋な関数(同じ入力に対して常に同じ出力を返す関数)を多用することで、コードの予測可能性とテスト容易性を高める考え方です。数学的な関数に似ており、入力と出力の関係が明確になります。
Functional programming emphasizes immutability and pure functions. (関数型プログラミングは不変性と純粋関数を重視します。)

2. 状態変更を最小限に抑え、プログラムの振る舞いを数学的な関数のように扱うことで、命令型プログラミングやオブジェクト指向プログラミングとは異なるアプローチをとる。

命令型プログラミングが「どのように計算するか」に焦点を当て、状態を変更する手順を記述するのに対し、関数型プログラミングは「何を計算するか」に焦点を当て、状態の変更を避けることで、並行処理やテストが容易になるという利点があります。これは、プログラムが実行されるたびに同じ入力に対して同じ結果を保証する「純粋な関数」を使用することで実現されます。
Unlike imperative programming, functional programming avoids shared mutable state. (命令型プログラミングとは異なり、関数型プログラミングは共有される変更可能な状態を避けます。)
関連
Pure function
Immutability
Higher-order function
First-class function
Lambda calculus
Referential transparency
Declarative programming
Imperative programming
Haskell
Erlang
Scala
Clojure
F#
JavaScript (with functional features)
Python (with functional features)