基本情報技術概論 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
© Copyright 2024 ExpyDoc