基本情報技術 概論 ii ( 第1回 )

22
1 プププププププ プププププププ ププププププププ II (プ ) ププププ ププププププ ププ ププ

Upload: alva

Post on 14-Jan-2016

64 views

Category:

Documents


0 download

DESCRIPTION

プログラム言語 と 言語プロセッサ. 基本情報技術 概論 II ( 第1回 ). 埼玉大学 理工学研究科 堀山 貴史. プログラミング 言語 ( プログラム言語 ). コンピュータの 構成 ( 前期の復習 ). CPU. 主記憶 (main memory, メモリ ) に、 プログラム と データを置く. 制御装置. 演算装置. 入力装置. 主記憶装置. 出力装置. 補助記憶 装置. 機械語 と アセンブリ 言語. ________________. ロード 命令. Reg. D. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基本情報技術 概論  II  ( 第1回 )

1

プログラム言語 と 言語プロセッサ

基本情報技術概論 II ( 第1回 )

埼玉大学 理工学研究科 堀山 貴史

Page 2: 基本情報技術 概論  II  ( 第1回 )

2

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

Page 3: 基本情報技術 概論  II  ( 第1回 )

3

主記憶 (main memory, メモリ ) に、 プログラム と データを置く

出力装置入力装置

制御装置

補助記憶装置

CPU

演算装置

主記憶装置

コンピュータの構成 ( 前期の復習 )

Page 4: 基本情報技術 概論  II  ( 第1回 )

4

機械語 と アセンブリ言語

機械語 ( マシン語 ) 0, 1 で作った命令 (CPU が解釈 / 実行 )

例 ) 0 1 0 1 0 1 1 1

CPU の種類ごとに、機械語の構成は異なる

アセンブリ言語 ( アセンブラ言語 ) 機械語の命令に名前をつけて、

分かり易くしたもの例 ) LD D, A

ロード

命令

Reg.D

Reg.A

________________

________________

1対1対応

Page 5: 基本情報技術 概論  II  ( 第1回 )

5

低レベル言語 と 高級言語

低レベル言語 … 機械語、アセンブリ言語 計算機アーキテクチャに依存 → 別の計算機にプログラムを移植するのが困

高級言語 ( 高レベル言語 ) 基本的に、計算機アーキテクチャに依存しない … コンパイラ等が、機械語に変換 ( 翻訳 ) し

てくれる Fortran … 科学技術計算用 COBOL … 事務処理用 ( 銀行など ) C … UNIX 開発時に設計された言語 C++ … C に、オブジェクト指向の概念を取り

入れる Java … オブジェクト指向言語

アプレットは、どの計算機でも実行できる

________________

Page 6: 基本情報技術 概論  II  ( 第1回 )

6

プログラミング言語 (まとめ )

汎用プログラミング言語 低レベル言語

機械語 (マシン語) … 0, 1 で作った命令 ( CPU が解釈 / 実行)

アセンブリ言語 … 機械語の命令に名前をつけて分かり易くしたもの (機械語と1対1対応)

高級言語 (高レベル言語) … 計算機アーキテクチャに依存しない C 、 Fortran 等 (手続き型言語) …処理手順を順番に書いた

手続きを                       単位としてプロ

グラムを作る C++ 、 Java 等 (オブジェクト指向言語) …オブジェクト

を単位として                             

  プログラムを作る LISP (関数型言語)、 Prolog (論理型言語)

スクリプト言語 Perl 、 Ruby 、 Postscript など

データと、それに対する操作(メソッ

ド)→ 「オブジェクト指向設計」

Page 7: 基本情報技術 概論  II  ( 第1回 )

7

Java Sun Microsystems が開発した

オブジェクト指向プログラミング言語 Java VM (Java 仮想マシン ) と バイト コード ( 中

間言語 ) バイト コード (Java VM 用のコード ) にコン

パイル Java VM を用意すれば、任意の環境で

同じバイトコードを実行できる ⇔ 既存言語: 実行環境ごとに、コンパイル Java アプレット と Java サーブレット

アプレット: web ブラウザを使って クライアント側で実行

サーブレット: web サーバ側で実行 結果をクライアントに送る

JavaVM

バイトコード

Page 8: 基本情報技術 概論  II  ( 第1回 )

8

言語プロセッサ

Page 9: 基本情報技術 概論  II  ( 第1回 )

9

言語プロセッサ

コンピュータは機械語( 0,1 の並び)しか実行できない

他の言語で書かれたプログラムは?

  言語プロセッサが、ソースプログラムを、  機械語で書かれたオブジェクトプログラムに変換

アセンブラ … アセンブリ言語を機械語に1対1対応

コンパイラ … 高級言語を機械語に変換

インタプリタ … コンパイルせずに、 実行時に命令を1つずつ順番に解釈

・ 会話的実行に優れる・ 実行速度は遅い(Perl 、 Ruby 、 Basic など )

________________

Page 10: 基本情報技術 概論  II  ( 第1回 )

10

プログラム開発手順

ソースプログラム

エディタ言語プロセッ

サ( コンパイラ

等 )

リンカ

ローダ

オブジェクトプログラム

ロードモジュール

・ライブラリなど外部関数は、 アドレス解決ができない・未解決アドレス として処理

主記憶装置

・オブジェクト プログラムと ライブラリを結合・未解決アドレスを解決・ロードモジュールは、 再配置可能・ロード モジュールを 主記憶に読み込み、実行デバッ

Page 11: 基本情報技術 概論  II  ( 第1回 )

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 ;}

________________

Page 12: 基本情報技術 概論  II  ( 第1回 )

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 に 他の最適化の例

Page 13: 基本情報技術 概論  II  ( 第1回 )

13

コンパイラ関連キーワード: プリコンパイラ

コンパイル前に、疑似命令を、コンパイル可能な命令に書き換える

例 ) C ソース中の #include や #define などを展開

ソースプログラム

コンパイラの理解できるソースプログラム

オブジェクトプログラム

プリコンパイラ

コンパイラ

________________

Page 14: 基本情報技術 概論  II  ( 第1回 )

14

コンパイラ関連キーワード: クロス コンパイラ

実行環境と別の環境でコンパイルするために使う

例 ) 携帯アプリを、 windows マシン上で開発

クロスコンパイ

ソースプログラム

オブジェクトプログラム

ロードモジュール

________________

Page 15: 基本情報技術 概論  II  ( 第1回 )

15

コンパイラ関連キーワード: コンパイラ コンパイラ

コンパイラ も ロードモジュール ( 実行ファイル )では、誰が、コンパイルしたの ?

コンパイラ コンパイラ(簡単な文法の言語のコンパイラ ) を作る

これを使って、高機能なコンパイラをコンパイルする

コンパイラのソースプログラム

コンパイラ

コンパイラコンパイラ

________________

Page 16: 基本情報技術 概論  II  ( 第1回 )

16

デバッグ手法

メモリ ダンプ メモリの内容全体を、出力

スナップ ショット 指定した命令を実行するごとに、

指定した変数 / レジスタ / メモリ内容を出力 インスペクタ

オブジェクトのデータ構造や変数の値を視覚的に表示するツール ( 実行状況の確認が容易 )

トレーサ 命令の実行順序や実行結果など、

実行の履歴を表示するツール

Page 17: 基本情報技術 概論  II  ( 第1回 )

17

キーワード

エミュレータ ハードウェアの動作を、仕組みレベルから再現す

る例 ) バーチャル コンソール (Wii) / PS2 エミュレー

タ (PS3) シミュレータ

対象をモデル化し、現象レベルで動作を模倣する例 ) 地球シミュレータ

コンバータ ソース プログラムを、別言語のプログラムに変

換する ジェネレータ

必要な条件をパラメータ指定すると、プログラムを自動的に生成する

ROM プログラムを読み、

CPU や周辺チップの動作を再現していく

Page 18: 基本情報技術 概論  II  ( 第1回 )

18

参考: コンパイラの処理順序と構文解析

字句 ( トークン ) ごとに分ける例 ) sum = a + 10 ;

文法に合致するように、字句の列から構文木を作る

構文の意味を調べ、整合性を確認例 ) データ型の確認など

実行速度を速くするため、処理効率の良いものに等価変換

機械語のコードを生成する

字句解析

構文解析

意味解析

最適化

コード生成

=

sum

+

a 10

Page 19: 基本情報技術 概論  II  ( 第1回 )

19

Page 20: 基本情報技術 概論  II  ( 第1回 )

20

Page 21: 基本情報技術 概論  II  ( 第1回 )

21

この教材のご利用について この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を求めることなく、無償で自由にご利用いただけます。講義、自主学習はもちろん、翻訳、改変、再配布等を含めて自由にご利用ください。

非商業利用に限定 この教材は、翻訳や改変等を加えたものも含めて、著作権者

の許諾を受けずに商業目的で利用することは、許可されていません。

著作権の帰属 この教材および教材中の図の著作権は、次ページ以降に示す著作者に帰属します。この教材、または翻訳や改変等を加えたものを公開される場合には、「本教材 (or 本資料 ) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に実施してください。なお、この教材に改変等を加えたものの著作権は、次ページ以降に示す著作者および改変等を加えた方に帰属します。

同一条件での頒布・再頒布 この教材、または翻訳や改変等を加えたものを頒布・再頒布

する場合には、頒布・再頒布の形態を問わず、このページの利用条件に準拠して無償で自由に利用できるようにしてください。

この文面は、 TOKYO TECH OCW の利用条件を参考にしました

Page 22: 基本情報技術 概論  II  ( 第1回 )

22

配布場所 http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/

この powerpoint ファイルの著作者 堀山 貴史  2007-2009 [email protected]

u.ac.jp 改変等を加えられた場合は、お名前等を追加してください

図の著作者 p. 3, 4, 7, 10

ハードディスク : 堀山 貴史 CPU, メモリ , キーボード :

http://webweb.s92.xrea.com/ パソコン , ディスプレイ , プリンタ , マウス :

Microsoft Office Online / クリップアート p. 11 ~ 16

クリップアート : Microsoft Office Online / クリップアート

その他 : 堀山 貴史

この教材のご利用について