これからは、やはりJava+Scalaなのか

Ruby から Java へのシフトで大統領選を乗り切った Twitter」を読むと、RubyからJava+Scalaへ移行したことがTwitterの成功として語られています。

以前から「Twitter Shifting More Code to JVM, Citing Performance and Encapsulation As Primary Drivers」といった話はあったり、「Effective Scala」といった資料が公開されたりしていて、TwitterがScalaへシフトしていること自体はとても注目を浴びていたし、話題にもなっていた。

とはいうものの、これらがそのままScala人気につながるわけでもなく、日本では関数型プログラミング言語のひとつとして注目されている、ぐらいの感じがする。

一方で、「YammerがScalaからJavaへ移行中」といった話もあったりして、Javaを理解できるエンジニアとScalaを理解できるエンジニアとの間には大きな隔たりがあることがわかる。関数型プログラミング言語は扱う対象を関数で表現できるほど抽象度を高くしないと適用できないため、実際にあるものをオブジェクトレベルで具象化してプログラムとして理解しやすくするというオブジェクト指向的なアプローチとは別の考え方で理解をする必要がある点が難しいのではないかと推測している。

なんとなくであるが、Javaプログラマは「staticメソッドにしたいものがあったら、それを関数型プログラミング言語で実装すると幸せになれないか検討してみるといい」というところからスタートしてみると良いかもしれないと考えている。CからJavaへいくときに「とりあえず構造体をクラスにしておけ」と言われていたのと似たようなアプローチであるが、関数型プログラミング言語を使うと嬉しいところは何か、というのは実際に使って見ないとわからないだろうし、最初のうちはオブジェクト指向っぽい書き方で貫き通していても、あるとき関数型プログラミングの考え方で実装した方がきれいに実装できるパターンが何かというのがわかるようになるのではないだろうか。もちろん、別途参考資料などを読んで勉強するということは必要ですが。

オブジェクト指向プログラミングの世界では、GoFのデザインパターン本が出たことによって、オブジェクト指向プログラミングだとこういう恩恵を得られるということがわかりやすくなり、理解しやすくなったので、関数型プログラミング言語でもそういうアプローチをして紹介する書籍があるとブレイクするような気がします。個別分野では色々でているのだとおもいますが、もう少し全体的に網羅されたものがあると良いのですかね。

「すごいHaskell楽しく学ぼう!」が人気なのはうまく関数型プログラミング言語の利点を紹介しているからなのだと思います。いや、全部読みきったわけではないので憶測が入っていますけど(^^;

いずれにせよ、いろいろなプログラミング言語を勉強して、効率よくメンテナンスしやすいシステムの開発ができるようになりたいものですね!
—-
関連書籍

同じタグの記事: Java
同じタグの記事: program
同じタグの記事: Scala
同じカテゴリの記事: Program
関連書籍: Java
関連書籍: program
関連書籍: Scala