【基本情報技術者試験】プログラム言語の種類と特徴
今回は【基礎理論(アルゴリズム)編】プログラム言語の種類と特徴についてご説明します。
プログラム言語には似たような名前の言語もありますが、混同しないようにしっかり覚えていきましょう!
プログラム言語について
プログラム言語とは、コンピュータに対する命令を記述するための言語のことです。
以前の記事で紹介したアルゴリズムをこのプログラム言語を用いて記述することで、コンピュータに計算などの処理を命じることができます。
一度プログラム言語がどのようなものか見てみましょう。
上記のコードはどちらも同じような処理を行う記述になりますが、左右を比べてみると読みやすさが全く違うのが分かると思います。
実は、左のコードと右のコードは同じプログラム言語でも異なる種類の言語となっています。
具体的には、左が高級言語(高水準言語)、右が低級言語(低水準言語)と呼ばれるプログラム言語になります。
高級言語は、機械にとっては理解しづらいものの、人間にとっては理解しやすい言葉で記述できる言語になっています。
一方で低級言語とは、人間にとっては理解しづらいものの、機械にとっては理解しやすい言葉で記述できる言語になっています。
低級言語には、0と1のみの2進数で構成された機械語や、機械語と文字列を1対1で結び付けたアセンブリ言語などの種類が存在しています。
(先ほどお見せした低級言語はアセンブリ言語で記述されたコードになります!)
機械が真に理解できる言葉は0と1で表現された機械語のみですが、その機械語と文字列とを1対1対応させたアセンブリ言語もコンピュータ向けの言葉なので低級言語に位置づけられます。
(DEC⇔1000, ADD⇔0101, R3⇔11 といったイメージで、機械語と文字列とが結びついているのがアセンブリ言語です。)
高級言語の種類と特徴について
ここからは高級言語の種類と特徴について説明していきますが、その前に言語プロセッサについて説明したいと思います。
先ほどお見せした高級言語の例では、mainやreturnなど、私たちが使用している“人間の言葉”が記述されていました。
それでは、0と1しか理解できないコンピュータはそれをどうやって理解すればよいのでしょうか?
答えは簡単で、コンピュータが理解できる0と1の機械語に翻訳してあげればいいわけです。
この時の翻訳係となっているのが言語プロセッサと呼ばれるソフトウェアになります。
この言語プロセッサには、1行ずつ機械語に翻訳しながらプログラムの実行を行うインタプリタと、一度コード全体を完全に翻訳しきってしまうコンパイラなどの種類が存在しています。
インタプリタは、翻訳と実行を同時に行うことができるため、書いたコードを直ぐに実行して確認することができるというメリットがありますが、実行処理が遅くなるというデメリットもあります。
一度翻訳しきってから実行を行うコンパイラの方が実行処理が速いという特徴があるんですね。
プログラム言語によって使用している言語プロセッサのタイプが異なるので、各言語の特徴を覚えながら使用している言語プロセッサが何なのかにも注意してみましょう!
※ちなみに、アセンブリ言語の場合にも当然0と1の機械語に翻訳する作業が必要になります。この場合アセンブラと呼ばれる言語プロセッサが動作します。
それでは、ここまでの内容を踏まえたうえで、高級言語に分類されるプログラム言語の一覧を見てみましょう。
もちろん世の中にはこれ以外にもたくさんのプログラム言語が存在していますが、今回はその中でも試験で問われやすい言語に焦点を当ててご紹介をしています。CとC++やJavaとJavaScriptなど、似た名前の言語も多くあるので注意して覚えるようにしてくださいね!
※一番下のJavaScriptは一概にどちらともいえないため、コンパイラ型言語とインタプリタ型言語の区分に入れていません。
Java言語について
ここまでで、様々なプログラム言語の特徴について大まかにご紹介してきました。
しかしながら、基本情報技術者試験では、Java言語について少し深堀りされた問題が出題されることがあります。
ここから先では、試験で出題されるJava言語の仕様についてご説明していきます。
- Java VM
Java仮想マシン(Java Virtual Machine)のこと。
Java VMがあればOSなどの実行環境が異なっていてもプログラムを実行できる。 - Java Beans
共通して利用されるコードをまとめて、部品化するための仕様。
プログラムの再利用などが可能になる。
まずは2つの用語をご紹介しました。
先ほどの表の中で、JavaはOSなどの実行環境に依存しないプログラムを作成できると説明しましたが、それを可能にしているのがJava VMになります。
また、Java BeansはJavaプログラムの記述を行う際の仕様のことです。この仕様に則ってプログラムを記述することで、プログラムのコンポーネント化(共通部分をまとめる事)が可能になります。
では次に、Javaの実行形態についてご説明していきます。
Javaのプログラムがどこで実行されるかの違いに注目してご覧ください。
- Javaアプレット
Web経由で読み込まれ、クライアントのWebブラウザ上で実行されるプログラム。 - Java アプリケーション
JavaアプレットのようにWebブラウザを必要とせず、ローカルなコンピュータの中のJava VMを用いて実行されるプログラム。 - Javaサーブレット
サーバ上で実行され、データ処理やHTMLの動的な生成などを行うプログラム。
利用者(クライアント)側がアプレット、提供者(サーバ)側がサーブレットなので間違えずに覚えておきましょう。
これでプログラム言語の種類と特徴についての説明は終わりです。
似たような用語が多くて大変ですが、試験で間違えないように、表などを活用しながら覚えていくようにしてください!
まとめ
- プログラム言語は人間にとって理解しやすい高級言語と機械にとって理解しやすい低級言語に大別される
- コンパイラ型言語は事前に全てのコードを機械語に翻訳する
- インタプリタ型言語は翻訳しながら実行を行う
- Webブラウザで動作するのがJavaアプレット、Webサーバで動作するのがJavaサーブレット
演習問題
1.インタプリタ型言語の特徴について最も適切なものを選択してください。
A.CやC++などがインタプリタ型の言語である
B.コンパイラ型の言語と比べて、実行処理が速い
C.一度コード全体を機械語に変換してから実行を行う
D.プログラムを直ぐに実行することができるため、書いたコードの確認・修正がしやすい
2.コンパイラ型言語の組み合わせとして最も適切なものを選択してください
A.[Java, C++, C]
B.[Perl, COBOL, JavaScript]
C.[Java, JavaScript, BASIC]
D.[BASIC, Python, Perl]
3.Javaの実行形態に関する記述として最も適切なものを選択してください
A.クライアントのWebブラウザ上で実行されるプログラムをJava VMと呼ぶ
B.Webサーバ上で実行されるプログラムをJava Beansと呼ぶ
C.クライアントのWebブラウザ上で実行されるプログラムをJava アプレットと呼ぶ
D.Webサーバ上で実行されるプログラムをJavaアプリケーションと呼ぶ
答えは次回の記事で確認してください。
前回の演習問題~解答例
1.解答:A
解説:
A.番兵法の方が条件判定が少なくて済むので効率的に探索ができます。
B.正しい記述です。
C.正しい記述です。
2.解答:A
解説:
A.正しい記述です。
B.基本探索法/番兵法の記述です。
C.ヒープ木は二分探索法では使用されません。
D.ハッシュ探索法の記述です。
3.解答:D
解説:
A.ハッシュ値が被ることをシノニムの発生と呼びます。
B.理想的な分布は一様分布です。
C.ハッシュ探索法ではハッシュ値がばらけている方が効率的に探索できます。
D.正しい記述です。