「特集:人気言語でのデータ処理の比較 C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?」にともなう反応など

いっぱいあって全部の言語での高階関数把握するの難しい(´・ω・`)
9
業務アプリInsider @devchu

「特集:人気言語でのデータ処理の比較 C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?」を公開しました。http://bit.ly/o6XEmV

2011-07-22 16:26:14
Akira Takahashi @cpp_akira

あれ、C++がない。 RT @ufcpp: RT @devchu: 「特集:人気言語でのデータ処理の比較 C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?」を公開しました。http://bit.ly/o6XEmV

2011-07-22 16:30:38
Kenji Yoshida @xuwei_k

なぜ Scala の groupBy が書いてないし http://t.co/1z6j59F あと、withFilterについて書いてないから、厳密にいうと嘘が・・・

2011-07-22 16:34:45
Kenji Yoshida @xuwei_k

っていうか、作者twitter上にいるので、直接いえばいいんじゃ

2011-07-22 16:36:56
ぐるぐる系SQL @bleis

Scalaの「パイプライン化」がトレイトって、どういう意味だろう? http://www.atmarkit.co.jp/fdotnet/chushin/comparedataproc_01/comparedataproc_01_01.html

2011-07-22 16:38:27
++C++; // 管理人: 岩永 @ufcpp

@bleis 基本的に、欲しいのはインターフェイスに対するアルゴリズムの後置きメソッド記法になるはずです。トレイト=実装を持てる(メンバー関数を持てる)インターフェイスという扱いです。

2011-07-22 16:39:51
Kenji Yoshida @xuwei_k

@ufcpp http://t.co/1z6j59F ScalaにもgroupBy っていうメソッドあります。あと、C# のAggregateにあたる集計関数はfoldLeftではないかと。あとfor式の展開のルールが厳密にいうとwithFilterっていうのがあって・・・

2011-07-22 16:40:53
ぐるぐる系SQL @bleis

@ufcpp どちらかと言うと、implicit conversionじゃないですかね

2011-07-22 16:41:07
ぐるぐる系SQL @bleis

@ufcpp あと集計ですけど、AggregateとscanLeftとreduceって、かなりバラバラな気がします。Aggregate/foldLeft/foldの方がいいんじゃ?

2011-07-22 16:41:56
++C++; // 管理人: 岩永 @ufcpp

@bleis まあ、脚注に入ってますけども、トレイト+implicitですねぇ(まあ、個人的にimplicit conversionはクソ仕様だと思っていますが)。LINQに直接対応するのはIterableのmapとかですし。

2011-07-22 16:44:13
ぐるぐる系SQL @bleis

@ufcpp トレイトであることは必須ではなくて、クラスでもできますよね。なので、クラス/トレイト + implicit conversionかなー

2011-07-22 16:45:24
++C++; // 管理人: 岩永 @ufcpp

@firecrest_rs Javaは書きようがないのです。機能不足過ぎて。利用者数No1の言語を外すなんて、理由もなくしません。

2011-07-22 16:46:47
Kenji Yoshida @xuwei_k

scala> (1 to 10 ).scanLeft(0){_ + _} res15: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55)

2011-07-22 16:47:51
++C++; // 管理人: 岩永 @ufcpp

@bleis まあ、それはC# の拡張メソッドでも同じなんですが<クラスでもできる。が、LINQなんかを見ての通り、一番ありがたいのはインターフェイスに対する実装の追加という部分になります。機能ベースでなく、目的ベースで言うと。

2011-07-22 16:47:58
ぐるぐる系SQL @bleis

@ufcpp んー、そこらへんはScalaだと、implicit conversion用のメソッドを用意するので、インターフェイス(トレイト)に対する実装の追加というのはimplicit conversion用のメソッドの引数側の話で、戻り値の型側の話ではないのでは?

2011-07-22 16:49:39
++C++; // 管理人: 岩永 @ufcpp

http://bit.ly/nmrsgl 釈明しておくと、Javaはわざとハブったんじゃなくて、書きようがなかった。機能が足りなくて。C++は「原理的には書ける」になりそうだったので逃げた。某氏に「C++版はよろしく!」ってネタ振って逃げる。

2011-07-22 16:50:46
ぐるぐる系SQL @bleis

@pasela Javaの場合、toXxxは変換を行うのに対して、asXxxはビューを返す、という違いが。何の話かは知らないけど

2011-07-22 16:51:09
Yasushi Abe @yasushia

あれ?よく見たら集計がAggregate/scanLeft/reduce/reduceになってるけど、scanLeftはなんかちがうような。

2011-07-22 16:51:44
ぐるぐる系SQL @bleis

ScalaとかF#にイテレータ・ブロックとかジェネレータ的なものがないのは、イミュータブルなコレクションが手厚いから不要という説

2011-07-22 16:52:02
Daichi @normalian

確かにJavaで書くのは難しいすね。「書くのが不可能ではない」になりそうです。もしくはライブラリを駆使 RT @ufcpp: http://bit.ly/nmrsgl 釈明しておくと、Javaはわざとハブったんじゃなくて、書きようがなかった。機能が足りなくて。C++は「原理的には

2011-07-22 16:52:21
Kenji Yoshida @xuwei_k

そして、Rubyにも flat_map あったような http://t.co/1z6j59F pythonはしらぬ(´・ω・`)

2011-07-22 16:53:37
++C++; // 管理人: 岩永 @ufcpp

@bleis 機能としてはインターフェイスが実装を持つ(トレイト)というのと、実装を後から追加する(暗黙型変換)というのがありますけども。どっちかというとそういう機能的な話ではなくて、データ処理、パイプライン型のコーディングという目的で見てるので。

2011-07-22 16:54:12