目的プログラムとは?もくてきぷろぐらむ
目的プログラムとは、コンパイラが原始プログラム(人が書いたプログラム)を翻訳して出力する、機械語に近い形式のプログラム。まだ単体では実行できず、ほかの目的プログラムやライブラリ(よく使う機能をまとめた部品)とリンカ(部品を結合するソフト)で結合してロードモジュール(実行できる形のプログラム)にして初めて動く。コンパイルの過程は、字句解析(単語に切り分ける)・構文解析(文法どおりか確かめる)・意味解析(型などの意味の誤りを確かめる)・コード生成(機械語の命令を作る)・最適化(より速く小さく動くように整える)を経てここに至る。
最終更新:2026-10-09
この語が出る過去問を解く →背景
プログラムを複数のファイルに分けて作ると、1か所直すたびに全体を翻訳し直すのは無駄が大きい。翻訳の結果をいったん部品として保存し、変更のあった部分だけ作り直して最後に結合する形にすれば、作業時間を大きく減らせる。この分割翻訳を成り立たせるための中間の成果物として置かれたのが目的プログラムで、機械語に近いが番地(メモリ上の置き場所を示す番号)がまだ確定していない状態で保存される。
具体例
C言語ではソースファイルをgcc(C言語のコンパイラ)でコンパイルすると拡張子が.oの目的ファイルが作られ、複数の.oと標準ライブラリを結合して実行ファイルになる。Windowsの環境では.objという拡張子が同じ役割を担う。
試験での引っ掛け
原始プログラムとの取り違えに注意。人が書くソースが原始プログラム、翻訳の出力が目的プログラム、結合後の実行できる形がロードモジュールである。インタプリタは翻訳しながら実行するため、目的プログラムを残さない。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 基本情報技術者試験 午前 問19(IPA)
コンパイラにおける最適化の説明として,適切なものはどれか。
正解:ソースコードを解析して,実行時の処理効率を高めたオブジェクトコードを生成する。
要点:最適化は動作を変えず実行効率を高める目的コードを生成する
最適化とは、コンパイラがソースコードや中間表現を解析して、同じ動作をするより効率のよい目的プログラムを生成することをいう。ループ内で変わらない計算をループの外へ出す、無駄な計算や到達しないコードを取り除く、変数をレジスタに割り付けるといった変換が行われる。実行速度や使用メモリの削減が目的であり、動作そのものは変えない。
出典:平成30年度 秋期 基本情報技術者試験 午前 問20(IPA)
リンカの機能として,適切なものはどれか。
正解:相互参照の解決などを行い,複数の目的モジュールなどから一つのロードモジュールを生成する。
要点:リンカは目的モジュールを結合しロードモジュールを作る
リンカは、コンパイル結果である複数の目的モジュールやライブラリを結合し、外部参照のアドレスを解決して実行可能な一つのロードモジュールを作る。この処理を連係編集と呼ぶ。
出典:平成30年度 春期 基本情報技術者試験 午前 問18(IPA)解説で登場
コンパイラによる最適化の主な目的はどれか。
正解:プログラムの実行時間を短縮する。
要点:コンパイラの最適化が狙うのは目的プログラムの実行時間短縮
コンパイラの最適化は、不要な命令の削除、ループ内の不変な計算の外出し、レジスタの有効利用などによって、生成する目的プログラムの実行効率を高める処理である。狙いはあくまで実行時の速度向上(あるいはコードサイズの削減)であり、最適化を有効にすると原始プログラムとの対応が崩れてデバッグはむしろ難しくなり、コンパイル時間も延びる。
出典・参考
公式シラバスの1 基礎理論 > 3. 情報に関する理論 > (9) コンパイラ理論に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。