プログラミングパラダイムとはプログラミングの考え方やルール、構成、記述方法などの枠組みとなるものです。プログラミングパラダイムには数多くの種類が存在することをご存知でしょうか。この記事ではプログラミングパラダイムを一覧にし、種類やそれぞれの概要をご紹介させて頂きます。
プログラミングパラダイムとはプログラミングの考え方やルール、方向性、構成、記述方法などの枠組みとなるものです。プログラミング言語が世に誕生して以降、数多くの言語が生まれてきました。プログラミングパラダイムはこれら数多くの言語を分類したものです。プログラミングパラダイムには様々な種類が存在しており代表的なものとして命令型プログラム言語、宣言型プログラム言語、オブジェクト指向言語などが挙げられます。また複数のプログラミングパラダイムに対応するプログラミング言語をマルチパラダイムプログ命令型命令型ミング言語と呼びます。
プログラミングパラダイムの一覧について見ていきましょう。
命令型プログラミング言語とは計算をプログラム状態を変化させる記述文で実行するプログラミング言語におけるパラダイムの一種です。パラダイムの中でも最も一般的なものであり宣言型プログラミング言語と対照的な存在となっております。命令型プログラミング言語は『手続き型プログラミング言語』と同義として扱われます。特徴として「構造化プログラム」「性能のチューニングが実施しやすい」などが挙げられます。代表的な言語としてJava、Ruby、Pythonなどが挙げられますが他にも多くの有名プログラミング言語が命令型に属しております。
命令型プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
宣言型プログラミング言語とは対象の性質を宣言し、プログラムを構成するまたは近しい性質を持つプログラミングパラダイムの総称です。宣言型プログラミングは2種類の意味を有しており「①処理方法ではなく対象の性質などを宣言することでプログラミングするパラダイムを意味する」「②関数型プログラミング、論理型プログラミング、制約プログラミングの総称である」となります。代表的な宣言型プログラミング言語としてLIPS、SQLなどが挙げられます。
宣言型プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
オブジェクト指向言語とはプログラミング言語の中でも、お互いに関連するデータやメソッドに関する手続きを一つにまとめたものである「オブジェクト」をプログラムの基本的な構成として扱うものです。オブジェクト指向という概念が誕生したのは1960年代後半のことです。Simula67というプログラミング言語がオブジェクト指向言語として初めて誕生したものと言われております。現在では多くの有名言語がオブジェクト指向言語として誕生しており、代表的なものとしてJava、PHP、Ruby、JavaScriptなどが挙げられます。
オブジェクト指向プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
手続き型プログラミング言語とはコンピューターがプログラムを実行すべき命令や手続きを順に従って記述していくことで構成されるプログラミング言語の種類です。手続き型プログラミング言語は処理を順番通りに構成していくことから「コードが記述しやすい」ということや「学習コストが低い」という特徴があります。代表的な手続き型プログラミング言語としてC言語、COBOL、Perlなどが挙げられます。
手続き型プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
関数型プログラミング言語とは関数の組み合わせによって課題を解決する仕組みで構成されるプログラミングパラダイムの一種です。宣言型プログラミング言語の一種であり、関数は引数の適用から先行式の評価を後続式の適用につなげて終端の評価を導き出す式のツリー構造として定義されます。代表的な関数型プログラミング言語としてR言語、ScaLa、Pythonなどが挙げられます。
関数型プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
構造化プログラミングとは、コンピュータプログラムの開発や理解、修正を円滑に行えるよう、プログラムを整理された構造の組み合わせによって構成するプログラミングパラダイムの一種です。1968年に計算機科学者のエドガー・ダイクストラ氏によってACM機関紙へ投書された「Go To Statement Considered Harmful(goto文は有害)」をきっかけに普及したと言われております。代表的な構造化プログラミング言語としてPascal、PL/Iなどが挙げられます。
論理型プログラミングとは古典論理学の述語論理をベースにして構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、論理積、論理和、論理含意、否定、同値などの様々な論理演算を組み合わせて表現されます。論理型プログラミングもまた派生しており代表的なものとして「並行論理プログラミング」「制約論理プログラミング」「仮説論理プログラミング」などが挙げられます。
制約プログラミングとは問題を制約の集合として記述することでコンピュータに情報を与えw、コンピュータが制約を充たす答えを導き出すように構成されたプログラミング言語の種類です。宣言型プログラミング言語の一種であり、制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源となります。制約プログラミングには「制約論理プログラミング」「命令型制約プログラミング」が存在します。
その他のプログラミングパラダイムを一覧にしてご覧ください。
プログラミングパラダイム | 概要 |
イベント駆動型プログラミング | コンピュータプログラムが起動すると共にイベントを待機し、発生したイベントに従って受動的に処理を行う |
シグナルプログラミング | イベント駆動型プログラミングと同義 |
スタック指向プログラミング | スタック指向言語は、基本操作(二つの数の加算、一文字表示など)でスタックから引数を取ってくるようになっていて、結果をスタックに返す |
クラスベース | オブジェクト指向のスタイルの一種。 クラスがあり、その鋳型によってオブジェクトの実体であるインスタンスを生成する |
プロトタイプベース | オブジェクト指向のスタイルの一種。 プロトタイプをベースとしてオブジェクトを取り扱うもの |
並行プログラミング | 並行性のための構造を備えたプログラミングのパラダイム |
並行論理プログラミング | 論理プログラミングにおける並列性及び論理プログラミングによる並行処理の記述の研究から生まれた、並行プログラミングのためのパラダイム |
コンポーネント指向プログラミング | ソフトウェアシステムの様々な機能を関心の分離によって分割したもの |
メッセージ送信プログラミング(アクターモデル) | 並行計算の数学的モデルの一種 |
アスペクト指向プログラミング | アスペクト指向はオブジェクト指向の限界を補い、さらに発展させるための技術 |
契約プログラミング | プログラムコードの中にプログラムが満たすべき仕様についての記述を盛り込む事で設計の安全性を高める技法 |
データフロープログラミング | データフローの原理とアーキテクチャを用いたプログラミングパラダイム |
プログラミングパラダイムの一覧を理解するために種類やそれぞれの概要を簡単に解説させて頂きました。プログラミングパラダイムを一言で表すと『プログラミングの考え方やルール、構成、記述方法などの枠組みとなるもの』です。代表的なものとして命令型プログラム言語、宣言型プログラム言語、オブジェクト指向言語などが挙げられます。プログラミングパラダイムの一覧についてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。