Scalaの普及と可読性の議論

10
tanigon@ついったー東方部 @tanigon

@gakuzzzz filterの話、すこしズレがあるかもしれませんが、本当にそれが自然言語的に「フィルタリング」を意図したコードならアレですが、 OptionがSomeである場合に取り出す って時に連想するかどうかは慣れかもしれません(これもともとのfilterの例の話で)

2015-02-24 14:23:03
tanigon@ついったー東方部 @tanigon

@gakuzzzz flatMapにせよfilterにせよ for yield にせよ、名前や自然言語的な響き?意味?を無視して、実際の操作に着目すれば、誰でも読めることなのだとは思うのです。だからこその「慣れ」だと思うのですが、 それが入り口にあると敷居がなあ、という心配。。

2015-02-24 14:24:00
がくぞ @gakuzzzz

@tanigon あー Option をコレクション的に見做すのに慣れが必要という話は理解できます

2015-02-24 14:24:07
tanigon@ついったー東方部 @tanigon

前提知識や、前提パラダイム経験みたいなのが取っ払われたほうが普及はしやすくて、手っ取り早いのは手続き型言語から人をひっぱってくることなんだけど、そうなるとflatMapで何でもやれちゃう感はトリッキーな気がする。Optionに対してイテレータ的操作ができるって話もかな。

2015-02-24 14:26:25
がくぞ @gakuzzzz

@tanigon それはちょっと手続き的思考な気がします。実際の操作を記述するのではなく、何がしたいのかの目的を宣言する方が生産性高くできるよね、っていう所から宣言的アプローチが取りざたされている所もあり。for-yieldなんかは手続きを排除して宣言的にそれを記す記法ですよね

2015-02-24 14:26:30
tanigon@ついったー東方部 @tanigon

@gakuzzzz あ、そこがズレてるのかもですね。この話の発端というか問題意識ってエントリに引用のあった「Scala思ったより普及しない」みたいな部分が響いていて。 これ(一連の例)が当たり前だとそりゃ普及は遅いんじゃない?って意味でした。

2015-02-24 14:27:46
tanigon@ついったー東方部 @tanigon

宣言的プログラミングのほうがより自然言語的な可読性が大切だという気もしてる。 実際に A[T] => T で取り出せればいいのだから flatMap で、って話は「なにがflatでなにがmapなんだ...?」って意味がわからない部分は 手続き型脳か否かで済む話ではないと思う。

2015-02-24 14:29:55
がくぞ @gakuzzzz

@tanigon ああーすみません、そこ読み落としてましたね。そういうコンテキストなら仰りたい事は理解できます。あたりまえ感出すのは普及には良くない気がしますね

2015-02-24 14:30:08
tanigon@ついったー東方部 @tanigon

@gakuzzzz 内包表記慣れがあるとすごくスムーズ!だとすると Pythonistaを引っ張ってくるのは意外とイージーなのでしょうか(夢見がち

2015-02-24 14:32:22
がくぞ @gakuzzzz

まーでもOOPも最初そんな感じだったし、ただの過渡期ゆえの問題な気がしないでも無いなー。別にScalaじゃなくても宣言的アプローチが増えていく流れは変わらなそうだし

2015-02-24 14:32:36
がくぞ @gakuzzzz

@tanigon その辺期待したいのですが、オフサイドルールラバーだと厳しいかもしれません……

2015-02-24 14:33:20