こんにちは、とほほと申します。今年からスクールでプログラミングの勉強を始めた初学者です。
プログラミング言語の分類について、自分の整理も兼ねて記事を書いてみようと思います <(_ _)>
初学者につき、もし間違いなどがあればお気兼ねなくお知らせいただけますと幸いです!
この記事では記述形式と変換形式と型付けの 3 つの観点で分類について説明します。
①記述形式で分類
記述形式は「手続き型言語」と「オブジェクト指向型言語」に分かれます。
手続き型言語
プログラムを 1 行ずつの「手続き」という細かい単位で記述し、順番通りに 1 行ずつ記述します。
- メリット:
- 1 つ 1 つの手順を明確に記述するシンプルな記述形式のため、分かりやすく効率的に作成できます。
- デメリット:
- プログラムの規模が大きくなると複雑になりやすいため、大規模な開発では管理が難しくなります。
オブジェクト指向型言語
データをオブジェクトと呼ばれる単位にまとめ、そのオブジェクトに処理を行うメソッドを関連付けます。
オブジェクトは、クラスと呼ばれる設計図に基づいて作成することが出来ます。
また、継承と呼ばれる機能によりコードを再利用することが出来ます。
- メリット:
- 類似したオブジェクトを 1 つのクラスで共通化できるため、プログラムの開発効率を高めやすいです。
- デメリット:
- 手続き型言語に比べると概念が複雑で、学習コストがかかりやすいです。
②変換形式で分類
変換形式は「コンパイラ型言語」と「インタプリタ型言語」に分かれます。
コンパイラ型言語
プログラム全体をあらかじめ機械語に変換してから実行します。「コンパイラ」は変換処理を行うプログラムのことです。
- メリット:
- 事前に変換をすべて完了させるので実行時の変換が不要になるため、比較的高速でプログラムを処理できます。
- デメリット:
- プログラムの書き方に問題があると変換処理でエラーが発生します。プログラムを変更するたびに変換処理が必要になり、すぐに動作を確認できません。
インタプリタ型言語
プログラムの実行時に 1 行ずつ機械語に変換します。「インタプリタ」も変換処理を行うプログラムのことです。
- メリット:
- 事前の準備が不要で、効率的にプログラムの動作を確認できます。
- デメリット:
- 実行のたびに変換処理が行われるので、コンパイラ型に比べると速度面では及びません。
③型付けの分類
変換形式は「静的型付け」と「動的型付け」に分かれます。
静的型付け
プログラムを実行する前に型付けを行います。たとえば、変数の宣言時に以下のように型の記述が必要になります。
//数値
int num = 123;
//文字列
String user = "蘇我馬子";
- メリット:
- プログラムを読む側にとって、型が明記されておりわかりやすいです。
- デメリット:
- 型を記述するためコードが冗長になってしまいます。
動的型付け
プログラムの実行時に適切な型が割り当てられます。たとえば、変数を宣言する際は以下のようにシンプルな記述になります。
- メリット:
- コードを簡潔に書くことができます。
- デメリット:
- プログラムを読む側にとって、一見して型がわかりにくいです。
まとめ
これまで紹介してきた分類ごとに、以下に主要なプログラミング言語の一覧表を作成してみました。
プログラミング言語名 | 記述形式 | 変換形式 | 手続き型 |
---|---|---|---|
C | 手続き | コンパイラ | 静的 |
Go | 手続き | コンパイラ | 静的 |
C++ | オブジェクト | コンパイラ | 静的 |
C# | オブジェクト | コンパイラ | 静的 |
Java | オブジェクト | コンパイラ | 静的 |
Swift | オブジェクト | コンパイラ | 静的 |
PHP | オブジェクト | インタプリタ | 動的 |
Ruby | オブジェクト | インタプリタ | 動的 |
JavaScript | オブジェクト | インタプリタ | 動的 |
Python | オブジェクト | インタプリタ | 動的 |
どの種類にもそれぞれメリット・デメリットがあるため、用途に応じて選択するべきということですね…。
それぞれの違いについて理解できてきたかな…と思います!お付き合いいただきありがとうございました!
参考記事
プログラミング言語を3つの方法で分類!特徴をわかりやすく解説
手続き型プログラミングとオブジェクト指向の違いとは?言語の特徴や例をわかりやすく解説!
コンパイラ型言語とインタプリタ型言語の違いとは?メリット・デメリットや種類を解説
【社員ブログ】第2回 動的型付けと静的型付けはどちらがトレンド?