第4回 課題(10月30日)   この問題は,10月30日13:00まで受け付けます. プログラミング言語に関する記述のうち,正しいものはどれか.  Pascalは,すべての手続きが関数なので,関数型言語に分類される. ○オブジェクト指向言語として,Smalltalk,C++,Javaなどがある.  関数型言語は,高速の数値計算に適しており,スーパーコンピュータによるシミュレーションによく用いられている.  第四世代言語とは,クライアントサーバシステムにおける負荷分散と処理の高速化を目指したプログラミング言語である. Javaの説明として正しいものはどれか.  インターネットで用いられる通信プロトコル.  インターネット用の閲覧ソフトウェア(ブラウザ). ○オブジェクト指向のプログラミング言語.  カラー静止画像の符号化方式 言語プロセッサに関する記述のうち,正しいものはどれか.  アセンブラは,ある処理系用に書かれた原始プログラムを,他の処理系用の原始プログラムに変換する.  インタプリタは,他のコンピュータ用のプログラムを解読し,実行するマイクロプログラムである. ○ジェネレータは,入力・処理・出力に関するいろいろな条件をパラメータで記述し,問題の処理目的に応じたプログラムを生成する.  トランスレータは,高水準言語で書かれたプログラムを,解釈しながら実行する. 高水準言語で原始プログラムを作成した後,そのプログラムをコンパイル方式によって実行するまでの手順を,下記の手順を正しく並べて示せ(番号で並べよ). 1.連係編集 2.原始プログラム作成 3.実行 4.ロード 5.コンパイル (1) [ 2 ] (2) [ 5 ] (3) [ 1 ] (4) [ 4 ] (5) [ 3 ] プログラム言語に関する記述のうち,適切なものはどれか. ○COBOLは,事務処理用に開発された言語であり,英語の表現に近い記述が特徴である.  Cは,UNIXシステムを記述するために開発された言語であり,再帰的にプログラムを記述することが特徴である.  Fortranは,技術計算用に開発された言語であり,強力なプリプロセッサが特徴である.  Lispは,リスト処理用に開発された言語であり,厳格なデータ型の宣言が特徴である. インタプリタ方式について,正しい記述はどれか.  一般にコンパイル方式より処理が高速であり,大規模なプログラムの作成に向いている.  生成される目的プログラムが,コンパイラによるものよりも大きくなる.  バッチ処理専用であり,会話型処理では使用できない. ○プログラムの部分的な実行を反復して行うことが容易である. 手続き型言語のコンパイラにおける処理を順に並べたものとして正しいものはどれか.  意味解析→字句解析→構文解析→最適化→コード生成  意味解析→字句解析→最適化→構文解析→コード生成  構文解析→字句解析→意味解析→最適化→コード生成  字句解析→意味解析→最適化→構文解析→コード生成 ○字句解析→構文解析→意味解析→最適化→コード生成 Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間が短くなるか. 〔条件〕 (1)実行時間は,プログラムの行数に比例する. (2)同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒かかり,コンパイルしてから実行すると0.003秒かかる. (3)コンパイル時間は,100行あたり0.1秒かかる. (4)コンパイル方式の場合は,プログラムの行数に関係なく,ファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドがかかる. (5)プログラムファイルのダウンロード時間など,その他の時間は無視して考える. [ 155 ]行以上 コンパイラの最適化に関する記述として,正しいものはどれか.  オブジェクトコードを生成する代わりに,インタプリタ用の中間コードを生成する.  コンパイルするコンピュータとは異なる機種で動作するオブジェクトコードを生成する.  プログラムが実行されたときに,制御が渡ったルーチン名やある時点での変数の内容を表示するようなオブジェクトコードを生成する. ○プログラムコードを解析して,実行時の処理効率がより高くなるようにオブジェクトコードを生成する. コンパイラでは,数式を機械語に翻訳する際,構文解析の段階で演算子の優先順位を単純にするために,逆ポーランド表記法を用いる場合がある.逆ポーランド表記法は,演算子を演算の対象である演算数の右側に記述する方式である.演算の優先順位に従って,この表記法を適用する. 例えば,X−Y÷Zは,    YZ÷ の後に引き算を行うので,    XYZ÷− となる. A+B÷(C−D)を逆ポーランド表記法で表せ. [ ABCD−÷+ ]