最終更新日:2026年9月4日
fe fe-technology programming
まず結論
言語プロセッサとは、プログラムや条件を受け取り、変換・解釈・生成などの処理を行うソフトウェアです。
基本情報技術者試験では、用語名を丸暗記するより、「何を入力して、何をするのか」で切り分けると判断しやすくなります。
アセンブリ言語 → 機械語
→ アセンブラ
高水準言語 → まとめて変換
→ コンパイラ
高水準言語 → 逐次解釈して実行
→ インタプリタ
目的モジュールやライブラリ → 結合
→ リンカ
実行可能なプログラム → 主記憶へ配置
→ ローダ
条件・パラメータ → プログラムを生成
→ ジェネレータ
ある処理系用のプログラム → 別の処理系用のプログラム
→ トランスレータ
別のコンピュータ環境の動作を再現
→ エミュレータ
試験中は、変換なのか、実行なのか、結合なのか、主記憶への配置なのか、生成なのかを最初に確認するのがポイントです。
特に今回のような問題では、次の3つを切り分けられると十分です。
解釈しながら実行
→ インタプリタ
目的プログラムへ翻訳
→ コンパイラ
実行可能プログラムを主記憶へロード
→ ローダ
直感的な説明
言語プロセッサやその周辺ソフトウェアは、「プログラムを別の形にしたり、実行したり、実行できる状態に整えたりする道具」と考えると分かりやすいです。
例えば、文章を扱う作業にたとえると次のようになります。
別の言葉へ翻訳する
→ コンパイラなどの変換系
文章を読みながら意味を実行する
→ インタプリタ
複数の部品を1つにつなぐ
→ リンカ
完成したものを作業場所へ持ってくる
→ ローダ
条件を指定して文章そのものを作る
→ ジェネレータ
ここで重要なのは、ローダは翻訳しないことです。
プログラムの内容を別の形へ変える
→ コンパイラなど
実行できるプログラムを主記憶へ置く
→ ローダ
この違いが分かると、インタプリタ・コンパイラ・ローダをかなり見分けやすくなります。
定義・仕組み
代表的な言語プロセッサや関連ソフトウェアを整理すると、次のようになります。
| 用語 | 主な入力 | 主な処理・結果 |
|---|---|---|
| アセンブラ | アセンブリ言語 | 機械語へ変換する |
| コンパイラ | 高水準言語 | まとめて目的プログラムなどへ変換する |
| インタプリタ | 高水準言語 | 逐次解釈しながら実行する |
| リンカ | 目的モジュール・ライブラリ | 結合してロードモジュールなどを作る |
| ローダ | 実行可能なプログラム・ロードモジュール | 主記憶へ配置して実行できる状態にする |
| ジェネレータ | 条件・パラメータ | 条件に応じたプログラムを生成する |
| トランスレータ | ある処理系用の原始プログラム | 別の処理系用の原始プログラムへ変換する |
| エミュレータ | 別環境向けのプログラムや動作 | 別のコンピュータ環境を模擬して実行する |
アセンブラ
アセンブラは、アセンブリ言語で書かれたソースコードを機械語へ変換します。
アセンブリ言語
↓
Assembler
↓
機械語
「ある処理系用のプログラムを別の処理系用へ変換する」という説明ではありません。
コンパイラ
コンパイラは、高水準言語で書かれたプログラムを、目的プログラムなどへまとめて変換します。
高水準言語
↓
Compiler
↓
目的プログラム
インタプリタ
インタプリタは、ソースコードを逐次解釈しながら実行します。
ソースコード
↓
解釈
↓
実行
↓
次の部分を解釈
問題文に「解釈しながら実行する」とあれば、インタプリタを考えます。
リンカ
リンカは、コンパイルなどで作られた目的モジュールやライブラリを結合し、実行に使うロードモジュールなどを作ります。
目的モジュール + ライブラリ
↓
Linker
↓
ロードモジュール
リンカとローダの違いは、結合するのか、主記憶へ配置するのかです。
詳しくは、リンカ(Linker)とは?静的リンキングと動的リンキングの違いでも整理しています。
ローダ
ローダは、実行可能なプログラムやロードモジュールを主記憶へ配置し、実行できる状態にするソフトウェアです。
実行可能なプログラム
↓
Loader
↓
主記憶へ配置
↓
実行可能な状態
FEでは、次の表現が強い手掛かりです。
主記憶へロードする
実行可能プログラムを読み込む
ロードモジュールを主記憶へ配置する
これらは、インタプリタやコンパイラではなくローダを考えます。
ジェネレータ
ジェネレータは、入力・処理・出力などの条件やパラメータを指定することで、目的に応じたプログラムを自動生成します。
条件・パラメータ
↓
Generator
↓
プログラム
ここで重要なのは、既存のプログラムを別形式へ変換するのではなく、条件からプログラムそのものを作る点です。
トランスレータ
トランスレータは、ある処理系用に書かれた原始プログラムを、別の処理系用の原始プログラムへ変換します。
処理系A用の原始プログラム
↓
Translator
↓
処理系B用の原始プログラム
「別の処理系用へ変換」という表現が強い手掛かりになります。
エミュレータ
エミュレータは、別のコンピュータや処理系の動作環境を模擬するものです。
本来は環境Aで動くプログラム
↓
環境B上の Emulator
↓
環境Aの動作を再現して実行
変換するのではなく、別環境の動きを再現して実行するのがポイントです。
一次情報で確認
IPAの「基本情報技術者試験(レベル2)シラバス」では、「言語処理ツールの種類と特徴」の用語例として、アセンブラ、インタプリタ、リンカ、ローダ、コンパイラなどが明記されています。
試験対策としても、インタプリタだけでなく、リンカ・ローダ・コンパイラまで同じグループとして切り分けられるようにしておくのが有効です。
科目Aでどう出る?
科目Aでは、説明文から該当する言語プロセッサや関連ソフトウェアを選ばせる形で出題されます。
まず、次の順番で確認します。
1. 何を入力している?
2. 何をしている?
3. 何が出てくる、またはどこへ置く?
選択肢を切るときは、次のキーワードが有効です。
| 問題文の表現 | 考える用語 |
|---|---|
| アセンブリ言語を機械語へ | アセンブラ |
| 高水準言語をまとめて変換 | コンパイラ |
| 解釈しながら実行 | インタプリタ |
| 目的モジュールやライブラリを結合 | リンカ |
| 実行可能プログラムを主記憶へ配置 | ローダ |
| パラメータを指定してプログラムを生成 | ジェネレータ |
| ある処理系用から別の処理系用へ変換 | トランスレータ |
| 別のコンピュータ環境を模擬 | エミュレータ |
特に、今回のような問題では次の3つを一組で覚えると判断しやすくなります。
解釈しながら実行
→ インタプリタ
目的プログラムへ翻訳
→ コンパイラ
実行可能プログラムを主記憶へロード
→ ローダ
「翻訳」と「ロード」はまったく別の処理です。
また、
高水準言語を解釈しながら実行する
ならインタプリタです。
「実行」という言葉があっても、別環境を模擬して動かすのであればエミュレータなので、何を実行しているのかまで見ます。
どんな場面で使う?
言語プロセッサやその周辺ソフトウェアは、プログラムを作成し、実行できる形に整え、実際に実行するときに使われます。
プログラムを変換する
アセンブリ言語 → 機械語
高水準言語 → 目的プログラム
処理系A用 → 処理系B用
のように、すでにあるプログラムを別の形へ変換します。
プログラムをその場で実行する
インタプリタでは、ソースコードを解釈しながら処理を進めます。
部品を結合する
リンカでは、目的モジュールやライブラリを結合して、実行に使うプログラムを作ります。
主記憶へ配置する
ローダでは、完成した実行可能プログラムを主記憶へ読み込み、CPUが実行できる状態にします。
定型的なプログラムを自動生成する
同じ構造のプログラムを何度も作る場合、条件やパラメータを指定して自動生成すると、作業を効率化できます。
入力項目
処理条件
出力形式
↓
ジェネレータ
↓
目的に応じたプログラム
よくある誤解・混同
| 混同しやすい点 | 正しい理解 |
|---|---|
| アセンブラは別処理系向けへ変換する | アセンブラはアセンブリ言語を機械語へ変換する |
| インタプリタは目的プログラムを作ってから実行する | インタプリタは逐次解釈しながら実行する |
| コンパイラは主記憶へプログラムを置く | コンパイラは目的プログラムなどへ変換する |
| リンカは主記憶へロードする | リンカは目的モジュールなどを結合する |
| ローダは原始プログラムを翻訳する | ローダは実行可能プログラムを主記憶へ配置する |
| ジェネレータは既存プログラムを翻訳する | 条件やパラメータからプログラムを生成する |
| トランスレータは解釈しながら実行する | ある処理系用から別の処理系用へ変換する |
| エミュレータはソースコードを変換する | 別のコンピュータ環境の動作を模擬する |
インタプリタ・コンパイラ・ローダの違い
ここは今回の問題で最重要です。
原始プログラムを解釈しながら実行
→ インタプリタ
原始プログラムを目的プログラムへ翻訳
→ コンパイラ
実行可能プログラムを主記憶へロード
→ ローダ
見るべき動詞は、次の3つです。
解釈する → インタプリタ
翻訳する → コンパイラ
ロードする → ローダ
ジェネレータとトランスレータの違い
元になるプログラムがある
↓
別の処理系用へ変換
→ トランスレータ
元になるプログラムではなく、条件を与える
↓
プログラムを作る
→ ジェネレータ
英語の感覚も役立ちます。
interpret = 解釈する
compile = まとめる・コンパイルする
load = 読み込む
link = つなぐ
generate = 作り出す
translate = 翻訳する
emulate = 模倣する
用語名だけでなく、英単語の意味と役割を結び付けると覚えやすくなります。
まとめ(試験直前用)
- アセンブラは アセンブリ言語 → 機械語
- コンパイラは 高水準言語をまとめて目的プログラムなどへ変換
- インタプリタは 逐次解釈しながら実行
- リンカは 目的モジュールやライブラリを結合
- ローダは 実行可能プログラムを主記憶へ配置
- ジェネレータは 条件・パラメータ → プログラム生成
- トランスレータは ある処理系用 → 別の処理系用へ変換
- エミュレータは 別のコンピュータ環境を模擬
- 迷ったら 入力 → 処理 → 出力/配置先 の順に見る