コンパイラ・インタプリタ・アセンブラとは?
コンパイラ・インタプリタ・アセンブラとは、人間が書いたソースコードをコンピュータが実行できる形式に変換する処理系の分類。コンパイラはソースコード全体を事前に機械語へ一括翻訳してから実行し、インタプリタは1行ずつ解釈しながら逐次実行する。アセンブラはアセンブリ言語(機械語と1対1に近い低水準言語)を機械語に変換する。
基本情報技術者試験の過去問では8回出題されています(2016年度〜2022年度)。
こんぱいら・いんたぷりた・あせんぶら
コンパイラ・インタプリタ・アセンブラの意味
人間が書いたソースコードをコンピュータが実行できる形式に変換する処理系の分類。コンパイラはソースコード全体を事前に機械語へ一括翻訳してから実行し、インタプリタは1行ずつ解釈しながら逐次実行する。アセンブラはアセンブリ言語(機械語と1対1に近い低水準言語)を機械語に変換する。
コンパイラ・インタプリタ・アセンブラの具体例
C言語は一般にコンパイラでビルドしてから実行する言語、Pythonは基本的にインタプリタで逐次実行される言語の代表例として扱われる。
コンパイラ・インタプリタ・アセンブラは試験でどう引っ掛けられる?
コンパイラ方式は実行前に文法エラーを一括検出できるが修正のたびに再コンパイルが必要、インタプリタ方式はすぐ実行できるが実行時にエラーが見つかりやすい、というトレードオフが問われやすい。
コンパイラ・インタプリタ・アセンブラと関連する用語
コンパイラ・インタプリタ・アセンブラが出た過去問
コンパイラにおける最適化の説明として,適切なものはどれか。
正解:ソースコードを解析して,実行時の処理効率を高めたオブジェクトコードを生成する。
要点:最適化は動作を変えず実行効率を高める目的コードを生成する
最適化とは、コンパイラがソースコードや中間表現を解析して、同じ動作をするより効率のよい目的プログラムを生成することをいう。ループ内で変わらない計算をループの外へ出す、無駄な計算や到達しないコードを取り除く、変数をレジスタに割り付けるといった変換が行われる。実行速度や使用メモリの削減が目的であり、動作そのものは変えない。
出典:平成28年度 春期 基本情報技術者試験 午前 問19(IPA)リンカの機能として,適切なものはどれか。
正解:相互参照の解決などを行い,複数の目的モジュールなどから一つのロードモジュールを生成する。
要点:リンカは目的モジュールを結合し相互参照を解決する
コンパイラやアセンブラが出力する目的モジュールには、他のモジュールで定義された関数や変数への未解決の参照が残っている。リンカはこれら複数の目的モジュールやライブラリを結び付け、相互参照のアドレスを解決して、実行可能な一つのロードモジュールにまとめる。主記憶への読込みはローダの仕事であり、リンカとは役割が異なる。
出典:平成28年度 春期 基本情報技術者試験 午前 問20(IPA)Perlの実行に関する記述のうち、適切なものはどれか。
正解:プログラムをコンパイルしたファイルを事前に用意する必要はない。
要点:Perlはインタプリタ型で、事前コンパイルなしに実行できる
Perlはインタプリタ型のスクリプト言語で、処理系がソースを読み込んで逐次解釈実行するため、実行に先立って機械語へコンパイルした実行ファイルを用意する必要がない。Windows版を含む多くのOS向けの処理系が提供され、Webサーバがなくてもコマンドラインで実行できる。デバッガも処理系に組み込まれた形で提供される。
出典:平成29年度 秋期 基本情報技術者試験 午前 問8(IPA)手続型言語のコンパイラが行う処理のうち,最初に行う処理はどれか。
正解:字句解析
要点:コンパイラは字句解析→構文解析→意味解析→最適化の順
コンパイラは字句解析、構文解析、意味解析、最適化、コード生成の順で処理する。最初の字句解析では原始プログラムの文字列を、予約語・識別子・演算子といった意味をもつ最小単位(トークン)に切り分ける。
出典:平成30年度 秋期 基本情報技術者試験 午前 問19(IPA)コンパイラによる最適化の主な目的はどれか。
正解:プログラムの実行時間を短縮する。
要点:コンパイラの最適化が狙うのは目的プログラムの実行時間短縮
コンパイラの最適化は、不要な命令の削除、ループ内の不変な計算の外出し、レジスタの有効利用などによって、生成する目的プログラムの実行効率を高める処理である。狙いはあくまで実行時の速度向上(あるいはコードサイズの削減)であり、最適化を有効にすると原始プログラムとの対応が崩れてデバッグはむしろ難しくなり、コンパイル時間も延びる。
出典:平成30年度 春期 基本情報技術者試験 午前 問18(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。