比較プログラム言語論 平成16年5月19日 森田 彦.

Slides:



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

比較プログラム言語論 平成16年4月28日 森田 彦.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
比較プログラム言語論 平成17年5月18日 森田 彦.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
コンパイラ 2011年10月17日
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
授業展開#11 コンピュータは 何ができるか、できないか.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
データ構造と アルゴリズム 知能情報学部 新田直也.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
コンパイラ 2012年10月15日
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
コンパイラ 2012年10月22日
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
ドローン(UAV)とPhotoScanを用いた 3次元データの作成・活用及び業務 対策セミナー アンケート集計
コンパイラ 2011年10月24日
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
第四回 ゲーム                 05A1054         前田嵩公.
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
形式言語の理論 5. 文脈依存言語.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
東京工科大学 コンピュータサイエンス学部 亀田弘之
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力
オートマトンとチューリング機械.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
比較プログラム言語論 平成17年5月11日 森田 彦.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
計算の理論 II 前期の復習 -有限オートマトン-
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
第1章 いよいよプログラミング!! ~文章の表示 printf~
プログラミング演習I 2003年4月30日(第3回) 木村巌.
コンパイラ 2012年10月1日
文法と言語 ー文脈自由文法とLR構文解析ー
計算の理論 I 非決定性有限オートマトン(NFA)
電気・機械・情報概論 VBAプログラミング 第1回 2018年6月25日
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
5.チューリングマシンと計算.
計算の理論 I -プッシュダウンオートマトン-
計算の理論 I プッシュダウンオートマトン 火曜3校時 大月 美佳 平成16年7月6日 佐賀大学知能情報システム学科.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
コンパイラ 2012年10月11日
比較プログラム言語論 平成16年5月12日 森田 彦.
オートマトンって? (Turing machine).
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
計算の理論 I -講義について+αー 火曜3校時 大月美佳 平成31年8月23日 佐賀大学理工学部知能情報システム学科.
自然言語処理2016 Natural Language Processing 2016
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
計算の理論 II 多テープTuring機械 月曜4校時 大月美佳 平成16年11月29日 佐賀大学知能情報システム学科.
1.2 言語処理の諸観点 (1)言語処理の利用分野
Presentation transcript:

比較プログラム言語論 平成16年5月19日 森田 彦

レポート(5/12)総括 < テーマ > <興味を持った点> <レポートへのコメント> <感想> <質問>  < テーマ >  本日の講義で、あなたが最も興味を持った点はどのような点ですか?講義の全体的な感想と共に、できる限り具体的に、200字~400字程度で記述して下さい。  <興味を持った点> 翻訳(コンパイル)の過程 最適化処理 D言語 <レポートへのコメント> 「プログラミング言語は簡単になっていない」という意見に同意が集まっています。→HPを参照して下さい。  <感想> エスペラント語について  <質問> 多数あり

興味1-コンパイルの過程- 最も興味を持った点は、プログラムの実行までには色々なことをやっているところです。 その中でも、コンパイルの過程で字句解析、構文解析、意味解析では原始プログラムを字句に分解しその字句が文法的に正しいかをチェックしているとか、最適化ではプログラムの時間効率と領域効率を向上させるためにいろんな方法がとられていることを初めて知った。 普段は何気なくつかっているけど、プログラムの実行までにこういうことが行われているのはすごいと思った。

興味2-最適化- 今日の講義の中で最も興味を持った点は、最適化についてです。ただひとこと「最適化」と言っても、演算回数を減らすのには実に様々な種類があり、一つ一つは時間・領域ともにほんの少しの節約にしかならなくとも、プログラムの内容が複雑になりソースが長くなれば長くなるほど効率を上げているのだなと思いました。(中略)人間が多少効率を悪く書いてしまったプログラムを、人間が考えたシステムによって直されるというのは面白いと思いました。 今まで最適化と言ってもただ簡単にその処理を簡単にすると言う1つの処理を行っているだけだと思っていたが、最適化の方法が色々あるのに、少々関心が持てた。たたみこみや共通式の置き換え、繰り返し文の再編、レジスタの割り付けの再編、式評価の変更、そしてサブルーチンの組み込みという処理全てをあわせて最適化なのだということがわかった。

興味3-D言語- 今回の講義で一番興味を引いたのはC言語の続きのD言語なるものがあるという話でした、前回の講義ではまだ開発されていないと言っていたけど探すと意外に見つかるものなのだと思いました、しかし開発元が違うみたいなので一般に普及することは無いかなと思いました。 言語を作ってもこのように世間に知れ渡らないまま多くの言語が消えたのかと考えると言語開発の会社も大変だと思いました。そして多くの言語が作られていることからプログラム言語で出来ることはこれからどんどん増えていくんだと考えさせられるところでもありました。

感想-エスペラント語- 講義の内容と、ちょっと外れたところまでサポートしていただいて、ありがとうございました。エスペラントについては少し調べたことがあるものの、「エスペラント博士が開発した」というのと言語本体を少々だけだったので、今日のお話が聞けてとても面白かったです。 質問の中にエスペラント語という世界共通の言語を目指した言語があると初めて知り驚きました。そして、その言語を作る動機として「諸民族の平和と共存」という大義を知り、考えさせられました。現状では世界の共通語として英語が使われていますが、やはりネイティブに分があるのは否めないと思ったからです。

質問1-コンパイラとインタプリタの融合- コンパイラは翻訳と実行が分かれていて、デバッグに手間がかかるけど、実行速度が速いというメリットがあり、インタプリタは翻訳と実行が同時にでき、コンパイラとは逆にデバッグには便利だけど、実行速度が遅いというデメリットがあります。が、でもどうしてこの二つのメリットの部分だけを組み合わせた、もっと効率のいい翻訳と実行のプログラミングはないのでしょうか? コンパイラはテバックに手間がかかるが、実行速度が速い。インプリンタはテバックには便利だが,実行速度は遅い。というように、それぞれにメリットとデメリットがあります。テバックに便利で、実行速度が速いというのは不可能なのですか?  デバッガ機能を備えたコンパイラシステムが発達  → JBuilderもその一例 Javaのコンパイラ戦略

質問2-最適化- 複雑なプログラムの中で最適化が行われていなかった場合の処理の速度と行われている場合の処理の速度ではどのくらいの差が出てくるのだろうと思いました。 人間が回りくどくプログラムしたとき(ソースを打ち込んだとき)に、その最適化したプログラムを目に見える形にして表示することはできないのでしょうか?そうしたら、「あ、ここで最適化が行われたんだ。」というのがよくわかり、次からはある程度人間自身が最適化して書き込むようになって、機械が最適化する時間が短縮されると思うのですが。

最適化と分かりやすさについて 無駄な処理をなくすことは必要 しかし、一般に最適化を進めるとプログラムの処理内容が分かりにくくなる。 <例>半径rの円の面積Sと球の体積Vを求める場合 double pi=3.14; S=pi*r*r; V=4*pi*r*r*r/3; double pi=3.14; S=pi*r*r; V=4*S*r/3; 最適化 原則:プログラムは分かりやすく。後はコンパイラの最適化に任す。 しかし、処理時間のかかるプログラムでは、プログラマによる最適化の工夫(アルゴリズムの工夫も含む)が必要。

質問3-コンパイラのエラーメッセージ- 私自身はコンパイルの時点でエラーになることが多いですが、コンパイラはどこまでエラーをだすのでしょうか? ひょっとしたら、コンパイルできるエラーも存在するのではないかと思っています。たぶん、言語によっては厳しいものも安易なものもあると思いますが、そこはどうなのでしょうか?? 去年の講義でも思いましたがプログラムを打って実行する際にエラーが発生して間違っている場所はわかりましたがこれをどのように修正したらよいかわかればな、とずっと思っていました。今後このような機能のついたソフトは登場するのでしょうか?

Delphi VS Java 言語によって文法エラーのレベルが異なる。 var a,b,c: Integer; begin a:=4; c:=a/b; end; ← エラー <Delphi> int a,b,c; a=2; b=3; c=a/b; <Java> エラーなし! 文法的に厳しい 皆は、どちらを好みますか?

JBuilderのエラーメッセージ 内容によっては、修正候補を示してくれている。

<本日のテーマ> 翻訳システム(コンパイラ)の数学理論 <内容> チューリング機械 オートマトン 形式文法とオートマトンの関係

チューリングの考え 1937年 アラン・チューリング(Turing) 計算理論のモデルとしてチューリング機械を提唱 計算とは(チューリングの考え)   紙に書かれた記号を読み、それに基本的な思考操作を加えて新しい記号を書く。→この操作の繰り返し チューリング機械   上の“計算”を機械的に実行するモデル→計算過程をある理想的な機械で表現→計算可能とはどういうことかを研究した。

チューリング機械 テープ、ヘッド、有限状態制御部 コンピュータの原型モデル チューリング機械の動作 ①ヘッドが見ている記号を書き換える → 記憶装置 → 入出力装置 コンピュータの原型モデル → CPU チューリング機械の動作   ①ヘッドが見ている記号を書き換える   ②ヘッドを左に動かす   ③ヘッドを右に動かす   ④計算を終了する

チューリング機械の例 記号”0”を記号”1”に置き換える 有限状態制御部の規則(状態遷移関数) (Q1,1)=(Q2,1,R)   (Q2,B)=(Q2,B,L)    (Q2,1)=(S,0,R)   Q1,Q2,S:状態   1,0,B:テープの記号   R,L:ヘッドの移動 1 B ・・・ Q1 1 B ・・・ Q2 1 B ・・・ Q2 0 B ・・・ S 状態遷移関数で表現→計算可能

オートマトン オートマトン(automaton)  元々は、人や動物のまねをする装置を指す→ロボット→自動計算機械のモデル→チューリング機械がその代表例  情報科学では・・・ 状態遷移関数によって定義された操作を繰り返す仮想機械を指す。 状態遷移関数の種類によって色々なオートマトンを定義可能

有限オートマトン テープ、ヘッド、有限状態装置から構成 ヘッドは一方向のみ動く 有限オートマトンMの定義 M=(Q,Σ,δ,q0,F)  ヘッドは一方向のみ動く 有限オートマトンMの定義  M=(Q,Σ,δ,q0,F)  Q:状態、Σ:入力記号、δ:状態遷移関数  q0:初期状態、F:受理状態

有限オートマトンの例 Q={q1,q2,q3}、Σ={a,b}、F={q2} δ(q0,a)=q1, δ(q0,b)=q0 ,  δ(q0,ab)= δ(δ(q0,a),b)=δ(q1,b)=q2 入力記号”ba”は受理されるか? 形式文法と似ている・・・? 受理! 受理されない! δ(q0,ba)= δ(δ(q0,b),a)=δ(q0,a)=q1

形式言語理論との関係 言語の種類 受理するオートマトン 句構造文法言語 チューリング機械 文脈依存文法言語 線形有界オートマトン 文脈自由文法言語 プッシュダウンオートマトン 正規文法言語 有限オートマトン コンパイラ(+コンピュータ)→オートマトンの一種

ALGOL60プロジェクトの背景 形式文法理論の誕生 チューリング機械に始まるオートマトン理論の発展 オートマトン理論と形式文法理論の融合 プログラミング言語理論の基礎が確立  ‘60年代はコンパイラ開発の時代 ’70年代はプログラミング方法の研究へ

第5回目レポート  < テーマ >  本日の講義で、あなたが最も興味を持った点はどのような点ですか?講義の全体的な感想と共に、できる限り具体的に、200字~400字程度で記述して下さい。 なお、上の記述を行った上で,質問や以前のレポートに対するコメント等を付加しても結構です。 提出先:hiko@edu.sgu.ac.jp  件名:「学籍番号(半角)+半角空白+氏名」を記入して下さい。    例) s02xxx 学院太郎

Javaのコンパイラ戦略 Java言語の翻訳は2段階 Java言語プログラム Javaコンパイラ コンパイラとインタプリタの併用 Java言語プログラム Javaコンパイラ Javaバイトコード(CPUやOSによらず共通) Javaインタプリタ(Windows) Javaインタプリタ(UNIX) Javaインタプリタ(MacOS) プログラムの実行 高い互換性(移植性)を実現 機械語ではない!