情報処理のWeb教科書―IPA情報処理試験対策のお供に!

コンパイラ理論―コンパイラとは?最適化の仕組み、c言語、インタプリタについて

トップ 情報処理の知識体系 テクノロジ系 基礎理論 情報に関する理論 コンパイラ理論

コンパイラとは何か、コンパイラ理論、コンパイラによる最適化の仕組みついてまとめています。無料でダウンロードできるc言語のコンパイラの紹介やコンパイラ言語とインタプリタ言語の違いなどをまとめています。

▲記事トップへ

目次

以下は目次リンクになります。

1. コンパイラとは

2. コンパイラの最適化の仕組み

3. 無料でダウンロードできるc言語のコンパイラの紹介

4. コンパイラ言語とインタプリタ言語の違い

5. コンパイラ理論に関連したIPA情報処理試験の過去問

もっと知識を広げるための参考

更新履歴

1. コンパイラとは

コンパイラとはとは何か、コンパイラの役割を見ていきます。

コンパイラの役割

コンパイラの役割は、高水準言語で記述された原始プログラムを機械語などに変換するプログラムのことをいいます。 この処理過程のことをコンパイルといいます。

2. コンパイラの最適化の仕組み

コンパイルの過程やコンパイラの字句解析処理、構文解析処理などコンパイラの仕組み、最適化の仕組みについて見ていきます。

コンパイルの過程

コンパイラは以下のような手順で処理します。

  1. 字句解析
  2. 構文解析
  3. 意味解析
  4. 最適化
  5. コード生成

コンパイラの字句解析処理

コンパイラの字句解析処理は、原始プログラムの文字列から字句を切り出す処理です。 字句は、日本語や英語などの一般の言語で言えば単語にあたり、構文を構成する最小単位です。 字句は、名前、予約語、定数、区切り記号などを目安に解析されます。

コンパイラの構文解析処理

コンパイラの構文解析処理は、切り出された字句の構成を検証する処理です。 文法に従っているかどうかを検査します。

4つ組み形式

コンパイラで構文解析した結果の表現方法の一つに4つ組み形式があります。

(演算子,被演算子1,被演算子2,結果)

この形式は、被演算子1と被演算子2に演算子を作用させたものが結果であることを表わします。

4つ組み形式の例

次の一連の4つ組は、どの式を構文解析した結果をもとめてみます。 T1、T2、T3、T4は一時変数を表わします。

  (*,B,C,T1)   (/,T1,D,T2)   (+,A,T2,T3

与えられた形式に関する記述を理解し、式をたどってみます。

  ①(*,B,C,T1) ⇒ T1=B*C

  ②(/,T1,D,T2) ⇒ T2=T1/D

  ③(+,A,T2,T3) ⇒ T3=A+T2

  ①、②より

  T2=B*C/D …④

  ④、③より

  T3=A+B*C/D

以上より、答えはA+B*C/Dになります。

コンパイラの意味解析処理

コンパイラの意味解析処理は、属性間に矛盾が生じていないかどうかを検査する処理です。 例えば、文字型と宣言されている変数が算術式に含まれていれば、意味上の誤りとして検出します。

コンパイラの最適化処理

コンパイラの最適化の主な目的はプログラムの実行時間を短縮することです。

コンパイラの最適化処理は、目的プログラムの実行時間や容量が少なくなるように、 プログラムの冗長性を排除するように、プログラムに変更を加える処理です。

コンパイラのコード生成処理

コンパイラのコード生成処理は、中間言語による表現や機械語やアセンブラの目的プログラムを生成します。

3. 無料でダウンロードできるc言語のコンパイラの紹介

ひと昔前は学習用としては、Borland C++コンパイラが主流でしたがなかなか入手がしづらい状況になりました。 ですが、gccというLinux系のOSではプロが使う無料のOSS製品がWindowsでも使えるようになり、ダウンロードからインストールまでもハードルが低く学習ようとして今までよりもいい環境になりました。

Windowsでも使えるフリーソフトのgccコンパイラで学ぶC言語入門用のオリジナルテキストをまとめています。 フリーソフトのgccコンパイラのインストール方法や基本文法はもちろんですが、分割コンパイルやヘッダーファイルの作成方法など入門者にとって気になる内容もまとめています。

詳細

4. コンパイラ言語とインタプリタ言語の違い

プログラムは、ソースコードという人間がわかるコードを書きます。C言語やアセンブラ、あるいはPHPやJavaScript、HTMLなどの言語でソースコードを書きます。 ソースコードはあくまでも人間のわかるコードで、コンピュータではそのまま実行できません。 コンピュータがわかるコードに変換する必要があります。またこれらのソースコードのプログラムを動かすまでの方法は異なります。

コンピュータがわかるコードを機械語といいます。ソースコードから機械語に変換する処理のことをコンパイルといいます。 コンパイラするプログラムがコンパイラということです。

C言語やアセンブラなどのプログラミング言語では、コンパイルしたコードを用意してからプログラムを実行します。 コンパイルという作業があるプログラミング言語であるため、コンパイラ言語といわれます。

PHPやJavaScriptなどのプログラミング言語では、コンパイルは意識せずソースコードを実行時にPHP実行環境やブラウザなどがコンパイルを行って実行します。 実行時にコンパイルしプログラマがコンパイルする作業がないという特徴からインタプリタ言語といわれています。

なお、HTMLやXMLなどのマークアップ言語これらとは別に扱われます。

プログラム言語

プログラム言語とは何かをテーマに、プログラミング言語の意味から、種類、特徴、体系、スタック領域やヒープ領域といった記憶域などの知識をまとめています。

詳細

マークアップ言語

マークアップ言語とは何かをテーマに、マークアップ言語の意味、HTML、XML、XHTMLなど言語の種類についてまとめています。

詳細

5. コンパイラ理論に関連したIPA情報処理試験の過去問

以下ではコンパイラ理論に関連したIPA情報処理試験の過去問とその解説をまとめています。

もっと知識を広げるための参考

更新履歴

更新履歴になります。

戻る

スポンサーリンク

情報処理の知識体系

各試験の問題と解説

ランダム出題・採点アプリ

プログラミング

スポンサーリンク