Presentation is loading. Please wait.

Presentation is loading. Please wait.

LLで関数プログラミング @LLRing.

Similar presentations


Presentation on theme: "LLで関数プログラミング @LLRing."— Presentation transcript:

1 LLで関数プログラミング @LLRing

2 青木 峰郎 日本Rubyの会 主著 ふつうのLinuxプログラミング ふつうのHaskellプログラミング 関数型言語は勉強としてつかうだけ

3 住井 英二郎 東北大学 ICFPプログラミングコンテスト MinCaml 日常のプログラムは全てOCaml
教員だけど気分は学生(試験のとき以外…) ICFPプログラミングコンテスト 外の人2回+中の人1回 MinCaml 日常のプログラムは全てOCaml

4 中村 正三郎 アンテナハウス所属 関数型の先にある形式仕様記述を宣伝したいために登場

5 久井 亨 クロネッカーズデルタ合同会社代表 関数型言語はよく知らない MEPHISTO
制約システムと無限ストリームをベースにした、アニメーション生成システム 入出力を含む動的なプログラムの動作を、宣言的な記述で表現できる 2005年度未踏ユースで採択

6 山下 伸夫 株式会社タイムインターメディア Haskell宣伝マン Monad嫌い スクリプトもHaskellで書く

7 今泉 貴史 千葉大学 総合メディア基盤センター 言語系の研究をしたことも… 昔やっていたのは属性文法型言語
最近はネットワーク系が多い 昔やっていたのは属性文法型言語 関数型言語は使うよりもプログラミングモデルとして興味を持っている

8 関数型言語 何があれば関数型言語? LISPとHaskellとMLは関数型言語 ほかにももちろんある かもね

9 関数型言語の特徴 高階関数 宣言的な記述 静的型付け 遅延評価

10 高階関数 関数を計算の対象とするもの 関数型言語には必須ではない コードのコピー・ペーストが不要になる 当然あるもの、無いと話にならない
オブジェクト指向に近い概念? コードのコピー・ペーストが不要になる 当然あるもの、無いと話にならない Rubyにだってイテレ-タはある フレームワークに関数をはめ込んで機能を実現可能

11 静的型付け 型をチェックしてくれることが重要 型を書くのがプログラミングのひとつ 型推論が型は決めてくれる
型を書かなければいけないわけではない 型を考えることが全体設計となっている 型推論が型は決めてくれる 型なしの言語だと決めなければいけないことを先送りできる(?) 記述の上で型がないとDucktypeが楽にできる Javaで言うところのInterfaceみたいなもの

12 宣言的な記述 考えなければならないことが限られる 宣言的な記述をできるようにプログラミング言語を高めてきた
抽象度を高くしてきた 仕様記述言語、定理証明器との相性が良い 現実問題として… 副作用は要るでしょう 約束事を覚えておかなくても良い

13 副作用 副作用はMonadでごまかす(?) →Monadで副作用が表現できちゃった まじめに考えなければ良い 穢れた世界
穢れているからこそ生き延びる

14 遅延評価 遅延評価の場合は評価順序が決まらないので副作用との相性が悪い 遅延評価は理解するのが難しい
必要なときに使えればよい 遅延評価は理解するのが難しい 副作用を使いたいから難しいのだろう 関数型言語には遅延評価があった方が良いだろう 遅延評価がないものは考えられない 遅延評価があれば楽ができる

15 Haskell 頭を使いたくない人はどうぞ コンピュータの動きを考える必要はない 覚えることはすごく少ない 基本的な考え方に例外が少ない
頭を真っ白にできるのであればお勧め 日本語処理はいまひとつ Hugsではそれなりに使える パッケージシステムは作ろうとしているところ

16 Lisp(?) Clean Concurrent Clean GUIが充実しています マルチプラットフォームで動作しています O'z

17 Ruby でも、関数型言語を学ぶことは重要だと思う

18 Scheme LISP系一般に論理型もできるし、関数型もできる パラダイムを勉強するにもよいだろう

19 OCaml 現実的な折衷案 ライブラリが比較的充実している 関数型プログラミングができれば別に言語は何でもいいかも
命令型やオブジェクト指向に慣れている人にはお勧め ライブラリが比較的充実している パッケージシステムもある モジュールシステムはいい加減かも 関数型プログラミングができれば別に言語は何でもいいかも 日本語処理はどうなっているのか デフォルトは文字コードは考えていない GUIへの日本語出力は まだちょっと大変

20 C++ 最近は関数型言語と定義されているらしい LLではないけれど… 本が厚くて面倒くさい 覚えることはたくさんある

21 Python 無限リストも使えます 関数合成も使えます 今までどおりのテクニックを使いながら関数型も使いたい人には便利


Download ppt "LLで関数プログラミング @LLRing."

Similar presentations


Ads by Google