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.

ScalaからGoへ

2,799 views

Published on

Scala開発者からGoに移動した経験の話です。関数型開発の経験はGoで役に立つですか?軽く考え方レベルとコードレベルの話です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ScalaからGoへ

  1. 1. ScalaからGo 不思議なたび
  2. 2. 自己紹介:James (エウレカ) • イギリスのケンブリッジ大学で コンピューターサイエンスを専 攻 • 鳥取県で中学校で教えながら日 本語を勉強 • 2015年から東京でエンジニ アとして働いています • 得意:Scala開発、アーキテク チャ、CS理論
  3. 3. 関数型開発はGoでできますか?
  4. 4. No (悲しいアリクイ)
  5. 5. 関数型開発のコンセプトはGoで 使える?
  6. 6. Yes (嬉しいアリクイ)
  7. 7. 1:考え方レベル
  8. 8. とりあえず、関数型開発って何 ? (関数型開発について考えてるアリクイ)
  9. 9. 副作用 func (s *Something) add(a, b int) int { c := a + b s.Total = c return c } This is 副作用 I don’t like it
  10. 10. Goでもよくない • 関数型開発はつまり「副作用がない開発」 • 関数の副作用がテストしにくいし、バグの原因になる • Goを書いてても、副作用を意識して、処理をする関数を適当に入れ ないでください
  11. 11. 2:コードレベル
  12. 12. 部分適用:Scala def add(a: Int, b: Int): Int = a + b scala> def addFive = makeAdder(5) addFive: Int => Int scala> addFive(12) res0: Int = 17 scala> def addSeven = makeAdder(7) addSeven: Int => Int scala> addSeven(12) res1: Int = 19 (A) (B) def makeAdder(a: Int): Int => Int = add(a, _: Int)
  13. 13. 部分適用:Go func add(a, b int) int { return a + b } func makeAdder(a int) func(int) int { return add(a, _) }
  14. 14. 部分適用:Go func add(a, b int) int { return a + b } func makeAdder(a int) func(int) int { return func(b int) int { return add(a, b) } }
  15. 15. じゃ、どっちが好き?
  16. 16. すいませんですが、、、 アリクイにちょっと似ている
  17. 17. なぜ? • Scalaの長期成長が楽しい • 副作用がないコードの方が綺麗に感じて、バグ入らない • でも会社として次世代言語を導入したければ、Goがいい
  18. 18. Thank you!

×