#scala_impression まとめ

水島さんがまとめたやつ http://togetter.com/li/605164
3
kmizu @kmizu

"言語構造がシンプルでそこそこ小さい構造とシンタックスシュガーがベースにあり、ライブラリによる拡張によって言語仕様がスケールするというものです。" というあまり理解されてないScalaの特性について触れられているのは興味深いです。 #scala_impression

2013-12-20 13:34:05
kmizu @kmizu

パターンマッチの話は飛ばします(特にコメントすることがないので)。 #scala_impression

2013-12-20 13:35:02
kmizu @kmizu

"クラスの分解が言語仕様にある" この指摘は新鮮でした。というのは、関数型プログラミング言語としてみた場合、Scalaのこの機能はそもそも必須であり、自分はあえて意識する機会がなかったためです。 #scala_impression

2013-12-20 13:38:31
kmizu @kmizu

ただ、他の関数型言語と違い、代数的データ型として定義せずに、case classだけでクラスが分解できるようになるのはScalaならではですね。 #scala_impression

2013-12-20 13:39:33
きしだൠ(K1S) @kis

@kmizu どうでもいいところへのツッコミだけど、もう長いことJ2SE(Java2SE)ではなくJavaSEだよー

2013-12-20 13:39:35
kmizu @kmizu

とりあえずのコメントとしてはこんなところです。既にいくつか来てるリプライに関しては、後で応答します。全体として、単なる愚痴ではなく、Scalaの特性をよく踏まえている(私が偉そうにいうのはアレですが)と感じました。 #scala_impression

2013-12-20 13:42:13
kmizu @kmizu

@lyrical_logical @okapies そうですね。この際はっきり言うと、Haskell文化圏からそういうやっかいなものを持ち込んだのはScalazが主犯(の一人)だと断言しても良い。コントリビュータの人が悪いというわけじゃないのですが、あのお人が…。

2013-12-20 13:47:12
kmizu @kmizu

@kis そうですよね。つい、昔からのクセでJ2SEと書いてしまいました。ありがとうございますー

2013-12-20 14:05:52
kmizu @kmizu

@lyrical_logical まあ、確かに。型クラスやモナドは関数型プログラミングの本質的な部分じゃないのに、Haskellの方がOCamlよりメジャーになってしまったので、それが本質だと思われてしまっている悲しさ。

2013-12-20 14:08:37
病気の美少女 @lyrical_logical

@kmizu (G)ADTs とか pattern match とかなんかその辺のほうがはるかに基礎的て重要だと思うんですがなんなんでしょうねえ。やっぱりなんか派手さがないとダメなのか…GADTs も OO 側から見れば「やっとできるようになったの?」案件ですしね…

2013-12-20 14:11:03
kmizu @kmizu

@okapies はい。小田好先生のpostは私も先週読みましたが、文化圏は、 for Rubyist, for Java programmer, for 関数型プログラミング言語既に使ってる人たち の3種類くらいには分けた方がいいのかなと思います。

2013-12-20 14:13:26
kmizu @kmizu

@okapies 「目的」も、Webアプリケーション(フロントエンド含む)なのか、バッチ処理に使うのか、などによって、どう始めるのががいいかが変わるかもしれませんね。

2013-12-20 14:15:10
kmizu @kmizu

@lyrical_logical 同意です。GADTsなんて、いちいち言わなくてもOOPLでは意識せずとも使ってますし。pattern matchは派手さがないのがいけないのか。

2013-12-20 14:18:28
あべさん @mao_instantlife

Better Javaから始められるってのは、使いながら段階的に学習していけるということなので、誤解さえ与えなければもっと言ってもいいかもしれない。 @kmizu さんの言ってることもこういうことだと理解してるんだけど、違うかな?

2013-12-20 14:19:07
kmizu @kmizu

@mao_instantlife はい。自分の意図はそういうことになります。怯えなくても、「最初は」better Javaでいいよ、と。

2013-12-20 14:21:31
kmizu @kmizu

@trpla226 for式もそうですが、単に既存の言語要素への変換として定義されている構文が多いので、使うときに「覚えなければいけない」事は実は少ないのですよね。コップ本が難しい話は、自分は最初から「実に平易だ」と思ってしまったので、難しいという感覚がわからないのが難しいです。

2013-12-20 15:30:15
kmizu @kmizu

コップ本の原著である『Programming in Scala』を初めて読んだときは、「英語も平易だし、内容も丁寧で少しずつ進めていく感じでわかりやすい(後半は脇道にそれてたけど)」という感想(2007〜2008頃)だったので、難しいという感覚が(本当の意味で)わからない。

2013-12-20 15:37:18
kmizu @kmizu

Scala素人だったときに読んで「難しくない」と感じたんだから、自分にとっては難しくなかったんだけど、難しい/難しくないは主観だからある読者が難しいと感じたならそれは何をどういおうが難しいわけで。ともあれ、コップ本の「何が」難しく感じさせる要因なのかは知りたいと思っている。

2013-12-20 15:40:26
Taro L. Saito @taroleo

@kmizu Java知識が必要なのと、コンピューターサイエンスの教科書的な雰囲気があるので、慣れてない人には読みにくい気もします。

2013-12-20 15:41:33
Taro L. Saito @taroleo

@kmizu javaの部分はわかりやすいですが、後者の部分は具体的にするとどこだろう。。。

2013-12-20 15:42:44
あべさん @mao_instantlife

@kmizu あくまで個人の感想ですけど、ソフトウェアエンジニアリングのちゃんとした(というと語弊があるかも、ですが)教育を受けないでプログラマになって、という流れだと難しく感じるのかな、と思います。Scala以前の基礎ができてないというか。(自分もそういうキャリアですが)

2013-12-20 15:43:23
kmizu @kmizu

@taroleo なるほど。ただ、Java知識はある人でも、難しいという感想はちょくちょく聞くので、コンピュータサイエンスの教科書的な雰囲気が、人によって難しく感じる要因なのかもしれませんね。

2013-12-20 15:44:53
あべさん @mao_instantlife

@kmizu 他の言語については、もっと平易なというかそういう基礎がなくてもとりあえず書かせるみたいな本がありますけど、コップ本はそうではないので。

2013-12-20 15:45:10
あべさん @mao_instantlife

とはいえ、あの感想はコップ本以前に専門的な研さんを積んでない人がこの業界で仕事をしている、というところが問題、という話になっちゃって本質的ではない。

2013-12-20 15:48:41
kmizu @kmizu

@taroleo 特に前半〜中頃にかけての、説明の進め方、なんでしょうか。でも、思い返してみると、Javaの具体例をあげて、それをより関数型に書き換えていく箇所等は、あんまり教科書的でもない気がしてきました…

2013-12-20 15:49:03