Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
オブジェクト指向プログラマ
が今関数型言語を学ばないと
いけない理由
`
谷口耕平 @ran_tan
ハウインターナショナル
で働いてます
九工大 知能情報工学科卒
自己紹介
現在
2010.03
小出研、工大祭実行委員、SE塾
毎週木曜日 ココで
開催中!!
普段書いている言語
• Ruby
• Javascript, CoffeeScript
• Swift, Objective-C
• Java
関数型言語は全く
書いていません。。。
今日はOOPプログラマを自認する私が、な
ぜ関数型言語を勉強したいのかを話します
関数型言語が流行ってる?
Githubのリポジトリ数
Githubのリポジトリ数
Githubのリポジトリ数
関数型流行ってる?
Google Trends
を見れば流行っているのがわかるはず!
X軸と同化した、、
もしかして
流行ってない?
数年前,Dave Thomas氏に会ったときに「Ruby
の次のLotYに何を選んだのか」と聞いてみたと
ころ「Haskellを試そうとした。でも,次に考え
てるのは日本語だよ」と笑顔で答えてくれました。
http://itpro.nikkei...
Dave Thomasも
Haskellに注目している!
(かなり昔の記事だけど、、)
「Haskellを学ぶ事は、TDDを細かく分析し、それへ
回帰する事を強いる。原則は私が懸念していたよりも
根元的なものだった。」 適当和訳
よくわからんけどHaskellや
るとTDDも深まるらしい
関数型言語流行の背景
ムーアの法則の限界
• クロック数の頭打ち
• それによるマルチコア化の流れ
• 並行プログラミングへの需要
• OOP言語での並行処理の書きにくさ
• 関数型言語の参照透過性という性質への注目
とかが世の中でよく言われている
Erlangへの注目
• Prologのような宣言的な構文で記述
• スレッド間でメモリを共有しないスレッドモデル
• 並行処理を前提に設計されている
Scalaの登場
• JVM上で動作
• オブジェクト指向と関数型のマルチパラダイム
• Erlangと同じくメモリを共有しないアクターモデル
という並行処理の仕組みがある
数学に支えられた構文の美しさ
• 小出先生「Lispは神言語」
• ぼくにはまだよくわかりません!
OOP言語の中の関数型
Javascript
• クロージャ
• 高階関数
• カリー化
• 普通にJSの本に出てくる。むしろこれらを使わな
いとコード書けない。
Ruby
• ブロック構文 ← 高階関数が簡単に書ける
• lambdaある
• mapとかreduceとか関数型由来のメソッドを多用
するのが当たり前
Java
• lambdaが入った
関数型言語を使わなくても恩恵
を受けている
OOP言語を捨てて関数型へ
は行かない
もはやOOPは手放せない
• 複雑な現実をコードで表現するには、事象を「オブ
ジェクト」という抽象化された概念の相互作用とし
てモデリングするアプローチは、非常に協力な武器
• 我々は現実と戦わなければならないのです!
• でしょ?OOPの皆さ...
関数型パラダイムを学ぶことでOOP言語でよ
り良いコードが書けるようになる、、はず!
• OOP言語の中の関数型要素を活用できる!
• 参照透過性→副作用が無い→メソッドをシンプルに
• と言いつつ正直まだよくわかりません、皆さんの意
見を教え...
OOPと関数型両方を生かすス
タイルが模索されている
• Scalaのアクターモデル
• イミュータブルな変数(というか定数)の多用。
• オブジェクト自体をイミュータブルにするアプロー
チもあるぽい。(試してないけど)
• 副作用のある操作と...
まとめ
• 関数型の流れがきている(結構前から)
• OOP言語にも関数型のパラダイムが入ってきている
• OOPと関数型両方のメリッドを生かすスタイルが
模索されいている
• 俺たちOOP戦士の戦いはまだこれからだ!
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
Upcoming SlideShare
Loading in …5
×
Upcoming SlideShare
はじめてのUnreal Engine 4
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

オブジェクト指向プログラマが今関数型言語を学ばないといけない理由

Download to read offline

飯塚関数型言語勉強会vol.1の資料です。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

オブジェクト指向プログラマが今関数型言語を学ばないといけない理由

  1. 1. オブジェクト指向プログラマ が今関数型言語を学ばないと いけない理由 `
  2. 2. 谷口耕平 @ran_tan ハウインターナショナル で働いてます 九工大 知能情報工学科卒 自己紹介 現在 2010.03 小出研、工大祭実行委員、SE塾
  3. 3. 毎週木曜日 ココで 開催中!!
  4. 4. 普段書いている言語 • Ruby • Javascript, CoffeeScript • Swift, Objective-C • Java
  5. 5. 関数型言語は全く 書いていません。。。
  6. 6. 今日はOOPプログラマを自認する私が、な ぜ関数型言語を勉強したいのかを話します
  7. 7. 関数型言語が流行ってる?
  8. 8. Githubのリポジトリ数
  9. 9. Githubのリポジトリ数
  10. 10. Githubのリポジトリ数
  11. 11. 関数型流行ってる?
  12. 12. Google Trends を見れば流行っているのがわかるはず!
  13. 13. X軸と同化した、、
  14. 14. もしかして 流行ってない?
  15. 15. 数年前,Dave Thomas氏に会ったときに「Ruby の次のLotYに何を選んだのか」と聞いてみたと ころ「Haskellを試そうとした。でも,次に考え てるのは日本語だよ」と笑顔で答えてくれました。 http://itpro.nikkeibp.co.jp/article/COLUMN/20070618/275142/ 総論 複数のプログラミング言語を学ぶ意義
  16. 16. Dave Thomasも Haskellに注目している! (かなり昔の記事だけど、、)
  17. 17. 「Haskellを学ぶ事は、TDDを細かく分析し、それへ 回帰する事を強いる。原則は私が懸念していたよりも 根元的なものだった。」 適当和訳
  18. 18. よくわからんけどHaskellや るとTDDも深まるらしい
  19. 19. 関数型言語流行の背景
  20. 20. ムーアの法則の限界 • クロック数の頭打ち • それによるマルチコア化の流れ • 並行プログラミングへの需要 • OOP言語での並行処理の書きにくさ • 関数型言語の参照透過性という性質への注目 とかが世の中でよく言われている
  21. 21. Erlangへの注目 • Prologのような宣言的な構文で記述 • スレッド間でメモリを共有しないスレッドモデル • 並行処理を前提に設計されている
  22. 22. Scalaの登場 • JVM上で動作 • オブジェクト指向と関数型のマルチパラダイム • Erlangと同じくメモリを共有しないアクターモデル という並行処理の仕組みがある
  23. 23. 数学に支えられた構文の美しさ • 小出先生「Lispは神言語」 • ぼくにはまだよくわかりません!
  24. 24. OOP言語の中の関数型
  25. 25. Javascript • クロージャ • 高階関数 • カリー化 • 普通にJSの本に出てくる。むしろこれらを使わな いとコード書けない。
  26. 26. Ruby • ブロック構文 ← 高階関数が簡単に書ける • lambdaある • mapとかreduceとか関数型由来のメソッドを多用 するのが当たり前
  27. 27. Java • lambdaが入った
  28. 28. 関数型言語を使わなくても恩恵 を受けている
  29. 29. OOP言語を捨てて関数型へ は行かない
  30. 30. もはやOOPは手放せない • 複雑な現実をコードで表現するには、事象を「オブ ジェクト」という抽象化された概念の相互作用とし てモデリングするアプローチは、非常に協力な武器 • 我々は現実と戦わなければならないのです! • でしょ?OOPの皆さん?
  31. 31. 関数型パラダイムを学ぶことでOOP言語でよ り良いコードが書けるようになる、、はず! • OOP言語の中の関数型要素を活用できる! • 参照透過性→副作用が無い→メソッドをシンプルに • と言いつつ正直まだよくわかりません、皆さんの意 見を教えて下さい。
  32. 32. OOPと関数型両方を生かすス タイルが模索されている • Scalaのアクターモデル • イミュータブルな変数(というか定数)の多用。 • オブジェクト自体をイミュータブルにするアプロー チもあるぽい。(試してないけど) • 副作用のある操作と無い操作を分離する設計も可能?
  33. 33. まとめ • 関数型の流れがきている(結構前から) • OOP言語にも関数型のパラダイムが入ってきている • OOPと関数型両方のメリッドを生かすスタイルが 模索されいている • 俺たちOOP戦士の戦いはまだこれからだ!

飯塚関数型言語勉強会vol.1の資料です。

Views

Total views

829

On Slideshare

0

From embeds

0

Number of embeds

69

Actions

Downloads

3

Shares

0

Comments

0

Likes

0

×