アイキャッチ(プログラミング言語の分類)
スポンサーリンク

 

すずき
当記事では、学習するプログラミング言語の選択に困っている方に、選択基準を身に付けてもらえるようプログラミング言語の分類を説明しています。

プログラミング言語の分類は大きく分けて2つ!

皆さんは学習したいプログラミング言語を選択する際に、インタプリタ型とかオブジェクト指向型など目にしたことはないですか?

それらは、数多あるプログラミング言語を分類するうえでのカテゴリの1つだと思ってください。

プログラミング言語を分類する方法は大きく分けて2つあります。

  1. プログラムの処理方法
  2. プログラミングパラダイム

それぞれについて細かく見ていきます。

①プログラムの処理方法

プログラムの処理方法は、人がプログラミング言語で記述したソースコードを実行するときに、どう処理するかによって2つに分かれます。

  1. 全てのソースコードを一度、機械語(あるいは実行環境に合わせたコード)に翻訳してから実行⇒コンパイラ型
  2. ソースコードを1文ずつ機械語(あるいは実行環境に合わせたコード)に翻訳しながら実行⇒インタプリタ型

これから、それぞれの特徴を見ていきましょう。

少し、余談ですが。

そもそも、なぜソースコードを機械語に翻訳しないといけないのでしょうか。

プログラムはコンピュータ上で実行しますが、残念ながらコンピュータはプログラミング言語が理解できないんです。

コンピュータが理解できるのは「機械語」だけです。機械語とは「0」と「1」だけで記述されたものです。

1950年代前半頃までは機械語を使ってソースコードを書いていたようですが、コンピュータが理解できても、書く側の人間が訳わからなくなりますよね。

そのため、コンピュータ上のプログラム(コンパイラ/インタプリタ)を通すことで機械語(あるいは実行環境に合わせたコード)への翻訳が可能となる、人間でも比較的理解しやすい言語としてプログラミング言語が登場したという背景があります。

1.コンパイラ型

コンパイル型は、全てのソースコードを一度コンパイラというコンピュータ上のプログラムに通し、機械語(あるいは実行環境に合わせたコード)に翻訳してから実行する手法です。

有名なプログラミング言語においては、Javaがこのコンパイラ型に当たりますので、Javaを例に説明しますね。

皆さんがJavaで記述したソースコードがあるとします。

ソースコードを実行するための環境をJRE(=Java実行環境)といいますが、JREはJavaのソースコードを理解できません。

実行前に、コンパイラによってJREが理解できるコード(バイトコード)に変換しないといけません。

以下のようなイメージです。

コンパイラ(Javaの例)

コンパイラ型だからなんなの?

というところだと思うので、プログラミングするうえでのメリット・デメリットを以下にまとめました。

メリット ・ソースコードを全て翻訳したあとに実行しているため、処理が高速。
デメリット

いちいちコンパイルしないと実行できない
コンパイルエラー(翻訳エラー)が発生した場合、エラーを除くまで実行できない

メリット・デメリットを挙げましたが、初心者がプログラミング言語の勉強をするという場面においては、コンパイルエラーは挫折の大きな要因の1つです。

また処理が高速というメリットも、勉強するうえではあまり必要ないです。ただし、企業の業務で利用するような高速の処理を求められるシステムを構築する場合には大きなメリットと言えます。

以上のことから、初心者がプログラミング言語の勉強をする際は、これから説明するインタプリタ型のプログラミング言語が良いのではないかと思います。

2.インタプリタ型

インタプリタ型は、ソースコードを1文ずつインタプリタというコンピュータ上のプログラムにて、機械語へ逐次翻訳しながら実行する手法です。

Pythonがこのインタプリタ型に当たりますので、Pythonを例に説明します。

コンパイラ型では、ソースコードを実行環境に合わせたコードに翻訳する必要がありましたが、インタプリタ型では不要です。

Pythonで記述したソースコードをコンパイルせず、インタプリタにて翻訳→実行します。

Pythonの例

コンパイラ型と同様に、インタプリタ型のメリット・デメリットを以下にまとめました。

メリット ・自分が書いたソースコードを逐次確認できるため、早期に誤りに気付いて修正できる。
デメリット

コンパイラ型に比べれば処理が遅い。

メリットはとても初心者に優しいですね。

対してデメリットですが、正直あまり気にならないレベルなので辛うじてデメリットと言える、というくらいです。

②プログラミングパラダイム

そもそもプログラミングパラダイムとは、プログラミングにおける考え方やプログラミング手法のような意味合いです。

時代とともに、プログラミングの手法が変化してきています。

そのなかでも主要なパラダイムは大きく分けて3つあります。

  1. 手続き型
  2. オブジェクト指向型
  3. 関数型

以下でそれぞれの説明をしていきます。

1.手続き型

手続き型(命令型ともいわれます)は、「どのように」処理を行うのかに注目します。

つまり、コンピュータが処理を行う手順をプログラミングします。(参考記事はこちら

手続き型のメリット・デメリットは以下です。

メリット ・ソースコードを処理順番どおりに記述すればよいため、コードを書きやすい。
デメリット

・再利用ができない。

2.オブジェクト指向型

オブジェクト指向型は処理の対象を抽象化した概念で、処理対象のデータとそのデータに対する操作をひとまとめにして扱います。(参考記事はこちら

オブジェクト型のメリット・デメリットは以下です。

メリット

・再利用ができる。
・コードの改修範囲が比較的、局所化される。

デメリット

・オブジェクト指向に関する概念が多く、理解するのに時間がかかる。
・コードが複雑になる可能性がある。

3.関数型

明確な定義がないのが正直なところですが、関数型は行う処理が「何なのか」に注目します。

つまり、定義をコンピュータに伝え、コンピュータはその定義に従って動作します。(参考記事はこちら

様々な関数を組み合わせて実装していきます。

関数型のメリット・デメリットは以下です。

メリット ・処理結果に対して原因の結び付けが容易なため、システムの動きがわかりやすい。
デメリット

・プログラマのスキルが求められるため、経験が浅いと非効率的なプログラムになってしまう可能性がある。

スポンサーリンク

主要なプログラミング言語はどれに該当する?

ここまで、処理方法(インタプリタ型/コンパイラ型)・プログラミングパラダイム(手続き型/オブジェクト指向型/関数型)を見てきました。

それぞれの分類がわかったところで、数多あるプログラミング言語がどれにあたるのか気になりますよね。

簡単にまとめた表を以下に記載しますので、ご覧になってみてください。(主要なプログラミング言語15種類)

プログラミング言語 処理方法 プログラミングパラダイム
C言語  コンパイラ 手続き型 
C++  コンパイラ 手続き型・オブジェクト指向型・関数型
C# コンパイラ 手続き型・オブジェクト指向型・関数型
Go コンパイラ 手続き型・オブジェクト指向型
Java コンパイラ 手続き型・オブジェクト指向型
JavaScript インタプリタ 手続き型・オブジェクト指向型
Kotlin コンパイラ
/トランスパイラ
オブジェクト指向型
PHP インタプリタ 手続き型・オブジェクト指向型
Python インタプリタ 手続き型・オブジェクト指向型・関数型
R インタプリタ 手続き型・オブジェクト指向型・関数型
Ruby インタプリタ 手続き型・オブジェクト指向型・関数型
Rust コンパイラ 手続き型・オブジェクト指向型・関数型
Scala コンパイラ オブジェクト指向型・関数型
Swift コンパイラ 手続き型・オブジェクト指向型・関数型
Visual Basic コンパイラ 手続き型・オブジェクト指向型

初めてプログラミング言語を学習する場合は、以下がオススメかと思います。
・処理方法:インタプリタ型
・プログラミングパラダイム:手続き型またはオブジェクト指向型

既にプログラミング言語を1つ習得していて、2~3つ目を選択しようとしている場合は、同じ分類の言語を習得するのも良いですし、異なる分類の言語を習得するのも良いでしょう。

同じ分類の言語を習得すれば学習コストが大幅に削減できます。

一方で異なる分類の言語を選べば学習コストはもちろんかかりますが、新たな問題・課題解決法を得られます。

主要なプログラミング言語の特徴や難易度について

先の章で各プログラミング言語の分類を見てきました。

それ以外に、各プログラミング言語がどのような特徴があって、難易度はどれくらいか。

さらには、どんな目的(iPhoneアプリを作りたい、Webアプリを作りたい等)に適しているのはどの言語かを説明している記事は以下です。

是非、プログラミング言語を選択するうえでの参考にしてみてください。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事