PowerPoint プレゼンテーション

基本情報技術概論 II (第1回)
プログラム言語 と 言語プロセッサ
埼玉大学 理工学研究科
堀山 貴史
1
プログラミング言語 (プログラム言語)
2
コンピュータの構成
(前期の復習)
CPU
制御装置
入力装置
演算装置
主記憶装置
出力装置
補助記憶装置

主記憶 (main memory, メモリ) に、
プログラム と データを置く
3
機械語 と アセンブリ言語
 ________________
機械語 (マシン語)

0, 1 で作った命令 (CPU が解釈/実行)
例) 0 1 0 1 0 1 1 1
ロード Reg. Reg.
命令 D
A

CPU の種類ごとに、機械語の構成は異なる
 アセンブリ言語
________________(アセンブラ言語)

機械語の命令に名前をつけて、
分かり易くしたもの
1対1対応
例) LD D, A
4
低レベル言語 と 高級言語

低レベル言語

… 機械語、アセンブリ言語
計算機アーキテクチャに依存
→ 別の計算機にプログラムを移植するのが困難

高級言語 (高レベル言語)

基本的に、計算機アーキテクチャに依存しない
… コンパイラ等が、機械語に変換 (翻訳) してくれる
… 科学技術計算用

… 事務処理用 (銀行など)

… UNIX 開発時に設計された言語

… C に、オブジェクト指向の概念を取り入れる

… オブジェクト指向言語
アプレットは、どの計算機でも実行できる
________________
5

Fortran
COBOL
C
C++
Java
プログラミング言語 (まとめ)

汎用プログラミング言語
 低レベル言語
 機械語 (マシン語) … 0, 1 で作った命令 (CPUが解釈/実行)
 アセンブリ言語 … 機械語の命令に名前をつけて分かり易くしたもの
(機械語と1対1対応)

高級言語 (高レベル言語) … 計算機アーキテクチャに依存しない
 C、Fortran 等 (手続き型言語) …処理手順を順番に書いた手続きを
単位としてプログラムを作る

C++、Java 等 (オブジェクト指向言語) …オブジェクトを単位として
プログラムを作る


LISP (関数型言語)、Prolog (論理型言語)
スクリプト言語
 Perl、Ruby、Postscript など
データと、それに対する
操作(メソッド)
→ 「オブジェクト指向設計」 6
Java

Sun Microsystems が開発した
オブジェクト指向プログラミング言語

Java VM (Java 仮想マシン) と バイト コード (中間言語)
 バイト コード (Java VM 用のコード) にコンパイル
 Java VM を用意すれば、任意の環境で
同じバイトコードを実行できる
⇔ 既存言語: 実行環境ごとに、コンパイル

Java アプレット と Java サーブレット


アプレット: webブラウザを使って
クライアント側で実行
サーブレット: webサーバ側で実行
結果をクライアントに送る
バイトコード
JavaVM
7
言語プロセッサ
8
言語プロセッサ

コンピュータは機械語(0,1の並び)しか実行できない

他の言語で書かれたプログラムは?
言語プロセッサが、ソースプログラムを、
機械語で書かれたオブジェクトプログラムに変換


アセンブラ … アセンブリ言語を機械語に1対1対応
コンパイラ … 高級言語を機械語に変換
インタプリタ … コンパイルせずに、
実行時に命令を1つずつ順番に解釈
________________
・ 会話的実行に優れる
・ 実行速度は遅い
(Perl、Ruby、Basic など)

9
プログラム開発手順
ソース
プログラム
エディタ
言語プロセッサ
(コンパイラ等)
オブジェクト
プログラム
リンカ
・オブジェクト プログラムと
ライブラリを結合
・未解決アドレスを解決
・ロードモジュールは、
再配置可能
ローダ
・ロード モジュールを
主記憶に読み込み、実行
ロード
モジュール
主記憶装置
・ライブラリなど外部関数は、
アドレス解決ができない
・未解決アドレス として処理
デバッガ
10
コンパイラ関連キーワード:

最適化コンパイラ
________________
実行速度を速くするため、等価なプログラムで、
より処理効率の良いものに変換してコンパイルする
(実行結果は、最適化前と同じ)
例) ループに無関係な処理をループ外に
ソース プログラム
オブジェクト プログラム
for ( i = 0 ; i < 10 ; ++ i ) {
x = y * z;
a[ i ] += x ;
}
x = y * z;
for ( i = 0 ; i < 10 ; ++ i ) {
a[ i ] += x ;
}
ループに無関係な処理の実行回数が減る
11
コンパイラ関連キーワード:

最適化コンパイラ
実行速度を速くするため、等価なプログラムで、
より処理効率の良いものに変換してコンパイルする
(実行結果は、最適化前と同じ)
※
例) ループ アンローリング (ループ展開)
テキスト p.236 に
他の最適化の例
ソース プログラム
オブジェクト プログラム
sum = 0 ;
for ( i = 0 ; i < 10 ; ++ i ) {
sum += a[ i ] ;
}
sum
sum
sum
…
sum
= 0;
+= a[ 0 ] ;
+= a[ 1 ] ;
+= a[ 9 ] ;
ループ変数 i の更新 / ループ終了判定のコストが減る
12
コンパイラ関連キーワード:

プリコンパイラ
________________
コンパイル前に、疑似命令を、
コンパイル可能な命令に書き換える
例) C ソース中の #include や #define などを展開
ソース
プログラム
プリコンパイラ
コンパイラの
理解できる
ソース
プログラム
オブジェクト
プログラム
コンパイラ
13
コンパイラ関連キーワード:

クロス
コンパイラ
________________
実行環境と別の環境でコンパイルするために使う
例) 携帯アプリを、windows マシン上で開発
ソース
プログラム
オブジェクト
プログラム
ロード
クロス モジュール
コンパイラ
14
コンパイラ関連キーワード: コンパイラ
コンパイラ
________________



コンパイラ も ロードモジュール (実行ファイル)
では、誰が、コンパイルしたの ?
コンパイラ コンパイラ
(簡単な文法の言語のコンパイラ) を作る
これを使って、高機能なコンパイラをコンパイルする
コンパイラの
ソース
プログラム
コンパイラ
コンパイラ
コンパイラ
15
デバッグ手法

メモリ ダンプ


スナップ ショット


指定した命令を実行するごとに、
指定した変数/レジスタ/メモリ内容を出力
インスペクタ


メモリの内容全体を、出力
オブジェクトのデータ構造や変数の値を
視覚的に表示するツール (実行状況の確認が容易)
トレーサ

命令の実行順序や実行結果など、
実行の履歴を表示するツール
16
キーワード

エミュレータ
ROM プログラムを読み、
CPU や周辺チップの動作を
再現していく
ハードウェアの動作を、仕組みレベルから再現する
例) バーチャル コンソール(Wii) / PS2エミュレータ (PS3)


シミュレータ
対象をモデル化し、現象レベルで動作を模倣する
例) 地球シミュレータ


コンバータ


ソース プログラムを、別言語のプログラムに変換する
ジェネレータ

必要な条件をパラメータ指定すると、プログラムを自動
的に生成する
17
参考:
コンパイラの処理順序と構文解析
字句解析

字句 (トークン) ごとに分ける
例) sum = a + 10 ;
=
sum +
文法に合致するように、
字句の列から構文木を作る
a 10
構文解析

意味解析

構文の意味を調べ、整合性を確認
例) データ型の確認など
最適化

実行速度を速くするため、
処理効率の良いものに等価変換
コード生成

機械語のコードを生成する
18
19
20
この教材のご利用について




この文面は、TOKYO
TECH OCW の利用
条件を参考にしました
この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を
求めることなく、無償で自由にご利用いただけます。講義、自主学習は
もちろん、翻訳、改変、再配布等を含めて自由にご利用ください。
非商業利用に限定

この教材は、翻訳や改変等を加えたものも含めて、著作権者の許
諾を受けずに商業目的で利用することは、許可されていません。
著作権の帰属

この教材および教材中の図の著作権は、次ページ以降に示す著
作者に帰属します。この教材、または翻訳や改変等を加えたもの
を公開される場合には、「本教材 (or 本資料) は
http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です
(or 教材を改変したものです」 との旨の著作権表示を明確に実施
してください。なお、この教材に改変等を加えたものの著作権は、
次ページ以降に示す著作者および改変等を加えた方に帰属しま
す。
同一条件での頒布・再頒布

この教材、または翻訳や改変等を加えたものを頒布・再頒布する
場合には、頒布・再頒布の形態を問わず、このページの利用条件21
この教材のご利用について

配布場所

http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/

この powerpoint ファイルの著作者

堀山 貴史 2007-2009 [email protected]

改変等を加えられた場合は、お名前等を追加してください
図の著作者

p. 3, 4, 7, 10
 ハードディスク : 堀山 貴史
 CPU, メモリ, キーボード : http://webweb.s92.xrea.com/
 パソコン, ディスプレイ, プリンタ, マウス :
Microsoft Office Online / クリップアート

p. 11 ~ 16
 クリップアート : Microsoft Office Online / クリップアート

その他 : 堀山 貴史

22