関数型プログラミングのすゝめ

24
関数型プログラミングのすゝめ kinokkory

Upload: yusuke-matsushita

Post on 27-May-2015

775 views

Category:

Technology


4 download

DESCRIPTION

関数型プログラミングをしましょう。

TRANSCRIPT

Page 1: 関数型プログラミングのすゝめ

関数型プログラミングのすゝめ

kinokkory

Page 2: 関数型プログラミングのすゝめ

kinokkory

• @shiatsumat

• 情報オリンピックのファイナリスト

• HaskellとC#とC++が得意

• 「圏論によるプログラミングと論理」の執筆者

Page 3: 関数型プログラミングのすゝめ

yingtai

• @__int

• 文学と哲学に詳しい知識人

• Haskellが得意

• 「圏論によるプログラミングと論理」の執筆者

Page 4: 関数型プログラミングのすゝめ

stibear

• @stibear1996

• ちゃたいを操る仙人

• Lispが得意

• 「マクロのおはなし」の執筆者

Page 5: 関数型プログラミングのすゝめ

君は

Page 6: 関数型プログラミングのすゝめ

関数型プログラミングを

Page 7: 関数型プログラミングのすゝめ

知っていますか?

Page 8: 関数型プログラミングのすゝめ

関数型プログラミング

• 根本的にほかのものと違う

• あなたの人生を変える

• 美しく秩序のあるプログラミング

Page 9: 関数型プログラミングのすゝめ

関数型言語

• Haskell

• Lisp

• F#

• OCaml

• Scala

• Erlang

• などなど

Page 10: 関数型プログラミングのすゝめ

Haskell

• 初心者でも扱いやすい

• 面白い機能の宝庫

• 「Haskellやってます」と言うだけで

凄いプログラマーに見える

Page 11: 関数型プログラミングのすゝめ

Haskell

• 強い型付けで安全なコードが書ける

• 遅延評価で高速化できる

• 簡潔な記述ができる

Page 12: 関数型プログラミングのすゝめ

Haskell

• Haskellは非常に美しい

main = print $ fibs !! 1000000

where fibs = 0 : 1 :

zipWith (¥x y-> mod (x+y) 1000009) fibs (tail fibs)

Page 13: 関数型プログラミングのすゝめ

Haskell

• C言語は美しくない

#include <stdio.h>

int main()

{

int a=1, b=1, i, buf;

for(i=3;i<=1000000;i++){

buf=(a+b)%1000009;

a=b;

b=buf;

}

printf("%d¥n",b);

return 0;

}

Page 14: 関数型プログラミングのすゝめ

Haskell

• 便利な機能がたくさん

–強力な型システム

–参照透明性

–遅延評価

–パターンマッチ

– Template Haskell

Page 15: 関数型プログラミングのすゝめ

Haskell大好き

• kinokkoryもyingtaiもHaskell大好き

• poteti部長もHaskell大好き

• わあいHaskell大好きHaskell大好き

Page 16: 関数型プログラミングのすゝめ

Lisp

• 先々代の部長はLisper

• C言語より先に生まれた歴史ある言語

• 計算機科学の教授は割と使う

• 詳しくはstibearに聞こう

Page 17: 関数型プログラミングのすゝめ

関数型プログラミング

• 実は神秘の力に操られています

• その神秘の力を理解すれば

どんなプログラミング言語も

自由自在に操れるようになります

• その神秘の力というのが......

Page 18: 関数型プログラミングのすゝめ

計算機科学

Page 19: 関数型プログラミングのすゝめ

計算機科学

• 英語ではComputer Science

• プログラミング言語やアルゴリズムの

研究などを行っている

Page 20: 関数型プログラミングのすゝめ

計算機科学は楽しい

• 計算機科学は奥深い

• 計算機科学は美しい

• 計算機科学は数学的

• 計算機科学はパズル的

Page 21: 関数型プログラミングのすゝめ

計算機科学の分野

• 型理論

• プログラム意味論

• 計算モデル

• 計算可能性理論

• 計算複雑性理論

Page 22: 関数型プログラミングのすゝめ

定理証明支援系

• 計算機科学と論理学のタッグの賜物

• 型理論が深く関わっている

• CoqやAgdaなどがある

• 証明をプログラムとして表して

コンピューター上で定理を証明できる

Page 23: 関数型プログラミングのすゝめ

関数型プログラミング

Haskell

計算機科学

Page 24: 関数型プログラミングのすゝめ

質問はありますか?