#scala_impression まとめ
率直な印象として興味深いので、自分の見解をこっからちょっと書いてみる。 #scalajp #scala_impression "Scalaを使い始めてから半年だけど印象をまとめてみる - ぽにくすじゃないブログ http://t.co/K4ojux3naK"
2013-12-20 12:42:53とりあえず、最初に断っておくと、 @erukiti さん(id:erukitiさん)には悪印象は持っていません。Scalaを始めてからの率直な印象が書かれているなと素直に思います。 #scala_impression
2013-12-20 12:46:24「覚えることが多い」という事に関して。対象が言語そのものなのか、環境も含めてなのかによって異なるかと。環境を含めたときにScalaが特に覚えることが多いとは思わないです。ドキュメントの少ないライブラリについては別の問題としてあるかなと。 #scala_impression
2013-12-20 12:52:28たとえば、Javaだったらmavenの使い方とか。Rubyだったら gem や bundlerの扱い。native extensionをビルドするときにこけたときにどうするか、など覚えることはかなり多いかなと。 #scala_impression
2013-12-20 12:54:46マサカリに関しては、2010〜2011にかけて自分は無差別に投げてました。あくまで個別の論点にしぼるように意識してましたが、メンションされた方にしてはたまったもんじゃない、ということはあったかも。ここ1〜2年はほとんど投げてないはず。 #scala_impression
2013-12-20 12:58:19"better Java として簡単に使えるよという甘言をささやく人" 私もこれに近いことは言ってますが、真意としては、better Javaとして簡単に使えるよ、じゃなくて、「最初は」better Javaでもいいよ、という感じです。 #scala_impression
2013-12-20 13:02:01"どうしてもライブラリのソースを読まなければならないとか、仕事でほかの人のソースを読むことがあります。そんな時に、結局 Scala の世界で一般的なモノを一通り押さえる必要性があるわけなのです。" これは鋭い指摘です。 #scala_impression
2013-12-20 13:03:29ただ、"そんな時に、結局 Scala の世界で一般的なモノを一通り押さえる必要性があるわけなのです。" はどんな言語でも共通の話ですね。宣伝文句と違うじゃないか、という話としては正しいと思います。 #scala_impression
2013-12-20 13:05:26次、「コップ本が難し過ぎる」について。これは、自分としてはコメントが難しい。というのは、コップ本が出る以前、原著を最初に読んだときに、「実に平易に書かれてるなー」というのが第一印象であって、「コップ本が難しい」という感覚がわからないのです。 #scala_impression
2013-12-20 13:08:06@kmizu コップ本は、僕は途中からついていけなくなくなりました。自分の実力不足を感じます。Scala自体はあまり覚えることの多い言語でもありませんね。
2013-12-20 13:11:00ただ、「コップ本」の方は、翻訳にあたって訳語の選定が適切じゃない部分などがあって、日本語版の方が読みにくくなっています(言語の壁を別にすれば)。ちなみに、内容の誤りがあったら報告していただければと思います(これまでもいくつか直してます)。 #scala_impression
2013-12-20 13:11:14それはともかく、「コップ本」はScalaの「入門書」としてはそれほど適切ではないとも思います。Scala言語の設計思想、手続き的な考え方から関数型的な考え方の橋渡し的なものを学ぶには適していますが。コップ本後半部分はライブラリの紹介になったりしてバランスが悪い部分はあります。
2013-12-20 13:14:22"最初に読むべき本はSCALAプログラミング入門 とScala逆引きレシピです。" 『Scala逆引きレシピ』を最初に読むべきは賛成ですが、『Scalaプログラミング入門』はScala 2.8より前対象の本なので、今の時点でこれが良いは疑問。 #scala_impression
2013-12-20 13:17:09@kmizu あの記事は、「Scala 自体はシンプルだけど、マルチパラダイムでスケーラブルであるが故に、エコシステムを構成するそれぞれのライブラリが様々な文化(関数型、アクター、スクリプト言語、etc)を持ち込んでおり、結果的に学習すべき範囲が広大だ」という話と理解しました。
2013-12-20 13:19:35ちなみに、『コップ本』は最初から最後まで通読して写経する本ではないと思います(多くのプログラミング言語のいわゆる「バイブル」全般に言えることですが)。まずはさらっと流して読んで、気になった部分を深堀りする方が適しているんじゃないかなと思います。 #scala_impression
2013-12-20 13:19:37"多用されるDSL" これは割と正しいと思います。ただ、近年のScalaコミュニティでは、過去の、記号多用し過ぎた時代への反省などもあって、色々改善されています。"母体となる文化圏のお約束" はScalazを除けばあまりピンとこないです。 #scala_impression
2013-12-20 13:22:39@kmizu 先日の Scala バッシングについての小田好先生の post もその点を指摘しています。つまり、初学者に対する学習パスは、その人物が属していた文化や目的ごとに整備していく必要がありそうな気がしています。 https://t.co/9OilPEiBUN
2013-12-20 13:22:41"関数型言語としての側面がある" 疑いようもなく正しいですね。「モナド」や「型クラス」という用語(Oderskyはこれらの単語を「かなり意図的に」使わずに説明してたのですが…)がScalaコミュニティで広まったのは良かったのか悪かったのか。 #scala_impression
2013-12-20 13:25:53あと、『関数型言語のお約束』というより、関数型プログラミングでおさえておくべき作法、というべきかと思います(オブジェクト指向プログラミングでも、間姿プログラミングの作法は役立っているはずですが、とりあえずそれはおいておきます) #scala_impression
2013-12-20 13:28:20@kmizu それは関数型言語の宿命というか…Haskell が関数型!型クラス!モナド!遅延評価!みたいに流行らせて(Haskell が悪いという訳じゃないですが)しまったので…実際 Clojure や OCaml でもまあという感じに
2013-12-20 13:28:48Scalaの学習コストの高さは、おおむねその出自にあるのかなと思います。JVM上で動作して、Javaライブラリを透過的に呼び出すこと前提で作られているので、Scalaを実用的に使うには、最低でもJ2 SEライブラリ)の知識が必要ですから。 #scala_impression
2013-12-20 13:31:04