20100615 フレッシュマンセミナー

58
フレッシュマン セミナー 国島丈生( [email protected] 2010-06-16

Upload: takeo-kunishima

Post on 15-Feb-2017

24 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 20100615 フレッシュマンセミナー

フレッシュマン セミナー

国島丈生([email protected])2010-06-16

Page 2: 20100615 フレッシュマンセミナー

自己紹介✦ 名前 Takeo Kunishima/国島丈生

✦ 現在地 Akashi, Hyogo, Japan

✦ Web http://kunishi.blogspot.com/✦ 自己紹介 情報科学分野の大学教員。専門はデータ工学、文書工学、マークアップ言語、Webなど。総社まで遠距離通勤中。BSD/Mac/Ruby/ML/REST/lifelog/iPod/iPhone/合唱/弦楽四重奏/ルネッサンス音楽/フェルメール/女性ジャズボーカル/

UKロック/北欧デザイン/写真/組版/タイポグラフィ/中世文学

Twitter (@kunishi) のプロフィールより

Page 3: 20100615 フレッシュマンセミナー

経歴

1985-1994 1994-1997 1997-2010

Page 4: 20100615 フレッシュマンセミナー

担当講義✦ 情報通信工学実験IB(2年)

✦ プログラミング言語Ⅱ(2年)

✦ コンパイラ(3年)

✦ プログラミング言語Ⅲ(3年)

✦ 形式言語理論(修士1年)

Page 5: 20100615 フレッシュマンセミナー

ソフトに興味あり✦ データベース

✦ テキスト処理、文書(XML)処理

✦ プログラミング言語

✦ Web技術

✦ オートマトン理論

Page 6: 20100615 フレッシュマンセミナー

kunishi on Books

Page 7: 20100615 フレッシュマンセミナー

kunishi on the web

Page 8: 20100615 フレッシュマンセミナー

今日の内容

✦ 高校・大学時代の体験談✦ 高校数学から情報科学へ✦ そしてプログラミングへ

Page 9: 20100615 フレッシュマンセミナー

高校・大学時代の 体験談

Page 10: 20100615 フレッシュマンセミナー

高校時代は

✦ コンピュータとは無縁✦ 数学が好き

✦ 物理・化学は… (>_<)

✦ 英語や国語の方が得意だったかも

Page 11: 20100615 フレッシュマンセミナー

パソコンは高嶺の花✦ CPU 8MHz

✦ HDDなし(FDのみ)

✦ Windows なし

✦ 353,000円(今だと50万円以上?)

NEC PC-9801VX01 (1987年)

Page 12: 20100615 フレッシュマンセミナー

関数電卓?✦ ポケットコンピュータ(ポケコン)

✦ メモリ2~16KB

✦ ディスクなし

✦ BASICのプログラムが動いた

Page 13: 20100615 フレッシュマンセミナー

Internet 黎明期

✦ 1984 東大、東工大、慶応大

✦ 1988 大学・企業の研究所間

✦ 1992以降 個人へ普及

✦ 1990年代 携帯電話登場

Page 14: 20100615 フレッシュマンセミナー

数学を生かしたかった

✦ 当時の京大では選択肢は3つ

✦ 理学部数学科✦ 工学部数理工学科✦ 工学部情報工学科

Page 15: 20100615 フレッシュマンセミナー

どう選んだ?

✦ 理学部数学科→就職に困るらしい

✦ 数理工学科 vs. 情報工学科

✦ 違いがさっぱり分からない✦ 偏差値の高いほう(情報工学科)を選択

Page 16: 20100615 フレッシュマンセミナー

1985年 京都大学工学部情報工学科入学

Page 17: 20100615 フレッシュマンセミナー

誤 算

Page 18: 20100615 フレッシュマンセミナー

誤算その1

✦ 物理が結構必要だった…

Page 19: 20100615 フレッシュマンセミナー

誤算その2✦ 大学の数学は難しかった…

Page 20: 20100615 フレッシュマンセミナー

誤算その3✦ 専門では微積分はあまり使わなかった

✦ 「独特」の理論

✦ ブール代数etc.

✦ パズルに近い

Page 21: 20100615 フレッシュマンセミナー

結果オーライ?

✦ もともとパズルは好き✦ 数学よりプログラムの方が合っていたらしい

Page 22: 20100615 フレッシュマンセミナー

研究室配属をどうしよう✦ 全部で6研究室…だったのだが

✦ 4年生になる前にソフト系2研究室の教授が退官→研究室配属なし

✦ 残り4研究室は:ハードウェア、論理回路、OS、人工知能

✦ 一番ソフト寄りなのは人工知能だが、教授との相性がイマイチ

Page 23: 20100615 フレッシュマンセミナー

どう選んだ?

✦ 教授との相性が一番良かった論理回路講座を選択✦ 研究室選びの際、教員との相性は割と大事です

✦ しかし、やはりソフトへの拘りはありまして…

✦ 講座の中でもソフト寄りのテーマ(グラフィックス)を選択

Page 24: 20100615 フレッシュマンセミナー

卒業研究でやったこと

C, C++で1,500行程度のプログラミング

Page 25: 20100615 フレッシュマンセミナー

念のため

✦ プログラミングの達人では決してない✦ 同期にももっと凄いのがいた✦ 皆さんの中の凄腕プログラマのほうが実力は私より上のはず

Page 26: 20100615 フレッシュマンセミナー

ところで、就職は?✦ 結局、一度も就職活動はしなかった

✦ どういう企業がいいのか、学生時代はイメージが湧かなかった

✦ Webはまだなかった→Web関連の企業もなかった

✦ 大学教員になって後悔してる?

✦ 少なくとも、学生さんの教育は割と合っていると思っているので、後悔はしてません

Page 27: 20100615 フレッシュマンセミナー

高校数学から 情報工学へ

Page 28: 20100615 フレッシュマンセミナー

情報工学の二面性

ハードウェアを作る

ソフトウェアを作る

物理 連続系の数学

離散系の数学

Page 29: 20100615 フレッシュマンセミナー

連続系 vs 離散系

連続した数(実数)

連続しない数(整数, 0/1 etc.)

微分・積分

集合剰余系場合の数数列

数学的帰納法

物理現象

情報数学

Page 30: 20100615 フレッシュマンセミナー

情報科学への橋渡し

Page 31: 20100615 フレッシュマンセミナー

ケーニヒスベルクの橋✦ 図の7つの橋を各1度ずつ通って元の場所に戻ってくることができるか。ただし、同じ橋を2度以上通ってはならない。

✦ 関連:グラフ理論

参考:増田直紀「『複雑ネットワーク』とは何か」(講談社ブルーバックス)

Page 32: 20100615 フレッシュマンセミナー

ハノイの塔✦ 台の上に3本の棒A, B, Cがあり、Aに n 枚の円盤がはまっている。円盤は下ほど半径が大きい。次のルールを満たしながら、円盤をすべてBに移すのに必要な手数を n で表せ。✦ 一度に一枚の円盤しか移動できない✦ 途中で円盤の大小を逆にしてはいけない

✦ 関連:再帰

Page 33: 20100615 フレッシュマンセミナー

例:定積分

✦ 人間は不定積分から計算

⇤ 1

0

x2dx =�13x3

⇥1

0

=13

Page 34: 20100615 フレッシュマンセミナー

例:定積分✦ コンピュータは不定積分のような式変形は苦手

✦ 区分求積法

n = 1000 で 0.3338335

⌃ 1

0

x2dx ⇥n⇧

k=1

⇤�k

n

⇥2

· 1n

⌅=

1n3

n⇧

k=1

k2

Page 35: 20100615 フレッシュマンセミナー

プログラムの例

S = 0;for (k = 1; k <= n; k ++) { S = S + k * k;}S = S / (n * n * n);

⌃ 1

0

x2dx ⇥n⇧

k=1

⇤�k

n

⇥2

· 1n

⌅=

1n3

n⇧

k=1

k2

Page 36: 20100615 フレッシュマンセミナー

フィボナッチ数列F0 = 1, F1 = 1, Fn+2 = Fn+1 + Fn

1, 1, 2, 3, 5, 8, 13, 21, 34, …だが一般項は複雑

Fn =1⇥5

⇤�1 +

⇥5

2

⇥n

+

�1 −

⇥5

2

⇥n⌅

Page 37: 20100615 フレッシュマンセミナー

プログラム=漸化式

int F(int n) {

if (n == 0) return 1; else if (n == 1) return 1; else {

return F(n-1)+F(n-2); }

}

F0 = 1, F1 = 1, Fn+2 = Fn+1 + Fn

Page 38: 20100615 フレッシュマンセミナー

法則を見つける

✦ 今日は日曜日です。100日後は何曜日?

✦ 1日後は月、2日後は火、…100日後は火

Page 39: 20100615 フレッシュマンセミナー

法則を見つけよ

✦ 今日は日曜日。1億日後は何曜日?

✦ とても数えられません

✦ 7の倍数日後はいつも日曜日。1億÷7 = 14285714 あまり 2。∴火曜日

Page 40: 20100615 フレッシュマンセミナー

法則を見つけよ✦ 今日は日曜日。10100日後は何曜日?

✦ 10100なんて計算できない

✦ 10100を7で割った余りも計算できない

✦ 10nを7で割った余りを、n=1, 2, …で計算してみよう

Page 41: 20100615 フレッシュマンセミナー

すると✦ 100 % 7 = 1, 101 % 7 = 3, 102 % 7 = 2,

103 % 7 = 6, 104 % 7 = 4, 105 % 7 = 5, 106 % 7 = 1, 107 % 7 = 3, …✦ %:剰余を表す演算子

✦ 周期6で同じ数が出る(1, 3, 2, 6, 4, 5)

✦ 100 % 6 = 4 ∴木曜日

Page 42: 20100615 フレッシュマンセミナー

プログラムにするとvoid nannyoubi(int n) { if (n%6 == 0) { printf(“月曜日¥n”); } else if (n%6 == 1) { printf(“水曜日¥n”); } else if (n%6 ==2) { /* 以下省略 */ }

Page 43: 20100615 フレッシュマンセミナー

そして プログラミングへ

Page 44: 20100615 フレッシュマンセミナー

前提として✦ 人それぞれ向き不向きはあります

✦ 入試をくぐり抜けてこの場にいる皆さんなら

✦ プログラムが書けるようになる素地が一定程度あるはずです

Page 45: 20100615 フレッシュマンセミナー

真似を侮るなかれ✦ インプットなくしてアウトプットなし✦ まずは他人のコードの真似から✦ 単なるコピペにとどまるなかれ✦ 人のプログラムを読んで引出しを増やせ

✦ 読む≠字面を追う、読む=とことん理解する

✦ 少し難しいものを、興味の持てるものを

Page 46: 20100615 フレッシュマンセミナー

本を読もう✦ プログラム=プログラミング言語で書かれた文章

✦ 論理の正しさ+分かりやすさ・読みやすさ✦ 経験に基づく仮説

✦ 国語力のある人はプログラミング能力も高い✦ 文章に触れる機会を増やしてください(ジャンルは問いません)

Page 47: 20100615 フレッシュマンセミナー

Cと相性が悪くても✦ 世の中には無数にプログラミング言語がある✦ 当然、好き嫌いも相性もあります

✦ プログラミングの根は共通✦ 言語を一つマスターすれば、他の言語にも勘が働くようになります

Page 48: 20100615 フレッシュマンセミナー

ここだけの話ですが✦ 正直、Cはそんなに達人ではありません

✦ どっちかというと、めんどくさくて、なるべくなら使いたくない言語です ^^;

✦ でもまあ、ポインタは知っておかねばならないね✦ 本当にプログラミングが好きになったのは、スクリプト言語や関数型言語を知ってからです

✦ 私の講義で一部扱います(Standard ML, Ruby)

Page 49: 20100615 フレッシュマンセミナー

プログラミング学習 ≒

語学学習

Page 50: 20100615 フレッシュマンセミナー

1章が重要

Page 51: 20100615 フレッシュマンセミナー

諸君の健闘を祈る

Page 52: 20100615 フレッシュマンセミナー

One More Thing...

※ Googleで “One more thing”で検索してみましょう

Page 53: 20100615 フレッシュマンセミナー

何が役立つかは 神のみぞ知る

Page 54: 20100615 フレッシュマンセミナー

興味は発散有限オートマトン理論

スクリプト言語による プログラミング

趣味のWebページ作成

データ工学

関数型 プログラミング言語

デザイン

Page 55: 20100615 フレッシュマンセミナー

すべてはWebに収斂した有限オートマトン理論

スクリプト言語による プログラミング

趣味のWebページ作成

データ工学

関数型 プログラミング言語

デザイン

Page 56: 20100615 フレッシュマンセミナー

何が役立つかは 神のみぞ知る

Page 57: 20100615 フレッシュマンセミナー

諸君の健闘を祈る

Page 58: 20100615 フレッシュマンセミナー

レポート課題✦ 以下についてA4用紙1~2枚程度にまとめ、6/

22(火)17:00までに提出せよ。(提出場所:2610室)

✦ ケーニヒスベルクの橋、ハノイの塔(最低限どちらか一方、解に至る経過も含めて)

✦ 今日の講義の感想