Movatterモバイル変換


[0]ホーム

URL:


Kenji Yoshida, profile picture
Uploaded byKenji Yoshida
1,316 views

rpscala35-scala2.9.0

Embed presentation

Download to read offline
Scala勉強会35回     Scala2.9.0について         よしだ @xuwei_k
今までのversionの整理● 2.7.7final リポジトリ    ○ 2009年10月28日   ○ これ以前はあまり詳しいことしらね。このVersion使ってる女子がいたら注意● 2.8.0final リポジトリ    ○ 2010年7月14日    ○ コレクションライブラリの再設計とか● 2.8.1final リポジトリ    ○ 2010年11月9日    ○ 2.8.0からのバグフィックスが中心で機能追加はあまりない● 2.9.0final リポジトリ    ○ 2011年5月12日
2.9.0の新機能http://www.scala-lang.org/node/9483  ● Parallel Collection  ● Generalized catch blocks  ● The App Trait  ● scala.DelayedInit  ● scala.sys  ● scala.Dynamic  ● Auto-Unboxing for Java Boxed values  ● Some methods added to Collections       など ● RangeをWhileとかfor式で使った場合最適化されるの? ● コンパイル速くなった?
Generalized catch blockscatchの部分にPartialFunction[Throwable,T]がかける
● The App Trait  ○ Application Traitが色々問題あって、その代わ    りにできたらしい● scala.DelayedInit  ○ App Traitでも使われてる。  ○ 初期化時にごにょごにょしたい場合につかう?
Predefの細かい変更を分かる範囲で調べてみた● OptManifest, NoManifest     ○ なにこれ?増えてる(・ω・`)● currentThread     ○ 非推奨になってるェ・・・● error exit     ○ 非推奨 scala.sysパッケージのもの使えってことらしい● format も非推奨● ensuring   ○ メッセージ部分が名前渡しになってる● zipped2ToTraversable と zipped3ToTraversable 増えてる● java.lang.LongなどのクラスからAnyValへの暗黙変換● <%< 非推奨
AnyRef specialization  https://gist.github.com/990659   プリミティブ型と参照型の配列はVMレベルで命令が異なっている参考: wikipediaのJVMのオペコード
ちょっと話それるけどzipped2とzipped3について ● それぞれTuple2とTuple3に定義されてる ● コレクション自体のzipというメソッドを呼ぶ方法もあるが、   Tupleのzippedは遅延評価されるので、無駄なオブジェクト   つくらないし、うまく使えば速くなるかもしれない ● しかし2.8.1までは、Zipped型にたいして filter flatMap forall   foreach exists などのメソッドしかなかった ● Predefに暗黙変換のメソッドができたことにより、便利に
val a = 1 to 10000 toLista: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12…val b = a.map{ _ * 2 }b: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18…// a.zip(b) だとその時点でList[(Int,Int)] が生成されるので、要素数が多い場合あまりよくないval c = (a,b).zippedc: (List[Int], List[Int])#Zipped[List[Int],Int,List[Int],Int] = scala.Tuple2$Zipped@16783d3// 2.9.0で、Predefにimplicitなメソッドが定義されたことにより、呼べるメソッド増えた// たとえば以下のように foldLeftを呼ぶのは、2.9.0でないとできないval d = c.foldLeft(0){ case (a,(b,c)) => a + b + c }
Auto-Unboxing for Java Boxed values2.8.1までval one = new java.lang.Long(1)one < 2L //これは無理one.longValue < 2L //一度longValueで変換必要2.9.0からone < 2L //これだけでいい
Collectionの説明のまえに予備知識として読んでおいたほうがいいものscalaプログラマなら絶対に読んでおくべきDocument
Parallel Collection● 使う側は、ほとんど労力を必要とせずに、数  種類のメソッドについて、内部的に自動で並  列化されて実行される● 理論的には、コア数が増えればそれに比例  してはやくなるかもしれない(?)● 論文をちょっと読んだけど、内部構造を完璧  には把握してない
● scala.collectionパッケージ下で増えたファイル   ○ CustomParallelizable.scala   ○ GenIterable.scala   ○ GenIterableLike.scala   ○ GenIterableView.scala   ○ GenIterableViewLike.scala   ○ GenMap.scala   ○ GenMapLike.scala   ○ GenSeq.scala   ○ GenSeqLike.scala   ○ GenSeqView.scala   ○ GenSeqViewLike.scala   ○ GenSet.scala   ○ GenSetLike.scala   ○ GenTraversable.scala   ○ GenTraversableLike.scala   ○ GenTraversableOnce.scala   ○ GenTraversableView.scala   ○ GenTraversableViewLike.scala   ○ Parallel.scala   ○ Parallelizable.scala
親の(直接使わない)traitが大量になって、大変なことになっている図http://class-diagram.appspot.com/scala.collection.immutable.VectorCollectionの場合どのclassも最終的に 30 ~40のtraitを継承しているェ・・・把握できないぉ・・・(・ω・`)
Genってなに?
Generationの略?だれか教えて > <
scala.collectionパッケージ配下のGen〇〇というClassは、並列化が可能ということを示すため(?   あまり自信ない) で、ユーザーが直接この型を使用することは、あまりなさそう
● scala.collection.parallelパッケージ内につい  ても、具象クラスはなく、traitまたはobjectの  み● http://www.scala-lang.  org/api/current/index.html#scala.  collection.parallel.package
● 具象クラス   ○ scala.collection.parallel.immutableの       ■ ParHashMap       ■ ParHashSet       ■ ParRange       ■ ParVector   ○ scala.collection.parallel.mutable       ■ ParArray       ■ ParHashMap       ■ ParHashSet● 実際使うのこれだけらしい
● ParRange以外の6つのclassについては、scala> import scala.collection.parallel.immutable._import scala.collection.parallel.immutable._scala> ParVector(1,2,3)res0 : scala.collection.parallel.immutable.ParVector[Int] = ParVector(1, 2, 3)というように、今までの他のcollectionと同じようにコンパニオンオブジェクトに可変長引数をとるapplyが定義されているみたい ● しかし、実用的に使う場合を考えると、普通のコレ   クションからparメソッドを呼ぶほうが大半?
ソースコード追ってたら興味でてきたので内部実装の話へε=ε=ε=ヾ(´▽`*)ノ
● 大半の実装が scala.collection.parallel.ParIterableLike   に  ある● 1400行くらい● 内部classが39個 !!!● 内部traitが11個( + 内部traitの内部traitがさらに1つ )● debug用関数が残ってるェ・・・
内部クラスをなんとなく分類してみるAccessorを継承 (15個)Foreach Count Reduce Fold Sum Product Min Max Forall Exists FindFilter FilterNot CopyToArrayTransformerを継承(17個)Map Collect FlatMap Copy Partition GroupBy Take Drop Slice SplitAtTakeWhile Span Zip ZipAll ToParCollection ToParMapCreateScanTreeその他 ( 8個)Composite SeqComposite ParComposite ResultMappingFromScanTree Aggregate ScanNode ScanLeaf
内部traitParIterator SignalContextPassingIteratorTaskOps BuilderOps(さらに内部クラスとして Otherwise)SignallingOps StrictSplitterCheckTaskAccessor NonDivisibleTask NonDivisibleTransformer ScanTree
Accessor とTransformer って何?
TaskStrictSplitterCheckTask      Accessor     Transformer
え?(´・ω・`)
僕もあまり詳しくわかりません ><
● 自分が今までに書いた2.9.0に関するもの● またもやScala2.9.0のREPLの隠し(?)機能の紹介● Scala2.9.0のREPLで、すごく便利な裏技を発見した件(全自動ぁばばばばばばばばばばばば ばばば)● scala2.9のparallel collection の benchmark をしてみた● scalaの2.9で入るらしい新機能試してみた(ちょっと情報ふるいかも)
その他の人のblogなどScala2.9から導入されたバイナリ互換性確保のためのbridgeアノテーションについて調べたScala 2.9.0のscala.sys.processパッケージが便利過ぎる件について最適化の話?
・・・え?(・ω・`) お わ り ?さらにみんなでソースコードリーディング?

Recommended

PPT
Rpscala2011 0601
PDF
Phantom Type in Scala
PPTX
Sns suite presentation
PDF
Scalaで型クラス入門
PDF
なぜリアクティブは重要か #ScalaMatsuri
PDF
Scala2.8への移行
PDF
Scalaノススメ
PDF
はてなブックマーク in Scala
PDF
Why Reactive Matters #ScalaMatsuri
PDF
Thinking in Cats
PDF
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
PDF
scala-kaigi1-sbt
PDF
Scalaで萌える関数型プログラミング[完全版]
 
PDF
社内Java8勉強会 ラムダ式とストリームAPI
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
PDF
ScalaMatsuri 2016
PDF
磯野ー!関数型言語やろうぜー!
 
PDF
BOF1-Scala02.pdf
PDF
Frege, What a Non-strict Language
PDF
MoteMote Compiler Plugin
PDF
ラムダと invokedynamic の蜜月
PDF
たのしい関数型
PDF
Java SE 8 lambdaで変わる プログラミングスタイル
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
 
ODP
Rpscala18th
PPTX
Java8勉強会
PDF
Scala repl
PDF
Scala design pattern
PDF
Scala lang evolution
PPT
sbt 0.10 for beginners?
 

More Related Content

PPT
Rpscala2011 0601
PDF
Phantom Type in Scala
PPTX
Sns suite presentation
PDF
Scalaで型クラス入門
PDF
なぜリアクティブは重要か #ScalaMatsuri
PDF
Scala2.8への移行
PDF
Scalaノススメ
PDF
はてなブックマーク in Scala
Rpscala2011 0601
Phantom Type in Scala
Sns suite presentation
Scalaで型クラス入門
なぜリアクティブは重要か #ScalaMatsuri
Scala2.8への移行
Scalaノススメ
はてなブックマーク in Scala

What's hot

PDF
Why Reactive Matters #ScalaMatsuri
PDF
Thinking in Cats
PDF
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
PDF
scala-kaigi1-sbt
PDF
Scalaで萌える関数型プログラミング[完全版]
 
PDF
社内Java8勉強会 ラムダ式とストリームAPI
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
PDF
ScalaMatsuri 2016
PDF
磯野ー!関数型言語やろうぜー!
 
PDF
BOF1-Scala02.pdf
PDF
Frege, What a Non-strict Language
PDF
MoteMote Compiler Plugin
PDF
ラムダと invokedynamic の蜜月
PDF
たのしい関数型
PDF
Java SE 8 lambdaで変わる プログラミングスタイル
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
 
ODP
Rpscala18th
PPTX
Java8勉強会
Why Reactive Matters #ScalaMatsuri
Thinking in Cats
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
scala-kaigi1-sbt
Scalaで萌える関数型プログラミング[完全版]
 
社内Java8勉強会 ラムダ式とストリームAPI
あなたのScalaを爆速にする7つの方法(日本語版)
ScalaMatsuri 2016
磯野ー!関数型言語やろうぜー!
 
BOF1-Scala02.pdf
Frege, What a Non-strict Language
MoteMote Compiler Plugin
ラムダと invokedynamic の蜜月
たのしい関数型
Java SE 8 lambdaで変わる プログラミングスタイル
Scalaで萌える関数型プログラミング[1.1.RC1]
 
Rpscala18th
Java8勉強会

Viewers also liked

PDF
Scala repl
PDF
Scala design pattern
PDF
Scala lang evolution
PPT
sbt 0.10 for beginners?
 
PDF
私とScalaと2010 @hito_asa
ODP
20120718 scalaで転職
PDF
Real-Time 3D Programming in Scala
PPT
Lifthub (rpscala #31)
 
PPT
Lifthub (#rpscala 26)
 
PPT
Scala勉強会 in 渋谷 2010→2011(鹿島)
 
PDF
Grass
 
PPTX
ScalaのソースをEclipseでビルドしてみた
Scala repl
Scala design pattern
Scala lang evolution
sbt 0.10 for beginners?
 
私とScalaと2010 @hito_asa
20120718 scalaで転職
Real-Time 3D Programming in Scala
Lifthub (rpscala #31)
 
Lifthub (#rpscala 26)
 
Scala勉強会 in 渋谷 2010→2011(鹿島)
 
Grass
 
ScalaのソースをEclipseでビルドしてみた

Similar to rpscala35-scala2.9.0

PDF
Scala2.8への移行
PDF
言語アップデート -Scala編-
PDF
map関数の内部実装から探るJVM言語のコレクション: Scala, Kotlin, Clojureコレクションの基本的な設計を理解しよう
PDF
ATN No.2 Scala事始め
PPTX
明日から業務で使うScala
PDF
Akka stream
PPTX
scala.collection 再入門 (改)
PPTX
ゼロから始めるScala文法 (再)
PDF
Scalaを触ってみた
PDF
今日からはじめるGPars
PDF
Scalaでのプログラム開発
PDF
プログラミング言語Scala
PPTX
Introduction to Functional Programming
PDF
BOF1-Scala02.pdf
PDF
BOF1-Scala02.pdf
PDF
197x 20090704 Scalaで並行プログラミング
PDF
Scala超入門 - 2014/12/13 Scala関西勉強会
PDF
ジャパネットQB GPars
KEY
Beginners Scala in FAN 20121009
PDF
実務者のためのかんたんScalaz
Scala2.8への移行
言語アップデート -Scala編-
map関数の内部実装から探るJVM言語のコレクション: Scala, Kotlin, Clojureコレクションの基本的な設計を理解しよう
ATN No.2 Scala事始め
明日から業務で使うScala
Akka stream
scala.collection 再入門 (改)
ゼロから始めるScala文法 (再)
Scalaを触ってみた
今日からはじめるGPars
Scalaでのプログラム開発
プログラミング言語Scala
Introduction to Functional Programming
BOF1-Scala02.pdf
BOF1-Scala02.pdf
197x 20090704 Scalaで並行プログラミング
Scala超入門 - 2014/12/13 Scala関西勉強会
ジャパネットQB GPars
Beginners Scala in FAN 20121009
実務者のためのかんたんScalaz

rpscala35-scala2.9.0


[8]ページ先頭

©2009-2025 Movatter.jp