scala-arm や clojure.java.io が例外安全じゃない?

4
HARUYAMA Seigo @haruyama

scala-armはあきらかにおかしいので利用してる人 はやばい

2013-01-10 23:21:19
HARUYAMA Seigo @haruyama

managed で新しいインスタンスつくってるのでそこでOutOfMemoryError出たらリークするじゃん

2013-01-10 23:22:20
HARUYAMA Seigo @haruyama

ScalaやClojure書いてる人がJavaに詳しくないのは残念

2013-01-10 23:24:41
HARUYAMA Seigo @haruyama

どちらも回避できるけど...

2013-01-10 23:27:11
病気の美少女 @lyrical_logical

@haruyama 残念というか、書くの辛そうですね…それとも少し前に話していた例外安全周りのことですか?

2013-01-10 23:34:16
HARUYAMA Seigo @haruyama

@lyrical_logical 今日話題にしたのは例外安全関係です. 本当は基底の言語に依存しないのがいいのでしょうが... .NetだろうとJVMだろうと基底がどうだろうと統一されていたほうたいいですね, 言語としては. 言語の普及としては必ずしもそうではないでしょう.

2013-01-10 23:36:19
病気の美少女 @lyrical_logical

@haruyama んーと、ちょっと言いたいことが分からないです…

2013-01-10 23:37:32
HARUYAMA Seigo @haruyama

@lyrical_logical まず, scala-armやhttp://t.co/s0sB9lAz, さらにjavaなLuceneはThrowable安全でないです. それは残念に思っています.

2013-01-10 23:39:49
HARUYAMA Seigo @haruyama

@lyrical_logical ただし JVM じゃない基底の言語/環境があってそこの面倒を見てくれるのなら, (制限はあるにせよ)よい方向だとは思っています. .NETやそれ以外の基底の環境で面倒を見てくれたらいいなとは思っています

2013-01-10 23:42:15
病気の美少女 @lyrical_logical

@haruyama えーと、うーん、やっぱりよくわかってないんですが、ファイナライザがやってくれればいいのにという話ですか?

2013-01-10 23:43:11
HARUYAMA Seigo @haruyama

@lyrical_logical いやいまのJVMでのファイナライザの呼ばれるタイミングは決まってないのでだめですね.

2013-01-10 23:44:54
病気の美少女 @lyrical_logical

@haruyama もっと precise なリソース管理のための仕組みくれという話でしょうかうーん、なんかちょっと基底がどうのの話と例外安全の話がつながらないです

2013-01-10 23:46:04
HARUYAMA Seigo @haruyama

@lyrical_logical Javaだとpreciseなリソース管理の手間が大きいですね. これはJVMに乗っている以上しょうがなさそうです. 別の環境でそこの面倒を見てくれたら嬉しいなという話しです.

2013-01-10 23:49:03
HARUYAMA Seigo @haruyama

まあ Perlでもsig_atomic_tが気になる.

2013-01-10 23:50:27
病気の美少女 @lyrical_logical

@haruyama JVM は関係ない、というか JVM 上で動く言語で precise なリソース管理を自然に書けるようにはできると思うのですが…とはいえ GC からは逃れられないのでリソースとしてのメモリに関してはまあ無理かなという感じはします。

2013-01-10 23:51:49
HARUYAMA Seigo @haruyama

@lyrical_logical JavaでもC++でも言語の範囲でpreciseなリソース管理は可能です. ただ, 世の中を見ているとどちらも難しいようです(C++ でも Javaでもできてない例は多いです). もっと簡単にできたほうがいいのだろうなとは思います

2013-01-10 23:58:02
kmizu @kmizu

寝る寝る詐欺1 scala-arm ってそもそも例外安全の話(OutOfMemoryError出たらリークするというのは、そもそもOutOfMemoryErrorに対して対処してないプログラムが大半な状態でいってもあんまし意味無い気がするけど)以前に、普通使われてないような…

2013-01-11 00:00:32
病気の美少女 @lyrical_logical

@haruyama Java はしんどいですね Java7 でなんか入ってたけどあれもなあ…C++ は細かくできるけど難しいというかだるい(C++11 でましにはなるけど)ですね。Haskell の ResourceT とかはどうなのかなあ…まあ根本的に難しい問題な気がしてます

2013-01-11 00:00:52
kmizu @kmizu

scala-arm は実験的なライブラリだし。あれはdelimited continuation使ってflatなスタイルでも書けるという実験がミソであって、それ以外は結構どうでもいい。

2013-01-11 00:02:38
HARUYAMA Seigo @haruyama

@lyrical_logical try-with-resouces は Eclipse 4.2.1 がちゃんと対応してなかったので, まだ全面的には採用してません. いろいろな意味でリソース管理は鬼門なのですかね...

2013-01-11 00:02:53
病気の美少女 @lyrical_logical

リソースは所有者がころころ変わるために、構文的にサポートすることが難しい(ころころ変わらない場合は構文的サポートのあるなしに関係なく簡単)と思ってるんですけど、どうなんでしょうね。となると矢張り計算のコンテキストみたいになるのでモナドとか継続とかになっちゃうのかなあ…ぬぬ…

2013-01-11 00:03:21
病気の美少女 @lyrical_logical

@haruyama リソースをもっと抽象的に見て、状態を持っていて所有者がころころ変わる(こともある)もの、と捉えると、なんかもう日本語の時点で難しさが出てきまくりですよね…

2013-01-11 00:06:07
病気の美少女 @lyrical_logical

いかんリソースの話ちょっと好きなので離れられないぽよ…お風呂も好きなのに…どうして?

2013-01-11 00:06:56