言語プロセッサ2016 Language Processors 2016

Slides:



Advertisements
Similar presentations
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Advertisements

東京工科大学 コンピュータサイエンス学部 亀田弘之
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
コンパイラ 2011年10月17日
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
形式言語とオートマトン2013 第1回目 -Formal Languages & Automata-
情報科学1(G1) 2016年度.
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
プログラムはなぜ動くのか.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月15日
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ2015 Language Processors 2015
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
形式言語とオートマトン2011 第1回目 -Formal Languages & Automata-
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
学籍番号順に着席のこと 001~056までは741教室へ 057~110までは743教室へ
プログラミング言語入門 手続き型言語としてのJava
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン Formal Languages and Automata 第4日目
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
FlexとBison+アルファ -実習編-
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
情報リテラシー2014 part 5/5 (亀田担当分最終回)
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
東京工科大学 コンピュータサイエンス学部 亀田弘之
形式言語とオートマトン Formal Languages and Automata 第4日目
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
東京工科大学 コンピュータサイエンス学部 亀田弘之
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
東京工科大学 コンピュータサイエンス学部 担当教員:亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
コンパイラ 2012年10月1日
コンピュータアーキテクチャ 第 10 回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンピュータアーキテクチャ 第 5 回.
東京工科大学 コンピュータサイエンス学部 亀田弘之
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
自然言語処理2015 Natural Language Processing 2015
計算の理論 I -講義について+αー 月曜3校時 大月美佳 平成31年5月18日 佐賀大学理工学部知能情報システム学科.
コンピュータアーキテクチャ 第 5 回.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
第6回放送授業.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
形式言語とオートマトン Formal Languages and Automata 第5日目
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I -講義について+αー 火曜3校時 大月美佳 平成31年8月23日 佐賀大学理工学部知能情報システム学科.
自然言語処理2016 Natural Language Processing 2016
1.2 言語処理の諸観点 (1)言語処理の利用分野
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
Presentation transcript:

言語プロセッサ2016 Language Processors 2016 平成28年9月26日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之 url: kameken.clique.jp/Lectures/Lectures2016/Compiler2016/

まずはイントロから… なぜ言語プロセッサを学ぶのか? (Why do we study a course 言語プロセッサ ?) Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

(参考)これからはIoTの時代 IoT Japan 2014 (10月15日~17日開催)http://itpro.nikkeibp.co.jp/expo/2014/iot/ IoTの概要図 (出典)http://tocos-wireless.com/jp/tech/Internet_of_Things.html Copyright© 2016 School of Computer Science, Tokyo University of Technology

情報システム Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

複雑だなぁ セキュリティ ネットワーク クラウドコンピューティング モバイル Copyright© 2016 School of Computer Science, Tokyo University of Technology

Divide and Conquer (困難は分割し、しかる後に統合せよ!) Copyright© 2016 School of Computer Science, Tokyo University of Technology

何が基本なのかなぁ? Copyright© 2016 School of Computer Science, Tokyo University of Technology

ディスプレイ 本体 キーボード Copyright© 2016 School of Computer Science, Tokyo University of Technology

出力 (Output) 処理 入力 (Input) Copyright© 2016 School of Computer Science, Tokyo University of Technology

本体内部が大切! Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

コンピュータの階層化モデル Examples 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 Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

Copyright© 2016 School of Computer Science, Tokyo University of Technology

? 高水準言語 ー> 論理回路 main( ){ int a; a = 1; printf(“%d”,a); } 高 水 準 言 語 高水準言語 ー> 論理回路 main( ){ int a; a = 1; printf(“%d”,a); } ? 高 水 準 言 語 論 理 回 路 Copyright© 2016 School of Computer Science, Tokyo University of Technology

論理回路 Copyright© 2016 School of Computer Science, Tokyo University of Technology

言語プロセッサとは 高水準言語によるプログラム (処理手順の記述,命令群) -> 論理回路制御指令群 (注)・命令:command   (処理手順の記述,命令群)   -> 論理回路制御指令群 (注)・命令:command    ・指令:instruction Copyright© 2016 School of Computer Science, Tokyo University of Technology

言語プロセッサとは 高水準言語によるプログラム (処理手順の記述,命令群) -> 論理回路制御指令群 (注)・命令:command   (処理手順の記述,命令群)   -> 論理回路制御指令群 (注)・命令:command    ・指令:instruction Copyright© 2016 School of Computer Science, Tokyo University of Technology

C言語・Java言語 アセンブリ言語 Copyright© 2016 School of Computer Science, Tokyo University of Technology

main(){ } Copyright© 2016 School of Computer Science, Tokyo University of Technology

.def ___main; .scl 2; .type 32; .endef .text .globl _main $ 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 Copyright© 2016 School of Computer Science, Tokyo University of Technology

main(){ int a; a = 20; a = a + 30; a = 100 - a; a = a*7; } Copyright© 2016 School of Computer Science, Tokyo University of Technology

.def ___main; .scl 2; .type 32; .endef .text .globl _main $ 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 leave ret Copyright© 2016 School of Computer Science, Tokyo University of Technology

$ gcc -S filename.c $ ls $ cat filename.s Copyright© 2016 School of Computer Science, Tokyo University of Technology

コンパイラの処理工程概要 ソース言語 読み込み 字句解析 構文解析 中間語生成 コード生成 目的言語 Copyright© 2016 School of Computer Science, Tokyo University of Technology

言語プロセッサの種類 インタープリタ (interpreter) コンパイラ (compiler) Copyright© 2016 School of Computer Science, Tokyo University of Technology

コンパイラの処理(例) X = Y*3.14 + X/Y A = (A + B)*C + B Copyright© 2016 School of Computer Science, Tokyo University of Technology

コンパイラとは Compilerとは、high level languageで記述されたプログラム(例えば、C言語のプログラム)を、機械向き言語(例えば、機械語)のプログラムに変換する(翻訳する)ためのプログラムのこと。 Copyright© 2016 School of Computer Science, Tokyo University of Technology

参考文献(一部) コンパイラ原理・技法・ツール,原田賢一(訳),サイエンス社(1990). アルゴリズム+データ構造=プログラム,片山卓也(訳),日本コンピュータ協会(1980). (一部誤りあり!) 佐々政孝,プログラミング言語処理系,岩波書店(1989). Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の例 A = B*3.14 + C/A Area = 2*3.14*R*R Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 kingaku = teika + teika * shouhizei Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み(文字列として) “kingaku = teika + teika * shouhizei” 要素(token)の切り出し “kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” 要素の相互関係の分析 = kingaku teika + shouhizei * Copyright© 2016 School of Computer Science, Tokyo University of Technology

分析 合成 ソース言語 読み込み 字句解析 構文解析 中間語生成 コード生成 目的言語 Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み(文字列として) “kingaku = teika + teika * shouhizei” 要素(token)の切り出し “kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” 要素の相互関係の分析 = kingaku teika + shouhizei * Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み(文字列として) “kingaku = teika + teika * shouhizei” 要素(token)の切り出し “kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” 要素の相互関係の分析 = kingaku teika + shouhizei * Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み(文字列として) “kingaku = teika + teika * shouhizei” 要素(token)の切り出し “kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” 要素の相互関係の分析 = kingaku teika + shouhizei * Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み(文字列として) 読み込み “kingaku = teika + teika * shouhizei” 要素(token)の切り出し  字句解析 “kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” 要素の相互関係の分析 構文解析 = kingaku teika + shouhizei * Copyright© 2016 School of Computer Science, Tokyo University of Technology

数式の解析 読み込み 字句解析 構文解析 ファイルからの入力技法 有限オートマトンの理論 正規文法 正規表現 スタックオートマトン理論 文脈自由文法 Copyright© 2016 School of Computer Science, Tokyo University of Technology

前提知識 言語理論とオートマトン プログラミング技法 前期科目「言語理論とオートマトン」 抽象的・論理的な思考への慣れ (特に、正規表現と有限オートマトン) プログラミング技法 今までいろいろと習ってきましたよね! 基本的な知識があれば一応OK ファイルの入出力が難しい人もいるかも… Copyright© 2016 School of Computer Science, Tokyo University of Technology

学んで得られるもの 言語理論とオートマトン プログラミング技法 抽象的・論理的な思考への慣れ ソフトウェア分野における基本的概念 正規表現 etc. プログラミング言語へのより深い理解 プログラミング技法 プログラミング力(知識)アップ 洗練されたアルゴリズムの理解  などなど Copyright© 2016 School of Computer Science, Tokyo University of Technology

言語プロセッサ関連は、コンピュータサイエンスの英知が集積されている! この授業を取った人は先見の明がある! Copyright© 2016 School of Computer Science, Tokyo University of Technology

受講者の行動指針 必ず復習をする。 Copyright© 2016 School of Computer Science, Tokyo University of Technology

今日の復習問題 コンピュータの階層化モデルを説明せよ。 命令(command)と指令(instruction)の使い分けは? 言語プロセッサにはどんなものがあるか? コンパイル処理の処理工程(処理手順)はどうなっているか? トークン(token)とは何か? Copyright© 2016 School of Computer Science, Tokyo University of Technology

次回までの予習 教科書の目次に目を通しておくこと。 Copyright© 2016 School of Computer Science, Tokyo University of Technology

自由課題 教科書p.1~p.6(第1章)の図に関する話を自分で読んで勉強する。この図はコンパイラの本で時々出てきます。 Copyright© 2016 School of Computer Science, Tokyo University of Technology