この記事では、言語プロセッサなどのプログラム開発に必要なソフトウェアについて、初心者にも分かりやすく、図解付きで丁寧に解説しています!
プログラミング言語
- プログラミング言語とは、コンピュータに命令を伝えるための言語。
- コンピュータが理解できる言語は機械語で0と1だけで書かれる。
- JavaやPython等、人間が理解出来る言語で書いたソースコード(原始プログラム)を機械語に翻訳するプログラムを言語プロセッサと呼ぶ。
言語プロセッサ
- コンパイラは原始プログラムを機械語に一括で翻訳するプログラム。
- コンパイルは字句解析→構文解析→意味解析→最適化→コード生成の順で原始プログラムから目的プログラムを作成する。
- リンカは複数の目的プログラムから実行可能なプログラムを作成する。
プロファイラ
- プロファイラは実行したプログラムを監視・分析し、プログラムの改善に役立てることができるプログラム。
統合開発環境(IDE)
- 統合開発環境とはプログラム開発に必要なツールをまとめた開発環境。
プログラミング言語には人間用と機械用がある
プログラミング言語とは、コンピュータに命令を伝えるための言語です。
人には人間語で話さないと伝わらないように、コンピュータにはプログラミング言語で命令しないと伝わりません。

プログラミング言語の中でも、コンピュータが理解できる言語は厳密には1つしかありません。0と1だけで構成される機械語です。
しかし、0と1だけの機械語を使って人間が命令を書くのは難しいので、人間が理解出来るプログラミング言語で命令を書いて、これを機械語に翻訳します。人間用のプログラミング言語にはPythonやJava等、有名なものが沢山あります。ちなみに、人間用のプログラミング言語で記述したものを原始プログラム(ソースコード)と言います。

人間用のプログラミング言語は機械語に翻訳してから実行しますが、この翻訳を行うプログラムを言語プロセッサと呼びます。
言語プロセッサは機械語に翻訳するプログラム
人間用言語で記述された原始プログラムをコンピュータは理解できないので、機械語に翻訳する必要があります。ここで登場するのが、言語プロセッサと呼ばれる、原始プログラムを機械語に翻訳するプログラムです。プログラミング言語によって使われる言語プロセッサは異なりますが、代表的な言語プロセッサであるコンパイラで翻訳できるコンパイラ型言語について紹介します。

コンパイラ型言語
コンパイラ型言語は原始プログラムを一気に機械語に翻訳します。

コンパイル
コンパイラ言語では、まず、原始プログラムを機械語で記述された目的プログラムに翻訳します。原始プログラムを機械語に翻訳することをコンパイル、コンパイルを実行するプログラムをコンパイラ、機械語に翻訳されたプログラムを目的プログラムと言います。
コンパイルは以下の手順で行います。

- 字句解析 :原始プログラムを単語単位で分解・解析します
- 構文解析 :字句解析した単語を文法的に正しい構文に直す
- 意味解析 :構文解析で作成した構文の意味を解析する
- 最適化 :効率よく命令を実行できるようにプログラムを変更する
- コード生成:機械語に変換する
クロスコンパイラ
通常コンパイラは、コンパイラが動作している環境と同じ環境で動く目的プログラムを作成します。例えば、Windowsのパソコンで動作しているコンパイラは、Windowsで動くプログラムのコンパイルを行います。
クロスコンパイラは、クロスコンパイラが動作している環境と異なる環境で動くプログラムのコンパイルを行います。Windowsのパソコンで動作しているクロスコンパイラが、Macで動くプログラムのコンパイルを行う、みたいな感じですね。
リンク
ソフトウェア開発をする際、通常、複数のファイルに跨って原始プログラムを記述していきます。リンクでは、コンパイルした複数の目的プログラムを組み合わせて、実行可能なプログラムであるロードモジュールを作成します。リンクを実行するプログラムをリンカと言います。

プログラムの改善に使うプロファイラ
プロファイラは完成したプログラムを実際に実行してみて、その動作を分析します。プロファイラはプログラムを構成するモジュールの実行回数や実行時間を分析して、プログラムの改善に役立つ情報を収集します。物凄く処理に時間が掛かっているモジュールを発見して、作り変えたりするんですね。

統合開発環境(IDE)
今まで見てきたように、原始プログラムを記述してからちゃんと動くプログラムになるまでには色々なプログラムが必要になります。このようなプログラムを1つずつ準備するのは大変なのですよね。なので、統合開発環境(IDE)という、開発に必要なプログラムをまとめて提供するツールをよく使います。

統合開発環境(IDE)には、原始プログラムを記述するエディタ、コンパイラ、リンカ、バグを見つけやすくするデバッガなど、ソフトウェアを作成するために必要なツールがまとめられています。
応用情報技術者試験での出題例
令和6年度秋期問20
応用情報技術者
午前試験 令和6年度秋期問20
手続型言語のコンパイラがコード生成までに行う処理のうち,最後に行うものはどれか。
ア 意味解析 イ 構文解析 ウ 最適化 エ 字句解析
正解は”ウ”
コンパイラの処理手順は字句解析→構文解析→意味解析→最適化→コード生成です。
令和6年度春期問19
応用情報技術者
午前試験 令和6年度春期問19
プログラムを構成するモジュールや関数の実行回数,実行時間など,性能改善のための分析に役立つ情報を収集するツールはどれか。
ア エミュレーター
ウ デバッガ
イ シミュレーター
エ プロファイラ
正解は”エ”
プロファイラはプログラムを実行し、プログラムを構成するモジュールの実行回数や実行時間などのプログラム改善に役立つ情報を収集します。
令和5年度秋期問18
応用情報技術者
午前試験 令和5年度秋期問18
あるコンピュータ上で,当該コンピュータとは異なる命令形式のコンピュータで実行できる目的プログラムを生成する言語処理プログラムはどれか。
ア エミュレーター
ウ 最適化コンパイラ
イ クロスコンパイラ
エ プログラムジェネレーター
正解は”イ”
クロスコンパイラは、クロスコンパイラが動作している環境と異なる環境で動くプログラムのコンパイルを行います。
令和5年度秋期問50、令和4年度春期問50
応用情報技術者
午前試験 令和5年度秋期問50、令和4年度春期問50
組込みシステムのソフトウェア開発に使われるIDEの説明として,適切なものはどれか。
ア エディター,コンパイラ,リンカ,デバッガなどが一体となったツール
イ 専用のハードウェアインターフェースでCPUの情報を取得する装置
ウ ターゲットCPUを搭載した評価ボードなどの実行環境
エ タスクスケジューリングの仕組みなどを提供するソフトウェア
正解は”ア”
IDEは、原始プログラムを記述するエディタ、コンパイラ、リンカ、バグを見つけやすくするデバッガなど、ソフトウェアを作成するために必要なツールをまとめたものです。