ScalaとJavaの複雑さとは何か?

12
がくぞ @gakuzzzz

@cocoatomo あー そこは違うルールですね。 同じ記号が異なる意味になるのが判りにくいという指摘は納得できます

2015-09-16 12:38:09
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

@gakuzzzz ですねー、その辺りは同意です。ただ、今回のMapのアレコレの場合、javaだと辞書リテラル無いのでMapの初期化は愚直にやるしか無くてむっちゃだるいんですけど、だるいと複雑ではないは一致してなくて、特殊なルールが無い分だるいけど分かりやすくはあるという感想です

2015-09-16 12:39:42
がくぞ @gakuzzzz

@cocoatomo 統一アクセス原則そのものが間違ってる(メリット以上のデメリットがある)っていう話ですかね

2015-09-16 12:40:03
がくぞ @gakuzzzz

@kamekoopa せんせー!無名クラスとインスタンス初期化子の合わせ技とかは愚直に含まれますか?

2015-09-16 12:41:35
tomo🐧@learning @cocoatomo

@gakuzzzz 「統一アクセス原則」ってどういうことを指していますか? 私は "method(arg)" を "method arg" と書かれるのを嫌がってます.

2015-09-16 12:43:17
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

@gakuzzzz き、既存の仕組みを使って工夫することは一般的によくあるんじゃ…。(震え声)

2015-09-16 12:45:28
がくぞ @gakuzzzz

@cocoatomo 「統一アクセス原則」は引数をとらず状態を変えないようなメソッドは括弧をつけずにフィールドと同じアクセス方法しよう、ってやつですね。 method.apply(.) が method(.) 見えて嫌だという話かと思いましたが別の話ですね method arg

2015-09-16 12:47:24
tomo🐧@learning @cocoatomo

自分がそもそも「省略」自体が嫌いなのが根本にある気がしてきた. "Explicit is better than implicit." twitter.com/kamekoopa/stat…

2015-09-16 12:48:12
スペシャリストとしては評価できないタイプの技術者💉💉💉💉 @kamekoopa

applyが省略できるとかunapplyという名前であるルールでメソッドが実装されてるとパターンマッチでいい感じに出来るとか引数が一つだと括弧が省略できるとか高階関数の仮引数のアンスコ化のルールとかドット省略とかメソッド名セミコロン中置とか型パラメータ中置ルールとか

2015-09-16 12:34:44
tomo🐧@learning @cocoatomo

@gakuzzzz それで言えば「統一アクセス原則」は気にならないです. 数学でも「数」を「その数を返す引数 0 個の関数」と見なすこともできるので.

2015-09-16 12:49:51
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

def nyan(): \/[Error, Result] = ??? より def nyan(): Error\/Result = ??? の方が見た目わかりやすいみたいなのあるんで慣れれば快適だとは思うんですけどねー。

2015-09-16 12:50:54
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

あれかな。Scalaいろんな書き方が出来たりコードの様相の見せ方が出来る割には構文のルール自体は少ないみたいな話かしら。

2015-09-16 12:53:02
がくぞ @gakuzzzz

@cocoatomo なるほど。とすると最初の「apply のレシーバに自由度がある分,「これは何の apply だ?」と考えなきゃなので」というのがいまいちどういうケースなのかがピンと来てないですね……

2015-09-16 12:53:16
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

出来ることの数の多さに対してのルールの数の比というか。

2015-09-16 12:53:38
コスモ @cosmo__

@cocoatomo おぉ、tomoさんと同じ考えに至るとは思いませんでした。僕もExplicit is better than implicit.と感じますね~。

2015-09-16 12:54:43
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

「そもそもそれを求めてない、そんなには求めてない」という層の人からすればあまりメリットになってない?

2015-09-16 12:55:08
がくぞ @gakuzzzz

@kamekoopa (せんせー、それけっきょく複雑度ましてますよね……)

2015-09-16 12:55:41
コスモ @cosmo__

より最小限の約束事でより多くの表現ができたほうが良くて、尚且つ省略しないってなるとそれって数学の思考じゃんというか。

2015-09-16 12:57:28
がくぞ @gakuzzzz

Haskell の 型クラスもある種の implicit な気がしてるんだけど きっとそれはScala脳だから

2015-09-16 12:57:28
もう疲れちゃって 全然動けなくてェ...(💉x5) @kamekoopa

@gakuzzzz 今の話の文脈で増してるという話になるかどうかはちょっと判断つかないなぁという感想です。無名クラスもインスタンス初期化子もコレクションの初期化用に導入された専用の仕組みではないので…。

2015-09-16 12:57:54
Yasuo Nakanishi @nakanishiyasuo

そもそも、複雑さって数だけじゃ計れない気が・・・ 数が多くても全体的に安定してることもあるし、数が少なくても乱雑だと難しく見えるし。

2015-09-16 12:58:11
tomo🐧@learning @cocoatomo

@gakuzzzz うーん,「『apply が省略可能』とルールが1つなのでシンプル」という主張への反対意見を言いたいのですが, apply の意味自体は様々な訳ですよね? それって構文の数は減ってるかもしれないけど, apply の意味の数だけルールが増えてるように感じます.

2015-09-16 12:58:26
がくぞ @gakuzzzz

@cocoatomo え、意味が増えてますか? そこがちょっと掴めてないです。 apply って只のメソッド名で、省略可能という話で。様々な使い方ができる=意味が様々という事でしょうか?

2015-09-16 13:00:15
tomo🐧@learning @cocoatomo

@gakuzzzz レシーバごとに apply の実装 (= 意味論) が違うので,「意味が増えてる」と表現しました.

2015-09-16 13:01:17
がくぞ @gakuzzzz

@kamekoopa あー その式の複雑度があがってるという話でした。twitter.com/nagise/status/…

2015-09-16 13:02:00
なぎせ ゆうき @nagise

@gakuzzzz 書かれているScalaのコードを解釈しようとしてたときに考慮すべき構文が多岐にわたる、みたいな

2015-09-16 12:27:03
がくぞ @gakuzzzz

@cocoatomo ううう、すみません「applyの実装が複数ある」 から 【「『apply が省略可能』とルールが1つなのでシンプル」が偽である】という命題までのつながりがまだピンときていません

2015-09-16 13:04:08