本日、オンライン勉強会Online.sg 第06回 「Scala」に参加した。
Scala入門 〜手探りで(yayuguが)学ぶ関数型言語〜 - id:yayugu
Java のコードを Scala のコードに書き直したものを比較しながら見ていく形式。その前にコードを読むのに最低限必要な知識のレクチャー。
今回のプログラムの題材は「財布の小銭を減らす払い方ゲーム」。所持しているコインの種類と枚数、そして支払金額から最終的な所持コイン枚数がもっとも少なくなるようにはどのように払えばいいか、を解くプログラム。
参考に Ruby のコードもあって、しかも Ruby のコードが一番短いという…まあそこは言語経験の差だよね。誰だって使いなれた言語が一番書きやすい。
一通り見たところでGUI版を動かすデモを行う…はずだったのがまさかのトラブル。こういう時、すごい焦るよね。わかります。がんばれーとか言うと余計焦ると思われるので心の中で応援してました。
トラブルの原因はソースコードの文字コード。Shift_JIS で書かれていたんだけど、Scala はデフォルトでは UTF-8 として処理するらしいので -encoding オプションでソースコードの文字コードを指定するかソースコードを UTF-8 に変換する必要があった。今回は後者で対応。
こういうトラブルも(発表者には悪いですが)生のいいところ。おかげで「文字コードには気をつけろ」と言う教訓が増えた。