プログラミングパラダイムとは?種類やそれぞれの特徴を詳しく解説
「プログラミングパラダイム」とは、プログラミングの考え方やルール、記述方法などの枠組みとなるものです。
そんなプログラミングパラダイムは、1つではなく多くの種類があります。
ITエンジニアにとって、プログラミングパラダイムへの正しい理解はとても大切。
プログラミングパラダイムの特徴や性質を知っていれば、より質の高いプログラミングを行えるからです。
この記事では、プログラミングパラダイムの種類やそれぞれの概要についてくわしくご紹介していきます。
これからプログラミングパラダイムを学ぼうとしている方はぜひ最後まで読み進めてくださいね。
プログラミングパラダイムとは?
プログラミングパラダイムとは、プログラミングの考え方やルール、記述方法などの枠組みとなるものです。
プログラムを書くときに起こる問題に対して、「こう書いたほうがいい」という考えかたや書きかたを示すものといえます。
プログラミング言語は、世界中にどれくらいあるかご存知ですか?
その数はなんと、数100種類以上。
そして、それぞれの言語が違う特徴を持っています。
プログラミングパラダイムは、これら数多くのプログラミング言語を分類したものです。
プログラミングパラダイムにもプログラミングと同様に、様々な種類があります。
「今の働き方に不満はあるけど、日々の業務が忙しくてゆっくり考える時間がない…」
そんな悩みを持つ方に向けて【DMM WEBCAMP】では無料のキャリア相談を実施しています。
ビデオ通話で相談をすることができるため、仕事で忙しい方でもスキマ時間に気軽にカウンセリングを受けることも可能です!
プロのキャリアカウンセラーと一緒に、今後のキャリアについて考えてみませんか?
プログラミングパラダイムの代表的な種類
では、プログラミングにはどのような種類があるのかを具体的に見ていきましょう。
1.命令型プログラミング
「命令型プログラミング」は、プログラミングパラダイムの中でももっとも一般的なものの1つ。
「手続き型プログラミング言語」と同じ意味で用いられます。
命令型プログラミングは、「データや変数に対して命令を与え変化させることで、目的を達成する」というプログラミングの考えかたです。
命令型プログラミングの特徴には、
- 構造化プログラムである
- 性能のチューニングが実施しやすい
- 複数の命令を組み合わせることで複雑なことを実現できる
などがあります。
2.宣言型プログラミング言語
「宣言型プログラミング言語」は、命令型プログラミングとは対照的なプログラミングパラダイムです。
宣言型プログラミングは、以下の2つの意味を持っています。
- 処理方法ではなく対象の性質などを宣言することでプログラミングするパラダイムである
- 関数型プログラミング、論理型プログラミング、制約プログラミングの総称
代表的な宣言型プログラミング言語には「Scala」「SQL」「LIPS」などが挙げられます。
3.オブジェクト指向宣言型プログラミング言語
「オブジェクト指向宣言型プログラミング言語」は、プログラミング上の計算対象を物体化したもので名前や属性、メソッドを持っています。
オブジェクト指向とはプログラミングを手順ではなく、モノの作成と操作として見る考えかたのことです。
つまり、オブジェクトとは「物体」を意味するんですね。
オブジェクト指向宣言型プログラミング言語の特徴には以下の3つの特徴があります。
- プログラムの対象となるものを抽象化することで、システム全体を単純化する
- システム化の対象が多い大規模開発で効果を発揮する
- プログラミングだけでなく、業務分析や要求定義などの上流工程にも役立つ
4.関数型プログラミング
「関数型プログラミング」は、関数の組み合わせによって目的を達成するプログラミングの考えかたです。
関数型プログラミングの考えかたは、「データに何らかの処理を加えていく」の連続で組み立てていくもの。
プログラミングの関数というよりも、数学の関数をイメージするとよいでしょう。
関数型プログラミングでは、副作用が起こりにくいとされています。
プログラミングの副作用とは、ある機能がコンピューターの論理的な状態を変化させ、それ以降で得られる結果に影響を与えることをいう。
(出典:wikipedia 副作用 (プログラム))
つまり副作用とは、同じように呼び出しても同じ結果が返ってくるとは限らない処理のことです。
関数型プログラミングでは、この「副作用」は基本的に排除するため「プログラミングがシンプルなものになる」という特徴があります。
5.論理型プログラミング
「論理型プログラミング」は、論理式を組み合わせて結論や答えを導く考えかたです。
論理型プログラミングで代表的な言語に、「Prolog」があります。
Prologは、解決のプロセスを定義するのが難しい場合に適している言語。
具体的には、「物事の事実」と「物事との関係についての規則」を積み上げて記述し最後に質問を与え解答される、という流れでプログラミングを行います。
自ら仮説を立てて結論を導くイメージを持つとよいでしょう。
論理型プログラミングは主に、人工知能の記述言語で使われるといわれています。
6.構造化プログラミング
「構造化プログラミング」は、プログラミング言語の多くが属する最もよく知られるプログラミングパラダイムの1つです。
「順次」「反復」「分岐」という単純な制御構造を「手続き」という単位でまとめることで抽象化します。
それをさらにまとめてより抽象的な「手続き」を作る、といった階層構造によって処理を行う方法が構造化プログラミングです。
1968年に計算機科学者のエドガー・ダイクストラ氏によってACM機関紙へ投書された「Go To Statement Considered Harmful」をきっかけに普及したプログラミングパラダイムとしても有名。
(出典:wikipedia 構造化プログラミング)
代表的な構造化プログラミング言語には、「Pascal」「PL/I」などがあります。
7.制約プログラミング
「構造化プログラミング」はいつかの制約条件を宣言し、それらを満たす答えを見つけ出すための方法を記述で表現するプログラミングパラダイム。
宣言型プログラミング言語の1つであり、複雑な条件を含む多種多様な問題領域にも幅広く活用できるのが大きな特徴。
その他にも、以下の特徴があります。
- 宣言的であり、情報の流れを一方向に固定しない
- 制約される対象領域によって、制約解消の定義も解法も異なる
- 制約を利用することにより探索の効率化が期待できる
- 開発生産性が高い
- オブジェクト指向パラダイムとの親和性が高い
マルチパラダイムプログラミング言語とは?
マルチパラダイムとは、複数のプログラミングパラダイムに対応するプログラミング言語の総称です。
1つのプログラミング言語に対して、プログラミングパラダイムは1つとは限りません。
「宣言型」「命令型」「論理型」など、複数の特性をあわせもつプログラミング言語を指します。
「今の働き方に不満はあるけど、日々の業務が忙しくてゆっくり考える時間がない…」
そんな悩みを持つ方に向けて【DMM WEBCAMP】では無料のキャリア相談を実施しています。
ビデオ通話で相談をすることができるため、仕事で忙しい方でもスキマ時間に気軽にカウンセリングを受けることも可能です!
プロのキャリアカウンセラーと一緒に、今後のキャリアについて考えてみませんか?
マルチパラダイムプログラミング言語の代表的な4つ
代表的なマルチパラダイムには、どのようなプログラミング言語があるのでしょうか?
ここでは、4つの代表的なマルチパラダイムプログラミング言語をご紹介していきます。
1.JavaScript
JavaScdriptとはネットスケープコミュニケーションズ社によって開発されたプログラミング言語。
主に、動的な機能をWebページに作成するためのプログラミング言語として開発されました。
Webサイト、Webアプリ、ゲームなど様々な用途に活用できるため、主流のプログラミング言語として人気があります。
JavaScriptは、以下の3つのスタイルのプログラミングが可能です。
- 命令型プログラミング
- オブジェクト指向宣言型プログラミング
- 関数型プログラミング
また、名称に「Java」が含まれますが、JavaScriptとはまったく異なるプログラミング言語です。
開発当初は「LiveScript」と呼ばれていたが、1995年にサン・マイクロシステムズ(現・オラクル)が開発したプログラミング言語Javaが当時大きな注目を浴びており、ネットスケープとサン・マイクロシステムズが業務提携していた事もあったため、JavaScriptという名前に変更されました。
(出典:Wikipedia JavaScript)
JavaScriptについてさらにくわしく知りたい方は、こちらの記事もぜひ参考にしてください。
JavaScriptとは?6つのできることや人気が高い3つの理由を解説2.C++
C++(シープラスプラス)も代表的なマルチパラダイムプログラミング言語の1つです。
主に、「組み込み系システム」「WEBアプリケーション」「業務システム」などの開発が中心となっているプログラミング言語。
日本のITエンジニアの間では「シープラ」または「シープラプラ」と通称されます。
C++は、C言語がベースとなったプログラミング言語。
そのため派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、
- 命令型プログラミング
- オブジェクト指向宣言型プログラミング
- ジェネリックプログラミング
といった複数のプログラミングパラダイムが組み合わされています。
ハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても活用できるのが特徴です。
(出典:Wikipedia C++)
C++の学習方法や独学におすすめの学習サイトなどについて興味がある方は、こちらの記事もぜひ参考にしてください。
C++って簡単に独学できるの!?初心者にも成功確率の高い独学方法3.C#
C#(シーシャープ)は、マイクロソフト社のアンダース・ヘルスバーグ氏が設計したプログラミング言語です。
言語名の通り、C系言語として「C」や「C++」、「Java」などの影響を受けています。
C#は、以下のスタイルのプログラミングが可能です。
- 命令型プログラミング
- 宣言型プログラミング
- 構造化プログラミング
- 関数型プログラミング
- ジェネリックプログラミング
- オブジェクト指向宣言型プログラミング
C#はマイクロソフト社が開発・提供していることもありWindowsアプリケーションの開発に非常に適性があります。
(出典:Wikipedia C#)
C#にも影響しているJavaの特徴や学習方法について興味がある方は、こちらの記事もぜひ参考にしてください。
Javaとは?3つの特徴やメリット・デメリットを解説!勉強方法も紹介4.Scala
Scala(スカラ)は、オブジェクト指向宣言型プログラミングと関数型プログラミングの特徴を統合したマルチパラダイムプログラミング言語。
2001年にスイス・ローザンヌにあるスイス連邦工科大学 (EPFL) のマーティン・オーダスキー(英語版)教授によって設計されました。
Scalaの特徴は以下の通りです。
- 開発生産性を高める簡潔な表記ができる
- Javaの豊富なライブラリが使える
- 全てがオブジェクトとして扱われるオブジェクト指向言語
- 静的型付けのため、コンパイル時点でのエラー(特に型関連の)検出が得意
(出典:Wikipedia Scala)
Scalaを活用した日本国内の有名なサービスには、『SmartNews』や『Chatwork』などがあります。
Scalaの概要や独学方法についてくわしく知りたい方は、こちらの記事もぜひ参考にしてください。
Scalaを独学で学習するための4ステップ【初心者でも完全理解】まとめ:それぞれのプログラミングパラダイムには得意分野がある
今回はプログラミングパラダイムについてくわしくお伝えしていきました。
プログラミングパラダイムには、それぞれ特徴があり言語によって得意分野も異なります。
プログラミング言語を選択する際には、プログラミングパラダイムの特徴を知ったうえで選ぶようにしましょう。
より柔軟な考えかたができるようになるためにも、プログラミングパラダイムを学ぶことは大切です。
ITエンジニアとしてのスキルアップのためにも、ぜひプログラミングパラダイムへの理解を深めていってくださいね。