Scalaをカオスと感じるのも 無理はない
今日はScala勉強会があったのでScala2.8のScalaDocを何気に見ていた。
見ていてふと思った。
Scalaはカオスだとよく言われる。
確かに私も数年前にScalaを使い出した時には「訳わかんないな〜 このクラスどうやって使うんだ〜」と感じるクラスが沢山あった。
ScalaとJavaのライブラリの使い分けもよく分からなかった。
ただ何年か使っているとScalaはカオスだと感じなくなっていた。
確かに今でも「へ〜こんなことができるんだ」ということはたまにあるが、だいたいこんな感じでやるよな〜
とか 多分こんなクラスがあるんじゃないか? やっぱり あった〜
という勘所がわかってきた。
しかし しかし である。
今日勉強会でScalaDocを見ているときに「LowPriorityImplicits」というクラスが目にとまり 改めて 思った。
ScalaのライブラリにはCompilerが使用するクラスが結構あり、アプリケーションが使用するクラスとごっちゃになっている。
Scalaをカオスだと感じる原因がこういうところにもあるんだと 気づいた。
その他にもシンタックスシュガー的なクラスとして「::」や「!」などもある。
同じくアノテーション用のクラスも混在している。
これらが渾然一体となっているクラスライブラリを見たら なんだこりゃ〜 という気になるのもうなずける。
Javaなどの他の言語ではライブラリにあるクラスはほとんどがアプリケーションから、利用されるものでコンパイラーが使用するものやシンタックスシュガーのようなクラスはあまりない。
このあたりを整理するとScalaもぐっと分かりやすくなるのではないかと感じた。
Scalaは分かりにくいが 慣れるとこんなに手になじむ型付き言語はないのではないか とも思う。