ScalaにJavaの知識は必要か

表題の件、個人的には必要と考えます。コップ本Scalaプログラミング入門Scalaの本を2冊持っていますが、何れの書籍もjavaの知識を前提としています。また、ネット上の情報にしても、やはりjavaの知識を必要とするものが多いです。
API自体も、Javaを知っていた方がわかりやすい感じがします。


で、必要と感じたので、創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション[改訂第3版]を買って、ちょっとずつやってました。
そして、創るJavaと、ついでにコップ本を本日ようやっと読了しました。
ちまちまと手を動かしながらやったので、結構時間がかかりましたねー


創るJavaを読了しての悟り?は、繰り返しになりますが、やっぱりScalajavaの知識があった方が覚えやすいという事。
私がjavaの知識なし状態でScalaを勉強していて、特に苦戦していた型*1等は、例えばJavaGenericsがわかると理解度がぐっとあがります。
あとは例えば、コップ本の384ページ、20.8で、列挙(enumeration)が出てきますが、これなんかJavaの列挙型がわからないとなんのことだかさっぱりです。
もちろん、ネットで漁ればある程度列挙型というものが何かはわかるのですが、列挙型がなんの為にあるのか?どんな風に使うのか的なJavaのイディオムがわかっていないと、ふーんで終わってしまったりします。
そういった部分を創るJavaは良い感じに補完してくれました。
創るJavaは、これ一冊でjavaの中級者になれますという本ではないです。
が、自分がScalaを勉強するにあたって知りたかった部分を、広範囲に過不足なくカバーしてくれた感じです。
具体的にいうと、文法しってそれで?ではなく、基本APIの使い方であるとか、Javaでのコレクションクラスの取り扱い、実際的なGenericsの使い方、Javaプロジェクトの構成といったJava環境まわりの実際等です。もうちょっとJavaの事を知りたいとなった場合には、後はwebで調べればなんとかなるという所までは来たかなと。

というわけで、これで最低限の土台が構築出来たので、後はばんばん書いて、コード読みましょうという感じです。


追記:ちょっと脱線しますが、自分理解ではScalaJava+Haskell+Rubyという感じです。
この3つの知識があると、理解するのにはよりベターという感じですが、このうち、Haskellはなかなかしんどかったです。

*1:型パラメータとか