• 検索結果がありません。

言語プロセッサ2005

N/A
N/A
Protected

Academic year: 2021

シェア "言語プロセッサ2005"

Copied!
50
0
0

読み込み中.... (全文を見る)

全文

(1)

言語プロセッサ

2014

Language Processors 2014

平成

26年9月22日(月)

東京工科大学

コンピュータサイエンス学部

亀田弘之

url: kameken.clique.jp/Lectures/Lectures2014/Compiler2014/

(2)

まずはイントロから

• なぜ言語プロセッサを学ぶのか?

Why do we study a course

言語プロセッサ

?)

2 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(3)

3 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(4)

1. IoT Japan 2014 (10月15日~17日開催)

http://itpro.nikkeibp.co.jp/expo/2014/iot/

2. IoTの概要図

(参考)これからは

IoTの時代

Copyright© 2014 School of Computer Science, Tokyo University of Technology 4

(出典)

http://tocos-wireless.com/jp/tech/Internet_of_Things.html

(5)

情報システム

5 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(6)

6 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(7)

セキュリティ

ネットワーク

モバイル

複雑だなぁ

複雑だなぁ

7

クラウドコンピューティング

(8)

Divide and Conquer

(困難は分割し、しかる後に統合せよ!)

8 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(9)

何が基本な

のかなぁ?

何が基本な

のかなぁ?

9 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(10)

ディスプレイ

キーボード

本体

10 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(11)

出力

(Output)

入力

(Input)

処理

11 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(12)

• 本体内部

が大切!

12 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(13)
(14)

14 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(15)

コンピュータの階層化モデル

Application Software

Operating System

Instr. Set Architecture

Micro Architecture

Logic Module

Digital Circuit

Analog Circuit

Devices (elements)

Physics (Electron etc.)

Program

Device Driver

Instruction set & Register

Data Bus, Controller

Adder, Register

AND Gate, OR Gate

Amplifier, Filter

Diode, Transistor

Electron, Photon

Examples

Examples

15 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(16)

16 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(17)

17 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(18)

18 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(19)

高水準言語

ー>

論理回路

main( ){

int a;

a = 1;

printf(“%d”,a);

}

?

?

高 水 準 言 語

論 理 回 路

19 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(20)

論理回路

20 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(21)

言語プロセッサとは

高水準言語によるプログラム

(処理手順の記述

,命令群)

-> 論理回路制御指令群

(注)・命令:

command

・指令:

instruction

21 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(22)

言語プロセッサとは

高水準言語によるプログラム

(処理手順の記述

,命令群)

-> 論理回路制御指令群

(注)・命令:

command

・指令:

instruction

22 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(23)

C言語・

Java言語

アセンブリ言語

23 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(24)

main(){

}

24 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(25)

$ cat p01.s

.file "p01.c"

.def ___main; .scl 2; .type 32; .endef

.text

.globl _main

.def _main; .scl 2; .type 32; .endef

_main:

pushl %ebp

movl %esp, %ebp

subl $8, %esp

andl $-16, %esp

movl $0, %eax

movl %eax, -4(%ebp)

movl -4(%ebp), %eax

call __alloca

call ___main

leave

ret

25 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(26)

main(){

int a;

a = 20;

a = a + 30;

a = 100 - a;

a = a*7;

}

26 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(27)

$ cat p01.s

.file "p01.c"

.def ___main; .scl 2; .type

32; .endef

.text

.globl _main

.def _main; .scl 2; .type

32; .endef

_main:

pushl %ebp

movl %esp, %ebp

subl $8, %esp

andl $-16, %esp

movl $0, %eax

movl %eax, -8(%ebp)

movl -8(%ebp), %eax

call __alloca

call ___main

movl $20, -4(%ebp)

leal -4(%ebp), %eax

addl $30, (%eax)

movl $100, %eax

subl -4(%ebp), %eax

movl %eax, -4(%ebp)

movl -4(%ebp), %edx

movl %edx, %eax

sall $3, %eax

subl %edx, %eax

movl %eax, -4(%ebp)

leave

ret

27 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(28)

• $ gcc -S filename.c

• $ ls

• $ cat filename.s

28 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(29)

ソース言語

読み込み

字句解析

構文解析

中間語生成

コード生成

目的言語

29 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(30)

言語プロセッサの種類

1. インタープリタ (interpreter)

2. コンパイラ (compiler)

30 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(31)

コンパイラの処理(例)

• X = Y*3.14 + X/Y

• A = (A + B)*C + B

31 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(32)

補足説明

(教科書第1章の

1.1について)

32 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(33)

コンパイラとは

• Compilerとは、high level languageで記述さ

れたプログラム(例えば、

C言語のプログラ

ム)を、機械向き言語(例えば、機械語)のプ

ログラムに変換する(翻訳する)ためのプログ

ラムのこと。

33 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(34)

• 教科書p.2~p.6の図の話しは、自分で読ん

でおいてください。この図はコンパイラの本で

時々出てきます。

34 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(35)

参考文献(一部)

1. コンパイラ原理・技法・ツール,原田賢一

(訳),サイエンス社(1990).

2. アルゴリズム+データ構造=プログラム,

片山卓也

(訳),日本コンピュータ協会(1980).

(一部誤りあり!)

3. 佐々政孝,プログラミング言語処理系,岩波

書店

(1989).

35 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(36)

数式の例

• A = B*3.14 + C/A

• Area = 2*3.14*R*R

36 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(37)

数式の解析

kingaku = teika + teika * shouhizei

37 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(38)

数式の解析

1. 読み込み(文字列として)

kingaku = teika + teika * shouhizei”

2. 要素(token)の切り出し

kingaku”, “=“, “teika”, “+”, “*”,

“shouhizei”

3. 要素の相互関係の分析

kingaku

teika

teika

+

shouhizei

*

38

(39)

ソース言語

読み込み

字句解析

構文解析

中間語生成

コード生成

目的言語

分析

分析

合成

合成

39 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(40)

数式の解析

1. 読み込み(文字列として)

kingaku = teika + teika * shouhizei”

2. 要素(token)の切り出し

kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”

3. 要素の相互関係の分析

kingaku

teika

teika

+

shouhizei

*

40 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(41)

数式の解析

1. 読み込み(文字列として)

kingaku = teika + teika * shouhizei”

2. 要素(token)の切り出し

kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”

3. 要素の相互関係の分析

kingaku

teika

teika

+

shouhizei

*

41 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(42)

数式の解析

1. 読み込み(文字列として)

kingaku = teika + teika * shouhizei”

2. 要素(token)の切り出し

kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”

3. 要素の相互関係の分析

kingaku

teika

teika

+

shouhizei

*

42 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(43)

数式の解析

1. 読み込み(文字列として)

読み込み

kingaku = teika + teika * shouhizei”

2. 要素(token)の切り出し

字句解析

kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”

3. 要素の相互関係の分析

構文解析

kingaku

teika

teika

+

shouhizei

*

43 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(44)

数式の解析

1. 読み込み

– ファイルからの入力技法

2. 字句解析

– 有限オートマトンの理論

– 正規文法

– 正規表現

3. 構文解析

– スタックオートマトン理論

– 文脈自由文法

44 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(45)

前提知識

• 言語理論とオートマトン

– 前期科目「言語理論とオートマトン」

– 抽象的・論理的な思考への慣れ

(特に、正規表現と有限オートマトン)

• プログラミング技法

– 今までいろいろと習ってきましたよね!

– 基本的な知識があれば一応OK

– ファイルの入出力が難しい人もいるかも…

45 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(46)

学んで得られるもの

• 言語理論とオートマトン

– 抽象的・論理的な思考への慣れ

– ソフトウェア分野における基本的概念

• 正規表現 etc.

• プログラミング言語へのより深い理解

• プログラミング技法

– プログラミング力(知識)アップ

– 洗練されたアルゴリズムの理解

などなど

46 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(47)

• 言語プロセッサ関連は、

コンピュータサイエン

スの英知

が集積されている!

• この授業を取った人は先見の明がある!

47 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(48)

受講者の行動指針

• 必ず復習をする。

48 Copyright© 2014 School of Computer Science, Tokyo University of Technology

(49)

1. コンピュータの階層化モデルを説明せよ。

2. 命令(command)と指令(instruction)の使い

分けは?

3. 言語プロセッサにはどんなものがあるか?

4. コンパイル処理の処理工程(処理手順)はど

うなっているか?

5. トークン(token)とは何か?

復習問題

(50)

次回までの予習

1. 教科書の目次に目を通しておくこと。

2. 第1章を読んでおくこと。

50 Copyright© 2014 School of Computer Science, Tokyo University of Technology

参照

関連したドキュメント

儀礼の「型」については、古来から拠り所、手本とされてきた『儀礼」、『礼記』があり、さらに朱喜

地図 9 “ソラマメ”の語形 語形と分類 徽州で“ソラマメ”を表す語形は二つある。それぞれ「碧豆」[pɵ thiu], 「蚕豆」[tsh thiu]である。

いずれも深い考察に裏付けられた論考であり、裨益するところ大であるが、一方、広東語

「父なき世界」あるいは「父なき社会」という概念を最初に提唱したのはウィーン出身 の精神分析学者ポール・フェダーン( Paul Federn,

しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与

Guasti, Maria Teresa, and Luigi Rizzi (1996) "Null aux and the acquisition of residual V2," In Proceedings of the 20th annual Boston University Conference on Language

②上記以外の言語からの翻訳 ⇒ 各言語 200 語当たり 3,500 円上限 (1 字当たり 17.5

今回の調査に限って言うと、日本手話、手話言語学基礎・専門、手話言語条例、手話 通訳士 養成プ ログ ラム 、合理 的配慮 とし ての 手話通 訳、こ れら