自分のための備忘録的なものとしてQiitaを書いていますが、これが誰かの助けになれば幸いです。
また、プログラミング初心者であるため、内容に誤りがあるかもしれないので、誤りがあれば指摘してください。
プログラミングパラダイム
プログラミングパラダイムとは、プログラムの見方を与えるものであって、言語ごとに対応できるパラダイムの種類や数が異なります。
まずは対照的なものとして、命令型と宣言型があります。
それらとは別のベクトルとして、オブジェクト指向があります。
プログラミングパラダイムはもっとありますが、今回はこれらについて書きます。
オブジェクト指向
オブジェクト指向言語では、オブジェクトをデータとメソッドの組み合わせとして扱います。
以下の流れで記述していきます。
- オブジェクトのテンプレートとしてクラスを定義。
- クラスからオブジェクトをインスタンスとして生成。
- オブジェクトを捜査して処理を実行する。
主な言語では、PHPやPython、C++、Java、Rubyがあります。
命令型
手続き型と同義で扱われることが多いです。
これは、命令や命令を連結した手続きを組み合わせて記述していくものです。
PHPやPython、C++、Java、Rubyなど、有名な言語はほとんど命令型です。
ある計算結果を利用して次の計算をするなど、状態遷移のある処理をするのに向いています。
しかし、命令の組み合わせで状態が変更されることにより、入力に対して予期せぬ結果が出力してしまう、”プログラミングの副作用”が起きることがあります。
宣言型
問題の性質や意味、制約を記述します。
処理手順はプログラミング言語の処理系に任せます。
身近な言語にはSQLがあります。
関数型
引数に対して特定の値を返すものです。
入力に対して出力が安定しているので、副作用は起きにくいです。
おもな言語は、Haskell、Lisp、Scalaがあります。
拡張性が高いことがメリットとして挙げられます。
論理型
プログラムは論理式の組み合わせによって記述されます。
主な言語はPrologであり、自然言語処理に優れています。
事実と規則を記述し、最後に質問を与えることで処理系が推論して回答を出します。
解放のプロセスを定義することが難しい問題に適しています。