Your SlideShare is downloading. ×
0
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
言語アップデート -Scala編-
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

言語アップデート -Scala編-

4,158

Published on

函数プログラミングの集い2011 in Tokyo の言語アップデートにおける発表スライドです。超高速でScalaの新し目の話題を提供することに特化してて、コードは少なめです。

函数プログラミングの集い2011 in Tokyo の言語アップデートにおける発表スライドです。超高速でScalaの新し目の話題を提供することに特化してて、コードは少なめです。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,158
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 言語アップデート – Scala 編- 水島 宏太 (@kmizu)
  • 2. 自己紹介
  • 3. @kmizu http://twitter.com/kmizu id:kmizushimahttp://d.hatena.ne.jp/kmizushima 他称 Scala Bot Scala辻斬り 自称 Scala 辻ヒーラー
  • 4. Scalaって何?
  • 5. はおいといて
  • 6. 採用企業
  • 7. Twitter LinkedIn EDF Trading Foursquare Siemens Novell Amazon.com VMWare GridGainRemember the Milk ...
  • 8. 最近のScala
  • 9. 最近過ぎるのも何なので2.9から
  • 10. Scala 2.9
  • 11. 目玉機能
  • 12. 1. 並列コレクション
  • 13. implicit parallelism
  • 14. def psum[T:Numeric](t: Traversable[T]): T = t.par.sum
  • 15. コレクションのparメソッド呼ぶだけでOK
  • 16. 勝手に複数コアに処理を割り振ってくれる
  • 17. N倍速(N=CPUコア数)になる程都合良くはない
  • 18. 何故?
  • 19. タスクスケジューリングのためのオーバーヘッド 特に、内部的に待ち合わせが必要な処理 ...
  • 20. でも
  • 21. 並列化のための記述コストがほとんどかからない
  • 22. ⇒ 簡単に導入可能
  • 23. 注意点
  • 24. 不変コレクション and 副作用無しの処理が基本
  • 25. ⇒並列化されていることは「見えない」
  • 26. 可変コレクション or 副作用ありの処理
  • 27. ⇒並列化されていることが「見えて」しまう
  • 28. 並列化されない処理
  • 29. コレクションの「前の要素の処理結果」を使って 処理を行う処理
  • 30. foldLeft foldRight reduceLeftreduceRight ...
  • 31. とりあえず、使ってみませう
  • 32. 2. プロセス呼び出しライブラリ
  • 33. Scalaの弱点(I/O,プロセス処理が面倒)の 一つが改善
  • 34. import scala.sys.process._ "ls" run
  • 35. たったこれだけ
  • 36. リダイレクトも簡単
  • 37. import scala.sys.process._ import java.io_"ls" #> new File("hoge.txt") run
  • 38. もちろんパイプ処理も
  • 39. import scala.sys.process._ "ls" #| "sort" run
  • 40. プロセスの標準出力の取得も簡単
  • 41. import scala.sys.process._val lsResult = Process("ls") !! //lsResult: String
  • 42. import scala.sys.process._val lines = Process("ls") lines // lines: Stream[String]
  • 43. 3. scala.Dynamic
  • 44. 導入に当たって意見が分かれた
  • 45. 何故?
  • 46. Rubyのmethod_missingのようなものだから
  • 47. 型安全性を部分的に破壊できる
  • 48. Scala的な思想にそぐわない ...
  • 49. -Xexperimental 付けた場合のみ有効
  • 50. class MethodNamePrinter extends Dynamic { def applyDynamic(name: String)(args: Any*): Any = { println( name + "(" + args.mkString(", ") + ") invoked" ) }}val printer = new MethodNamePrinterprinter.foo // foo() invokedprinter.hoge // hoge() invoked
  • 51. O/Rマッパーとかある種のDSLで有効
  • 52. 多用すべからず
  • 53. 2.9の新機能はこれくらいにして
  • 54. Scala本家の最近の動向
  • 55. 2011前半: Typesafe社設立
  • 56. Scalaの商用サポートScala IDE for Eclipse開発移管「全部込み」パッケージの提供+ 今のところScala + Akka + α+ 将来的にはEclipse+ sbtが入る (たぶん)
  • 57. Typesafe(Scalaチームの方向)
  • 58. 2011/08/29 Scala 2.9.1 final
  • 59. ポイント
  • 60. REPLの起動が高速化
  • 61. 5倍くらい速くなった7秒 -> 1秒(筆者環境)
  • 62. 元が遅かったという話も
  • 63. コンパイルも高速化
  • 64. 1.5倍くらい
  • 65. 基本的にはメンテナンス リリース
  • 66. 2.9.0とバイナリ互換
  • 67. 2011/09/13Scala IDE for Eclipse 2.0.0 beta 10
  • 68. sbtベースのビルド マネージャ
  • 69. セミコロン推論の表示 とか色々
  • 70. Scala 2.9.1 finalベース
  • 71. Scala IDE for Eclipse は普通に使える子↑昔は要らない子だった
  • 72. だが
  • 73. IntelliJ IDEAの方が先を行ってる
  • 74. 言語横断のリファクタリングJava -> Scala 変換Import補完Implicit conversion補完 ...
  • 75. 最近のScala界の流れ
  • 76. RESTful HTTPサービス ライブラリの流行 (≠フレームワーク)
  • 77. PartialFunctionの活用
  • 78. UnfilteredBlueEyes
  • 79. not MVC
  • 80. というかViewが無い
  • 81. 型クラスの流行
  • 82. 昔からScalaには型クラス(相当)があった
  • 83. あまり活用されて なかった
  • 84. Scala 2.8でいくつか型クラスが入った
  • 85. ここ1~2年で型クラスを使ったライブラリが色々
  • 86. Scalaz <- 型クラスライブラリ sjson ...
  • 87. More Functional
  • 88. 昔はScalaで手続き型プログラミングしてるライブラリが多かった
  • 89. 最近のライブラリは「More Functional」
  • 90. 副作用を可能な限り排除オブジェクト(関数)合成 永続データ構造の活用
  • 91. sbt (特に0.10系) Specs2 Scalaz Unfiltered BlueEyes
  • 92. 宣伝(1)
  • 93. 通称コップ本 第二版 2011/09/27 発売予定Scala 2.8対応+付録Scala 2.9記事(by @kmizu)
  • 94. 宣伝(2)
  • 95. こんなキーワードにピンと来たら(ry Cakeパターン, CONCEPTパターン, 限定継続 現場でのScala, Javaとの連携

×