ポストJavaを求める人向けです ![]()
頭から3分の1は普通に、それ以降はパラパラと目を通している程度ですが、こんな感じと思います。
・まずは、Java言語(or それ相当)の言語知識が前提
他の方も指摘しているとおり、Java(またはC#など相応のOO言語)のプログラミング知識が
なければ読めません。前提条件と考えてください。
・高度で、理解に時間を要する部分がある
上級のソフトウェア開発者は大丈夫でしょうが、
普通レベルのプログラマは、読みこなせない・使いこなせない「峠」的な部分が
いくつかあるようです。
私(=Java系中級プログラマ)自身苦戦してまして、何度も繰り返し目を通し、さらに実際に自分でソースを書いて動かして
ようやく理解できる、といった感じになりそうです。
これは、言語自体の持つ機能の多さ・深さと、言語自体の考え方(OO+関数型)によるものと思われ、
避けては通れなさそうです。
ちなみに、文章自体は問題はなく、翻訳ものですが日本語として特に違和感を感じることはありません。
あとしいて言えば、図解がもう少しあれば、理解が容易になったかもしれません。(リスト処理などの部分で)
・「実用書」とは言えない
Scala標準で含まれるRDBアクセスライブラリや、Java資源の具体的な活用方法などは
書かれていませんので、これを開発者に渡して「さあ、Scalaでシステムを作ろう」と
いうのはありえません。
#これで作れれば、一流レベルの人です
今後、使いこなしの本が出てくることを期待しています。
・ポストJavaの有力候補として
私自身はJava言語中心で開発していますが、Java言語の限界が見えてきているため、
自分のチームで導入可能なポストJava言語を少しづつ探していました。
その中でScala言語は、
- LL系言語から高い生産性を実現する機能・要素を盛り込み、かつ言語自体の洗練度が高い
- 他のLL系言語とは異なり、静的型付け言語というチーム開発向きの特長を持つ
- Javaとの親和性が高く、Java開発からの移行が他言語に比べて比較的容易
#といっても、それなりに難しいと思いますが
ということから、ポストJavaとして発展・普及が期待されます。
Scala自体が流行るかどうかは正直分かりませんが、
今後1レベル上のプログラム開発をしたいと考えている人にとって、とても勉強になるはずで、
将来他の言語が主流になったとしても、この本から学んだことは無駄にはならないでしょう。(きっと)
Scalaのバイブルたる本です。 ![]()
原著を読んだ者の感想です。
Java, Erlangは中級レベルです。
原著はScalaのバイブル的な扱いの本であり、あと2,3年はおそらくあれ以上の本は出ないだろうと思われます。難易度としては、Javaを知っていれば読めるレベルです。ただ、量が多く踏み込んでいるため、何回か読み直しが必要な本だと思います。手垢で真っ黒にするべき本の部類ですね。
次にこの書籍の評価に入ります。
日本語訳は読み易く、非常にスラスラと頭に入ってきます。
取り扱っている内容としては、文法レベルではほぼ網羅してあると思います。
記述のスタイルは各チャプターの内容を「オブジェクト指向的な書き方」と、「関数型的な書き方」の2つで読者に提供、解説するという形です。
しかし、著者の主張としては「関数型っぽく書け。どうしても面倒なところだけオブジェクト指向にしろ」というようなものがどうもあるようなので、やや関数型に寄っているような気はします。
オブジェクト指向は分かっているという前提を想定しているのかもしれません。
この記述スタイルは、純粋な関数型言語をやったことがあるなら特に問題ありませんが、手続き型やオブジェクト指向型に慣れ親しんでいる人は面食らうかもしれません。
あたりまえですが、新しい手続き型(オブジェクト指向)言語を覚えるのと同じスピードで、習ったことの無い関数型を覚えることはできません。
私はErlangをはじめてやったときに学習の遅さから多少凹んでしまいまいました。最初から時間がかかると意識していたほうが幸せかもしれません。
本書を読む上で注意するべき点は、
もしあなたがJavaプログラマであり、関数型プログラマでないのなら、関数型に関して書かれている部分は2回3回と読み直す必要があるということです。
なぜかというと、Scalaはオブジェクト指向も使えるので、関数型の特性を生かさないで全てオブジェクト指向でコードで書けてしまうからです。
これでは、Scalaを使うメリットが半減してしまいます。
関数型言語を覚えて、使えるようになる必要があります。
次に、Scalaの名前の由来にもなったscale性。
それを実現するためのActorモデルが壁となるかもしれません。
Erlangをやったことがない人がこれを理解するには、
送信した順番で絶対に届くソケット通信で、オブジェクトをやりとりしているようなものだと捉えればよいかもしれません。(正確には違うと思うのですが)
別々のマシンでは物理的にメモリを共有していないため、相手と情報をやりとりしようと思うとメッセージを使う必要があります。
Actorモデルもおおまかには似たようなものだと捉えていいと思います。
プロセス間でメッセージを交換し合うことによって、全体としてのシステムを構築します。
ただ、ある程度複雑なものを書くには設計パターンのようなものが必要になってきます。
その際にはクライアント/サーバ アーキテクチャを参考にすると設計がしやすいかもしれません。
プロセス間に階層を作ることをイメージすると、煩雑なプロセスに秩序を与え、制御をすることが容易となります。
(もちろん、上位のプロセスが落ちないようにしなければならないのですが。)
最後に本の見た目についてです。
少し1ページあたりに字数を詰め込みすぎている印象があり、原著よりもゴテゴテしているような感じはします。
ただ、適切な行間があり、スラスラ読んでいけるので特に違和感はかんじません。
最後に推定読書時間なのですが、おそらく40〜50時間ぐらいだと思います。
習得にかかる時間は検討がつきませんが、関数型言語とスクリプト型言語(特にRuby)をやっていると覚えがはやいのは間違いないと思います。
Javaを知らない人は本書を読むのは不可能に近いです。Javaからやって下さい。
いい本だと思うので、興味があるかたは買って損はないと思いますよ。
すべて道がscalaに通じていた ![]()
自分の第1プログラミング言語はjavaです。
これまで、プログラミングの幅を広げるために
また、今後実装されるであろうjavaの仕様を先取りする意味で
いろいろな言語を勉強してみました。
C、C++、Python、Ruby、Lisp、Scheme、Haskell、Proce55ing、Arduino
scalaには、上記に挙げた言語を網羅したエッセンスが詰まっていると
感じました。
オブジェクト指向、関数型、型推論、アクター、パターンマッチ
本書は、ある程度javaを使用したことがある読者に向けて書かれています。
今後、普及することを願っています。
| ¥ 1,554 | ||
| ¥ 2,940 | ||
| ¥ 2,310 | ||
| ¥ 1,490 | ||
| ¥ 2,604 | ||
| ¥ 800 | ||
| ¥ 3,570 | ||
| ¥ 2,520 | ||
| ¥ 2,940 | ||
| ¥ 2,709 |