Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

ScalaからGoへ

3 614 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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!

×