Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史.

Similar presentations


Presentation on theme: "1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史."— Presentation transcript:

1 1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史

2 プログラミング言語 ( プログラム 言語 ) 2

3 主記憶 (main memory, メモリ ) に、 プログラム と データを置く 3 出力装置入力装置 制御装置 補助記憶装置 CPU 演算装置 主記憶装置 コンピュータの構成 ( 前期の復習 )

4 機械語 と アセンブリ言語 機械語 ( マシン語 ) 0, 1 で作った命令 (CPU が解釈 / 実行 ) 例 ) 0 1 0 1 0 1 1 1 CPU の種類ごとに、機械語の構成は異な る アセンブリ言語 ( アセンブラ言語 ) 機械語の命令に名前をつけて、 分かり易くしたもの 例 ) LD D, A 4 ロー ド 命令 Re g. D Re g. A ________________ 1対1対 応

5 低レベル言語 と 高級言 語 低レベル言語 … 機械語、アセンブリ言語 計算機アーキテクチャに依存 → 別の計算機にプログラムを移植するのが困難 高級言語 ( 高レベル言語 ) 基本的に、計算機アーキテクチャに依存しない … コンパイラ等が、機械語に変換 ( 翻訳 ) してく れる Fortran … 科学技術計算用 COBOL … 事務処理用 ( 銀行など ) C … UNIX 開発時に設計された言語 C++ … C に、オブジェクト指向の概念を取り入 れる Java … オブジェクト指向言語 アプレットは、どの計算機でも実行できる 5 ________________

6 6 プログラミング言語 (ま とめ ) 汎用プログラミング言語 低レベル言語 機械語 (マシン語) … 0, 1 で作った命令 ( CPU が解釈 / 実 行) アセンブリ言語 … 機械語の命令に名前をつけて分かり易くした もの ( 機械語と1対1対応 ) 高級言語 (高レベル言語) … 計算機アーキテクチャに依存しな い C 、 Fortran 等 ( 手続き型 言語) … 処理手順を順番に書いた手続 きを 単位としてプロ グラムを作る C++ 、 Java 等 ( オブジェクト指向 言語) … オブジェクトを単 位として プログラムを作る LISP ( 関数型 言語)、 Prolog ( 論理型 言語) スクリプト言語 Perl 、 Ruby 、 Postscript など データと、それに対す る操作(メソッド) → 「オブジェクト指向設 計」

7 Java Sun Microsystems が開発した オブジェクト指向プログラミング言語 Java VM (Java 仮想マシン ) と バイト コード ( 中間言 語 ) バイト コード (Java VM 用のコード ) にコンパ イル Java VM を用意すれば、任意の環境で 同じバイトコードを実行できる ⇔ 既存言語: 実行環境ごとに、コンパイル Java アプレット と Java サーブレット アプレット: web ブラウザを使って クライアント側で実行 サーブレット: web サーバ側で実行 結果をクライアントに送る 7 JavaVM バイトコー ド

8 言語プロセッサ 8

9 9 コンピュータは機械語( 0,1 の並び)しか実行で きない 他の言語で書かれたプログラムは? 言語プロセッサが、ソースプログラムを、 機械語で書かれたオブジェクトプログラム に変換 アセンブラ … アセンブリ言語を機械語に1対1対 応 コンパイラ … 高級言語を機械語に変換 インタプリタ … コンパイルせずに、 実行時に命令を1つずつ順番に解釈 ・ 会話的実行に優れ る ・ 実行速度は遅い (Perl 、 Ruby 、 Basic な ど ) ________________

10 プログラム開発手 順 10 ソース プログラム エディ タ 言語プロセッ サ ( コンパイラ 等 ) リンカ ローダ オブジェク ト プログラム ロード モジュール ・ライブラリなど外部関 数は、 アドレス解決ができな い ・未解決アドレス として 処理 主記憶装置 ・オブジェクト プログラ ムと ライブラリを結合 ・未解決アドレスを解決 ・ロードモジュールは、 再配置可能 ・ロード モジュールを 主記憶 に 読 み 込 み 、 実 行 デバッガ

11 コンパイラ関連キーワード: 最適化コンパ イラ 実行速度を速くするため、等価なプログラムで、 より処理効率の良いものに変換してコンパイル する ( 実行結果は、最適化前と同じ ) 11 例 ) ループに無関係な処理をループ外 に ループに無関係な処理の実行回数が減る ソース プログラ ム for ( i = 0 ; i < 10 ; ++ i ) { x = y * z ; a[ i ] += x ; } オブジェクト プログ ラム x = y * z ; for ( i = 0 ; i < 10 ; ++ i ) { a[ i ] += x ; } ________________

12 コンパイラ関連キーワード: 最適化コンパ イラ 実行速度を速くするため、等価なプログラムで、 より処理効率の良いものに変換してコンパイル する ( 実行結果は、最適化前と同じ ) 12 例 ) ループ アンローリング ( ループ展 開 ) ループ変数 i の更新 / ループ終了判定のコストが減 る ソース プログラ ム sum = 0 ; for ( i = 0 ; i < 10 ; ++ i ) { sum += a[ i ] ; } オブジェクト プログ ラム sum = 0 ; sum += a[ 0 ] ; sum += a[ 1 ] ; … sum += a[ 9 ] ; ※ テキスト p.236 に 他の最適化の例

13 コンパイラ関連キーワード: プリコンパイ ラ コンパイル前に、疑似命令を、 コンパイル可能な命令に書き換える 例 ) C ソース中の #include や #define などを展開 13 ソース プログラム コンパイラ の理解でき るソース プログラム オブジェク ト プログラム プリコンパ イラ コンパイ ラ ________________

14 コンパイラ関連キーワード: クロス コンパ イラ 実行環境と別の環境でコンパイルするために 使う 例 ) 携帯アプリを、 windows マシン上で開発 14 クロス コンパイ ラ ソース プログラム オブジェク ト プログラム ロード モジュール ________________

15 コンパイラ関連キーワード: コンパイラ コン パイラ コンパイラ も ロードモジュール ( 実行ファイル ) では、誰が、コンパイルしたの ? コンパイラ コンパイラ ( 簡単な文法の言語のコンパイラ ) を作る これを使って、高機能なコンパイラをコンパイ ルする 15 コンパイラ のソース プログラム コンパイ ラ ________________

16 デバッグ手 法 メモリ ダンプ メモリの内容全体を、出力 スナップ ショット 指定した命令を実行するごとに、 指定した変数 / レジスタ / メモリ内容を出力 インスペクタ オブジェクトのデータ構造や変数の値を 視覚的に表示するツール ( 実行状況の確認が容 易 ) トレーサ 命令の実行順序や実行結果など、 実行の履歴を表示するツール 16

17 キーワード エミュレータ ハードウェアの動作を、仕組みレベルから再現す る 例 ) バーチャル コンソール (Wii) / PS2 エミュレータ (PS3) シミュレータ 対象をモデル化し、現象レベルで動作を模倣する 例 ) 地球シミュレータ コンバータ ソース プログラムを、別言語のプログラムに変換 する ジェネレータ 必要な条件をパラメータ指定すると、プログラム を自動的に生成する 17 ROM プログラムを読み、 CPU や周辺チップの動作 を 再現していく

18 参考: コンパイラの処理順序と構文 解析 字句 ( トークン ) ごとに分ける 例 ) sum = a + 10 ; 文法に合致するように、 字句の列から構文木を作る 構文の意味を調べ、整合性を確認 例 ) データ型の確認など 実行速度を速くするため、 処理効率の良いものに等価変換 機械語のコードを生成する 18 字句解析 構文解析 意味解析 最適化 コード生成 = su m + a 1010

19 19

20 20

21 この教材のご利用について この教材は、以下に示す利用条件の下で、著作権者にわざわざ許 諾を求めることなく、無償で自由にご利用いただけます。講義、 自主学習はもちろん、翻訳、改変、再配布等を含めて自由にご利 用ください。 非商業利用に限定 この教材は、翻訳や改変等を加えたものも含めて、著作権者 の許諾を受けずに商業目的で利用することは、許可されてい ません。 著作権の帰属 この教材および教材中の図の著作権は、次ページ以降に示す 著作者に帰属します。この教材、または翻訳や改変等を加え たものを公開される場合には、「本教材 (or 本資料 ) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に 実施してください。なお、この教材に改変等を加えたものの 著作権は、次ページ以降に示す著作者および改変等を加えた 方に帰属します。 同一条件での頒布・再頒布 この教材、または翻訳や改変等を加えたものを頒布・再頒布 する場合には、頒布・再頒布の形態を問わず、このページの 利用条件に準拠して無償で自由に利用できるようにしてくだ さい。 21 この文面は、 TOKYO TECH OCW の利用 条件を参考にしまし た

22 配布場所 http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/ この powerpoint ファイルの著作者 堀山 貴史 2007-2009 horiyama@al.ics.saitama-u.ac.jp 改変等を加えられた場合は、お名前等を追加してください 図の著作者 p. 3, 4, 7, 10 ハードディスク : 堀山 貴史 CPU, メモリ, キーボード : http://webweb.s92.xrea.com/ パソコン, ディスプレイ, プリンタ, マウス : Microsoft Office Online / クリップアート p. 11 ~ 16 クリップアート : Microsoft Office Online / クリップアート その他 : 堀山 貴史 22 この教材のご利用について


Download ppt "1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史."

Similar presentations


Ads by Google