名古屋 Scala 勉強会に参加してきた!

こういうのに参加しないといつまで経っても

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)


を読み始めないと思って・・・


今回はなんと! 33 章中 1 章すら終らなかった*1という・・・
まぁ、1 章は文章ばっかだったので、もうちょっと進めば表とかコードとかいっぱい出てくるからスピードも速くなる!はず!
以下なんかごった煮。眠いので超適当。

trait

Ruby の Module と同じような物で、Mixin して使う。
trait って名前は C++ の type traits から取ってきてる・・・のかな?

組込み型 VS ライブラリで拡張

組み込み型を増やさずにライブラリで拡張するのはなぜか・・・
→組み込み型は増やせない→スケーラブルじゃない!

共有メモリとロック中心のスレッドモデルの限界

2 とか 4 以上になるとうまくスケールしない・・・事もある?
よくわかんない。

OCamlScala

Expression Problem がどうのこうのな唯二の言語らしい。
どちらもオブジェクト指向と関数型を融合している言語だけど、アプローチが違う。
Scala はオブジェクトで関数を表していて、OCaml はラムダ式でオブジェクトを表している・・・らしい。

Java のプリミティブ型とかジェネリクスとか

int と Integer の違いを意識してないとはまる。
オートボクシング・オートアンボクシングを入れるより、プリミティブ型の扱いをかえた方がよほど良かった。

C# だとどうよ

C#C# で、演算子オーバーロードが static なせいで C++ みたいなことができない・・・
例えば・・・

public static T add5<T>(T t)
{
    return t + 5;   // コンパイルエラー
}

とか。
演算子オーバーロードが static なせいで、というよりは、static なメソッドに対して C# では制約を付けることが出来ないのが問題点。
・・・んー、制約と書いてしまうと語弊があるかも・・・

int がオブジェクトじゃない云々

シンタックスシュガーとして実装できるので、速度の問題が〜とかは実は逃げているだけなんじゃ・・・
追記:
Scala じゃなくて Java の話です。コメント欄にあるように、Scala は int(Int) に限らず全部オブジェクトです。

RichString

暗黙の型変換専用のクラスなので、安全らしい。

セミコロン

別に 1 文字くらいどうでもいいんだけど、中途半端はやめて欲しい・・・
付けるなら付ける、付けないなら付けないにしてくれた方が・・・

完全な型推論

Scala は完全な型推論ではなくて、メソッドの引数や戻り値では型の指定が必要。


ねむい。

*1:次は 1.3.3 から