12
2017/5/23 1 プログラミング言語論 (Concepts on Programming Languages) 趙 建軍 情報知能工学部門 1 2017/5/23 第6回: 命令型言語 (Imperative Programming Languages) 2017.05.18 2 2017/5/23

2017-L06-Imperative Programming Languages …stap.ait.kyushu-u.ac.jp/~zhao/course/2017/2017-L06...Finite-State Automato (有限オートマトンを) Push-Down Automaton (PDA)

  • Upload
    lamliem

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

2017/5/23

1

プログラミング言語論(ConceptsonProgrammingLanguages)

趙 建軍情報知能工学部門

12017/5/23

第6回: 命令型言語(Imperative Programming Languages)

2017.05.18

22017/5/23

2017/5/23

2

3

講義の内容

抽象機械計算モデル 命令型言語パラダイム 代入文、変数の概念と状態 制御文 構造化プログラミング データ型 副プログラムと手続き

2017/5/23

プログラミング言語パラダイム(1)

プログラミングパラダイムは、プログラマにプログラムの見方を与えるものと言える。たとえば、 オブジェクト指向プログラミングにおいて、プ

ログラムとはオブジェクトをつくりそれを管理するものである。

関数型プログラミングにおいては、状態を持たない関数の評価の連続である。

4

2017/5/23

3

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

命令型言語パラダイム

関数型言語パラダイム

論理型言語パラダイム

オブジェクト指向型言語パラダイム

5

プログラミング言語パラダイム (3)

6

2017/5/23

4

計算モデルの必要性

世の中の情報システム(コンピュータや生物)は非常に複雑

この情報システムがどのような原理に基づくかを知るには数学的基盤を持つ抽象的な枠組みを導入する必要がある

7

計算モデルとは

コンピュータによる計算機構を抽象的に捉えた数学的な枠組みであり, これにより計算に関する様々な議論が可能になる 計算するとはどういうことであるかの説明 計算モデルが変わるとプログラミング言語

の設計も変わる

プログラミング言語パラダイムの最重要かつ主要な構成要素

8

2017/5/23

5

計算モデル

情報システムの抽象的な枠組み=計算モデル

9

代表的な計算モデル

(逐次)計算モデル 抽象機械計算モデル 関数型計算モデル 論理型計算モデル 項書き換え型計算モデル

(並列分散)計算モデル プロセス代数(プロセスカルキュラス) イベント機械モデル(ペトリネット)

10

2017/5/23

6

代表的な計算モデル

(逐次)計算モデル 抽象機械計算モデル 関数型計算モデル 論理型計算モデル 項書き換え型計算モデル

(並列分散)計算モデル プロセス代数(プロセスカルキュラス) イベント機械モデル(ペトリネット)

11

抽象機械計算モデル

主にオートマトン理論での計算システムの理論的モデルを意味する

122017/5/23

2017/5/23

7

13

文法とオートマトンの関係

Grammar

Regular�Expression(正規表現)

Context-Free�Grammar�(文脈自由文法)

Context-Sensitive�Grammar(文脈依存文法)

Automaton

Finite-State�Automato(有限オートマトンを)

Push-Down�Automaton(PDA)

Turing�Machine(チューリング機械)

2017/5/23

14

文法とオートマトンの関係

Grammar

Regular�Expression(正規表現)

Context-Free�Grammar�(文脈自由文法)

Context-Sensitive�Grammar(文脈依存文法)

Automaton

Finite-State�Automato(有限オートマトンを)

Push-Down�Automaton(PDA)

Turing�Machine(チューリング機械)

2017/5/23

2017/5/23

8

15

チューリング機械

チューリングマシン ( Turing Machine) は計算模型のひとつで、計算機を数学的に議論するための単純化・理想化された仮想機械である

論文「計算可能数についての決定問題への応用」,1936 アラン・チューリング

2017/5/23

16

アラン・チューリング

計算機科学分野のノーベル賞

AlanMathisonTuring

1912年6月23日‐1954年6月7日

2017/5/23

2017/5/23

9

チューリング機械

チューリング機械 (Turing Machine) は抽象機械計算モデルにおける計算の典型例

2017/5/23 17

18

チューリング機械の動作1. 入力テープを1つ読む(入力記号)2. 現在の状態と入力記号の組合せに応じて

1. ヘッドを動かす(右、左、動かさない)2. ヘッド位置に記号を書く3. 次の状態を決める

3. 1に戻って繰り返す

2017/5/23

2017/5/23

10

例 計算とは、計算機の内部状態を変えてゆくもの 計算が終わったときの計算機の内部状態が計算

の結果

s:35 s:36

実行前の内部状態

実行後の内部状態

for i:=1 to 10 do t:=t+1

s:=s+1

t:35 t:45

192017/5/23

20

命令型言語パラダイム

状態を次々に変化させることで計算をさせる計算モデルでは、命令型プログラミング言語 (imperative programming languages)が発展する チューリング機械は状態遷移表を持つが、表が

大きくなったとき表形式は得策でない

フローチャートは状態遷移図であり、分かりやすいが書き下すのが困難

そのため命令型言語が適していると考えられる

2017/5/23

2017/5/23

11

命令型言語

最も一般的なパラダイム ノイマン型コンピュータが、その計算モデ

ルである 命令(つまり代入文)の繰り返しにより、

変数の値(「状態」 という)を動的に変化させ、計算を行う

21

22

命令型言語の特徴

変数と変数への代入 (代入型言語ともいう) 変数と変数の構造 データ型 データ型と手続きの結びつき (抽象データ型)

制御構造の発展 構造化プログラミング

手続き(Procedure) 手続き呼び出しと値引渡し 再帰呼び出し

2017/5/23

2017/5/23

12

状態遷移表

23

0 1

S T U

T T U

U T U

states

inputs

2017/5/23

状態遷移図

242017/5/23