大人になりたくない

プログラミング系。最近は主に vvvv 。

Scala の入門と競技プログラミング

この一週間 Scala の勉強をしていた。
触っている感じ Scala は筋がいい。

純粋なオブジェクト指向だし、関数型スタイルもサポートしている。
Java のライブラリも完全に使える。

■読んだ本

評価のいい以下の3冊をまず購入。

・「Scala スケーラブルプログラミング」
・「Scala プログラミング入門」
・「Scala 逆引きレシピ」

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

Scala 設計者の書いた本。コップ本という。

SCALAプログラミング入門

SCALAプログラミング入門

Lift 開発者が書いた本。

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

この手の本はあまり好きではないのだけど、慣れるまではとても助かる。

まず「Scala スケーラブルプログラミング」と「Scala プログラミング入門」を平行して読んだ。
Scala 逆引きレシピ」は文法に体を慣らすために、Codeforces で簡単な問題を解きつつを参照する、というスタイル。

■競技プログラミングでの Scala

オンラインジャッジは言語学習者にいいよ、という話を人にしてきた割に、自分では新しい言語学習時に対して使ってこなかった。
ので、オンラインジャッジを使う。やっぱり文法とかに慣れるのには結構いいと思う。
とりあえず、Codeforceshttp://codeforces.com/)が対応している。

ちなみにコードは Github にあげている。
https://github.com/yhyjp/online_judge/tree/master/codeforces

■感想

書いていて感じるのはとてもパワフルだという事。
簡単な問題は超簡単に書ける。最大流とかどれくらいの行数で書けるのかなー。
とりあえずの用途としては競技プログラミング。慣れてきたら Web アプリを作っても良い。

関数型のプログラミングは慣れていないので、まだ頭の中からコードに書き下ろすのにとても時間かかる。
あとはシンタックスシュガーが多いし、便利な関数が多いので、きちんと理解しないと計算量の見積もりで絶対ミスりそう。
まだ疑心暗鬼でコードを書いている。
そのためにも上の二冊はおそらく数回読んだほうがよさそう。