私がJVM系関数型プログラミング言語を知るまで

記憶の整理のためにまとめ。

はじめは、普段から読んでいたブログにJava8、Groovy、Gradle、Scala、PlayFrameworkとか、その辺りの単語をよく見るようになって、そこから興味が湧いたのだと思います。最初はとっつきやすそうなGroovyを選びました。

Groovy

公式の日本語ドキュメントを読みながら覚えました。

Groovyを触ってて感じたこと

  • Eclipseだとあんまりカラーリング効かない?
  • 補完もあんまり高機能じゃない……動的型付けだから?
  • Javaの構文がほぼ使えるのはありがたい
  • 関数とメソッドの違いがなんとなくわかった
  • どんどんクロージャを引数にとるメソッドで繋げて書けて楽しい
  • メソッド繋げすぎてスパゲッティ化しました……
  • PowerAssertとか、GStringとか便利
  • Javaのライブラリが違和感なく使える
  • 名前がチャラい

Scala

ある程度Groovy触って動的型付け苦手かもな……と感じている頃、Scalaが静的型付け言語だということを知り、Scalaをお勉強し始めました。

Groovyを触ってほんの少し関数の知識はついたので、公式のマニュアルと、関数型Scalaの翻訳記事を読みながら覚えました。

Scalaを触ってて感じたこと

  • Eclipseでのカラーリング&補完のあたりが空気読める
  • 言語仕様が多くて把握しきれないし、理解するのに時間がかかるものも多い。
  • 一度理解できればとても便利な機能やメソッドが多い。
  • 関数定義の文法とか、記号メソッドとかがいまだに覚えられない
  • Groovyやってた時より、関数型の理解が深まって楽しくなってきた
  • 名前が優等生くさい

Kotlin

Scalaもほんの少しわかってきて他の言語も触ってみようと思って、ScalaとかGroovyのWikipediaのページの下の方にある、「VM上で動くプログラミング言語」のところを見てKotlinを発見する。Intellij IDEA を作っているJetBrainsが開発しているらしい。

めっちゃわかりやすくまとまっているKotlinのAdventCalendarがあって、これでほぼ全部覚えられた。

Kotlinを触って感じたこと

  • Groovy、ScalaよりJavaをベースにしている感じが強い
  • ScalaほどCollection系のメソッドが多くない
  • というよりは全体的に機能がまだ少ないと感じる
  • Java側のライブラリでnullを返さないメソッドでも、?と!!を使わなきゃならない
  • データクラスと多重宣言がおもしろい
  • Kotlinを触ることで、Groovy, Scalaでわからなかった部分が少しわかってきた
  • Java8になってからどう変わっていくのかが楽しみ
  • 名前がかわいい

その他のいろいろ

今のところ、この3つのうちではKotlinが一番気に入って触ってて、あとScalaも少し触ってます。Groovyはあんまり触ってないです。 まだどの言語もフレームワーク周辺を全然触っていないので、その辺触りだしたらまたどの言語が良いとかは変わってくる思うけど、今までの経緯としてはこんな感じです。 次はGrails、Play Framework、Kara Web Frameworkあたりを触ってみようかなと思っています。