機能的なプログラミング言語は、「純粋な関数」の使用を強調するプログラミングパラダイムです。これは、副作用がなく、特定の入力に対して常に同じ出力を返す関数です。彼らは、声明や命令的なコマンドではなく、数学的機能、再帰、表現に依存しています。機能的なプログラミング言語は、コードについて簡単に推論し、プログラムの状態の変更によって引き起こされる可能性のあるバグを回避できるように設計されています。

対照的に、命令的なプログラミング言語は、割り当てやループなど、実行する「必須」コマンドのセットをコンピューターに提供するという考えに基づいています。これらの言語は、多くの場合、変数と可変状態の使用に依存しているため、コードについて推論するのがより困難になり、プログラムの状態の予期しない変更によって引き起こされるバグにつながる可能性があります。

機能的なプログラミング言語は、計算とデータを扱う方法において、命令的な言語とは異なります。機能的言語では、機能は一流の市民であり、データは不変であるため、作成されると変更できないため、コードについて推論し、バグを回避できます。

機能的なプログラミング言語の例には、LISP、スキーム、Haskell、OCAML、およびF＃が含まれます。命令的なプログラミング言語の例には、C、C ++、Java、Python、C＃が含まれます。

多くの最新のプログラミング言語が機能的および命令的なプログラミングパラダイムの両方をサポートしていることは注目に値します。そのため、同じ言語で機能コードと命令コードの両方を記述することが可能です。
A functional programming language is a programming paradigm that emphasizes the use of "pure functions" - functions that have no side-effects and always return the same output for a given input. They rely on mathematical functions, recursion and expressions rather than statements and imperative commands. Functional programming languages are designed to make it easy to reason about the code and to avoid bugs that can be caused by changes in the state of the program.

In contrast, imperative programming languages are based on the idea of giving the computer a set of "imperative" commands to execute, such as assignments and loops. These languages often rely on the use of variables and mutable state, which can make it more difficult to reason about the code and can lead to bugs caused by unexpected changes in the state of the program.

Functional programming languages are different from imperative languages in the way they treat computation and data. In Functional languages, functions are first-class citizens and data is immutable, which means it cannot be changed once it's created, this makes it easier to reason about the code and to avoid bugs.

Examples of functional programming languages include Lisp, Scheme, Haskell, OCaml, and F#. Examples of imperative programming languages include C, C++, Java, Python and C#.

It's worth noting that many modern programming languages support both functional and imperative programming paradigms, so it's possible to write both functional and imperative code in the same language.