Scala の学習を始めて6ヶ月経過
Scala の学習を始めて6ヶ月経過
今年の目標として関数型のプログラミングを身に付けようという目標を立てました。
当初 関数型のプログラミングが出来る言語として、
F#が気になっていたのでF#の元になっている OCaml をはじめに学習し始めたのですが、
命令型プログラミングにどっぷりつかった人間には、
今まで全く異なるアプローチ(に思える)の プログラムの書き方がなじめず、
周りにも 気軽にOcamlについて相談出来るような人もおらず行き詰まってました。
しょうがないので OCamlでの関数型プログラミングはとりあえずあきらめて、
Scala だと 命令型でも書けるし、関数型でも書けるから取っ付きやすいかな という安直な考えで始めたのがScalaの学習を始めたきっかけです。
結果的には 私にとっては OCaml から Scala に学習のターゲットを切り替えたことは正解だったと思います。
最初は命令型で書いてみて、その後関数的に書くことで 段々関数型的思考が 少しずつですが身に付いてきているように思います。
それに Javaの(負か正かわかりませんが)資産が使えるのも実用的でした。
そんなこんなで 約6ヶ月 勉強してみて 最近は Scalaが大好きになりつつあります。
仕事がプログラマではないので 逆に自分で使う仕事のツールをScalaで作っているのですが、
プログラムすることが楽しくなる言語に久しぶりに遭遇できました。
参考書
周りでScalaやっている人間は一人もいないで、
基本的に学習で使ったのは 市販されている本と、インターネットにある情報を中心に行ってきました。
書籍
以下の書籍が購入した書籍です。
このほか Web+DB PRESS のScala記事も参考にしました。
- Scalaスケーラブルプログラミング第2版
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 125回
- この商品を含むブログ (31件) を見る
この本は Scalaのプログラムを学習するなら是非持っておきたい本だと思います。
実際に手を動かしなら、動作を確認することで Scalaの作法を覚えて行きました。
細かいことは最初わからないことがあっても、
とりあえず、進めて一通り Scalaの作法を覚えてしまったほうがよいと思います。
いまだに、この本を読返しますが、
これはこういうことだったんだ と新たな発見があります。
オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門
- 作者: 株式会社テクノロジックアート,長瀬嘉秀,町田修一
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/13
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 228回
- この商品を含むブログ (28件) を見る
Javaの経験のある人、関数型プログラムの経験のない人には
読みやすくて、Scalaの概要をつかむには良い本だと思います。
Actorの説明もよいと思います。
ただ Actorの部分が理解できるようになったのは最近だったりします。
- 作者: 小笠原啓,尾崎智仁,関隆,水島宏太,今井敬吾
- 出版社/メーカー: 秀和システム
- 発売日: 2011/06
- メディア: 単行本
- 購入: 2人 クリック: 114回
- この商品を含むブログ (20件) を見る
Scalaの実例を集めたものです、進歩の早いScalaの為、
5章 開発環境、6章 Webフレームワークについては多少内容が古く感じますが
デザインパターンや継続に関しては、参考になります。
この本の対象は Javaの知識があるのが前提のように思えるので、
プログラム経験のない Scala 初心者には とくに後半はきついと思いますが、
ある程度 Scala理解した後で読むと内容的にやくにたちます。
Scalaの基本を理解した後で 読むのがよいと思います。
勉強会
勉強会への参加可能な方は是非参加されるほうがよいと思います。
とはいいつつ、私は時間的に参加出来てませんが、できれば参加したいと思っています。
特に 独学で学習されているかたには 壁になっていることがいとも簡単に壊すきっかけになることになる可能性があります。やはり 先人の方々のノウハウは大きなものがあります。
私自身、「Scala初心者向けハンズオン勉強会」#scalahandson に参加したのは非常に有意義な経験でした。正直このころは雲をつかむような状態だったのですが、この勉強会に参加したおかげでScalaの可能性を知ることができ、Scalaを学習しようというモチベーションにつながりました。
この勉強会に参加しなかったら Ocamlと同じようにあきらめていたかもしれません。