まだ全部公開されてませんし、公開されたものの中でも全部見れてませんが、とりあえず見たやつだけ書きます。
以下にprecogっていっぱいでてきますが、知らない人はこちら
PrecogIOって会社に、Scalaのスゴイ人がいっぱいでヤバイ
とか読むといいかも
Cake Pattern: The Bakery from the Black Lagoon
- http://nescala.org/#keynote
- https://marakana.com/s/post/1399/cake_pattern_bakery_from_the_black_lagoon_daniel_spiewak_ne_scala_video
- https://dl.dropbox.com/u/1679797/NE%20Scala/Bakery%20from%20the%20Black%20Lagoon.pdf
precogの人その1。
Cake Pattern(とabstract type memberや、その他細かいことなど)の話。個人的にcake patternいまだにそこまで好きじゃないというより、そもそもそれほど使いこなせてないですが、djspiewakの話わかりやすいですね。
Life After Monoids
- https://marakana.com/s/post/1400/life_after_monoids_tom_switzer_ne_scala_video
- http://nescala.org/#t-32686092
precogの人その2。後述するspireの開発にも結構関わってる人。
発表内容も、spireの話とか、それを使ってmonoid(やそのほかgroupとか)の概念や、具体的なコード例、デモなど。
Building a Data Science Platform in Scala
- https://marakana.com/s/post/1403/building_a_data_science_platform_in_scala_video
- http://nescala.org/#t-3025132
precogの人その3、ていうかCTO。
個人的には、(まだ全部見てないですが)nescalaのvideo見た中では一番おもしろかったです。これが面白かったので、わざわざblog書こうかとおもったくらい。
具体的には
- precog社内で使ってるライブラリの一覧
- precog社内のコード量
が公開されていたりしたところが*1
おそらく、Scalazをかなりコアに使ってる世界でも有数の企業だからこそ、それに対する批判や実用的な視点など。具体的には
「Scalazは抽象化は提供するけど、パフォーマンスに関しては(ry」
という流れで、Monad Transformerのパフォーマンスに言及したり、それらを補うScalaz以外のライブラリや、JVM自体の話などなど。
precog社内で使ってるライブラリに関して見たり、今一度その他のprecogの以下のようなネット上の記事みて、やっと頭のなかで結びつきましたが
Info Q : Precog: ビッグデータ分析サービス
- そもそも、データ解析のための独自のquirrelという言語を作っている
- それのparserにおそらくdjspiewakのgll-combinators使ってる!?*2
ということなんですかね?Info Qの記事内で
多くの点で、QuirrelはRプログラミング言語に似ています。Rと同様、Quirrelは高度な分析・統計ができるよう設計されています。Rと違って、Quirrelはチューリング完全言語ではなく、純粋に宣言的な言語です。これにより効率よくQuirrelクエリを大量のマシンクラスタに分散できます
と言ってますが、それを最初から狙って言語自体を新しく作るということが、そうそうできることじゃないし、あらためてprecogすごいな・・・とおもったという話でした。
Advanced Stream Processing in Scala
- https://marakana.com/s/post/1404/advanced_stream_processing_scala_paul_chiusano_video
- http://nescala.org/#t-13631141
- http://pchiusano.github.com/talks/advancedstreaming-nescala-feb2013/advancedstreaming.html
scalazのコミッターの人。Functional Programming in Scala
http://www.manning.com/bjarnason/
の著者の一人。
内容は、その"Functional Programming in Scala"の最後の方の章にでてくる、
「iterateeでも、conduitでも、pipeでもなく、新しいstream processingのライブラリの話」
Scala-Machinesというライブラリもちょっと前からあって
https://github.com/runarorama/scala-machines
それと結構似ているのですが、ねこはる先生によると、それとは微妙に別らしいです
@halcat0x15a ところで、こっち URL は読んでます?
2013-03-17 07:49:45 via web to @halcat0x15a
@xuwei_k いま軽く読みました。
2013-03-17 07:52:19 via mikutter to @xuwei_k
@halcat0x15a URL これ読む限り、machinesと関係あることはわかるし、ソース見ても似てる部分はあるけど、ある程度違う部分もあるし、関係性がわからない(改良版なのか、微妙に目的違うのか)けどなんなんだろうという
2013-03-17 07:56:05 via web to @halcat0x15a
@xuwei_k machinesとはまた違ったアプローチのiteratee系ライブラリ、でいいんじゃないでしょうか。streamsのProcessとmachinesのPlanは同じようなMonadPlusの定義になってます。
2013-03-17 08:03:02 via mikutter to @xuwei_k
いま、scalaz-streamという名前で、scalazのorganizationで開発されてます。
https://github.com/scalaz/scalaz-stream
ScalazのMLでの議論によると、scalazにある既存のIterateeなどは将来的に廃止して、こっちで置き換える予定らしいです。
Scalaz 7 with Lars Hupel
- https://marakana.com/s/post/1414/scalaz_7_with_lars_hupel_video
- https://speakerdeck.com/larsrh/seven-at-one-blow-new-and-polished-features-in-scalaz-7
Scalazのコミッターの人。そこまで古くからのコミッターじゃないけど、最近一番色々細かいこと含め精力的にやってくれてる。
話の内容は、Scalaz6とScalaz7の違いとか、Unapply
https://github.com/scalaz/scalaz/blob/v7.0.0-M8/core/src/main/scala/scalaz/Unapply.scala
の存在理由や仕組みとか。Unapplyの話はとてもわかりやすいかったです。scalaz.Unapplyの日本語の解説記事みないので、気が向いたらそのうち解説書きたいですね・・・。
Akka Typed Channels: Implementing Type Calculations as Macros-
- https://marakana.com/s/post/1407/akka_typed_channels_implementing_type_calculations_as_macros_scala_video
- http://www.slideshare.net/rolandkuhn/akka-typedchannels
- http://nescala.org/#t-14537068
Typesafeの人で、Akkaのコミッターの人。
Akkaに最近になって実験的に実装された、 「Typed Channels」という機能の話。
一言で言うと、
Actorのメッセージにはコンパイル時に型がつかない(どの型のメッセージがくるか、コンパイル時にはわからない)わけですが、それに型をつけてコンパイル時にチェックできるようにしよう!
という機能の話。
面白いんですが、本人もSlide中の18、19ページ目で
http://www.slideshare.net/rolandkuhn/akka-typedchannels/18
The Gory Details
といっているように、ちょっと「後付で機能を入れた影響?」なのかなんなのかわかりませんが、結構無理やりというか、自然じゃないというか、良くも悪くもスゴイです。実装にはマクロ使ってます。
長くなるので、「Typed Channels」(の実装)については、気が向いたら別に書くかも・・・
あと、スライドの9枚目で
"Actors Do Compose"
といっていますが、このせいで(?) twitter 上で、何日か前にちょっと炎上まではいかないけれど、議論になっていました。*3
まぁ、 Compose という言葉の意味の捉え方が違うんですかね・・・
そのあたりに興味ある人は、以下のblogとかオススメです
Actors are not a good concurrency model
Follow up to 'Actors are not a good concurrency model'
Premature Optimization in Scala
- https://marakana.com/s/post/1411/premature_optimization_in_scala_erik_osheim_video
- http://nescala.org/#t-14447186
- http://plastic-idolatry.com/erik/nescala2013
precogの人その4。
個人的には何度かtweetしてますが
最近では、spireがマクロ結構使ってて面白いし(ライブラリの原点からして)細かいパフォーマンスに対して気を使ってて勉強になるし、なにより綺麗だし、(適用範囲それほど広くはないが)実用的だし、あまり日本で話題になってないけど、昨日公開されたスライドとともにみんなもっと読みましょう
2013-02-10 00:29:16 via web
ほかにも
なぜScalazにはSemigroupがあるのにGroupがないの?
2013-02-28 00:14:25 via web
@nanjakkun ちょっと前まであったけど消えました
@xuwei_k え?なんでですか?
2013-02-28 00:22:14 via web to @xuwei_k
このspireというライブラリ
https://github.com/non/spire
作ってる人の話。
spireというライブラリも勿論関係してくるんですが、単にライブラリの話ではなく、JVMのある程度低レベルなメモリ関係やパフォーマンスの話や、Scalaのspecializedの話など。
*1: 現時点ではスライドが公開されていないようなので、videoからのキャプチャです
*2:はっきりvideoの中でそう言ってたかどうかは微妙なので、想像です
*3: http://togetter.com/li/466841 この他、tony morrisさんと、この発表をしたrolandkuhnさんが直接話をしたりしてた