スゴ技

平成27年度 春 基本情報技術者試験 【問2】

Blog:IT・情報処理BLOG |

ソフトⅡコース担当 ブログのおにーさまこと高橋です。

昨日は情報処理技術者試験でした。受験した人、手ごたえはどうでしたか?結果に関わらず、復習はしっかりとしておきましょう。

ということで、早速ですが、今日は平成27年度春期基本情報技術者試験午後問2の解説です。問題は、IPAのサイトをご覧ください。

問2は、言語プロセッサに関する問題です。コンパイラ言語とインタプリタ言語の特徴を押さえていれば解くことのできる問題です。

設問1
コンパイラ方式ではおおまかに

  1. 原始プログラムをコンパイラを用いてオブジェクトプログラムに変換
    1. 字句解析
    2. 構文解析
    3. コード生成
    4. 最適化
  2. オブジェクトプログラムやライブラリを、リンカを用いて実行プログラムに連結編集
  3. 実行プログラムをローダがロードして実行

の手順をとります。インタプリタ方式ではおおまかに

  1. 原始プログラムを読み込む
  2. 解釈する
  3. 実行する

を繰り返します。

アの対話的に確認しながら実行できるのは、原始プログラムを1行ずつ読み込みながら実行するインタプリタ方式の特徴です。一旦機械語に変換してしまうコンパイラ方式では、対話的に実行できません。

イの変更後ただちに実行できるのは、インタプリタ方式の特徴です。1行ずつ読み込み実行するので、変更後ただちに実行できます。コンパイラ方式では、コンパイルしなおさないと実行できません。

ウの異常個所の確認をしやすいのは、1行ずつ実行するインタプリタ方式の特徴です。

コンパイラ方式では、全体の構文解析を行うので、最適化を図ることができます。設問1の正解はエです。

設問2
原始プログラムを中間コードにコンパイルし、その中間コードを仮想計算機のインタプリタで実行する方式があります。この方式では、中間コードを実行できる仮想計算機を用意できれば、OSやハードウェアに依存せず実行できます。空欄aの正解はアです。ただし、仮想計算機上のインタプリタで実行するので、直接機械語を実行するコンパイラ方式より実行は遅くなります。しかし、一旦中間コードにコンパイルするので、最適化を行うことができます。

設問3
問題の条件より、関数Fの中間コードは400命令であるが、実際に実行されるのは1回の呼び出しにつき2000命令です。また、動的コンパイルは400命令に対して行われます。

  • インタプリタ方式
    • 関数Fの呼び出しを400回実行します
      • 500ナノ秒×2000命令×400回=400000000ナノ秒=0.4秒
  • 動的コンパイル方式
    • 100回はインタプリタ方式と同じです
      • 500ナノ秒×2000命令×100回=100000000ナノ秒=0.1秒
    • 動的コンパイラの起動
      • 0.1秒
    • コンパイルの時間は1000命令に対して0.1秒なので、400命令の時間を求める
      • 0.1×(400/1000)=0.04秒
    • 残り300回は1命令10ナノ秒で実行する
      • 10ナノ秒×2000命令×300回=6000000ナノ秒=0.006秒

インタプリタ方式では0.4秒、動的コンパイル方式では合計を求めて0.246秒になります。空欄bの正解はオ、空欄cの正解はエです。

いかがだったですか。最後の計算問題以外は特徴を知っているかどうかで解けます。計算も、400命令と2000命令を間違えなければ難しくないと思います。

 

2015年(平成27年度)春期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動