Programming in Scalaという本が気になる

正直に言って,もし2003年の時点でMartin Odersky氏,Lex Spoon 氏,Bill Venners 氏による本Programming in Scalaのことを誰かが教えてくれていたなら,私がGroovy を作ることはなかっただろうと思っています。

総まとめ:Javaの将来的な後継者としての Scala

ほう。GroovyもScalaも全く知らないがそういわれると下記の本は気になる。Amazonのレビューも軒並み好評価だし。

Programming in Scala: A Comprehensive Step-by-step Guide

Programming in Scala: A Comprehensive Step-by-step Guide

ただ英語で700ページを超える厚さなのが悩みどころ。

とはいえ↓という意見があったら買わなきゃいけない気がしてきた。

Programming in Scala: A Comprehensive Step-by-step Guide

以前からScalaには興味があったのですが、本格的にはまったのはこの本を読んでからです。
これは名著です。名著と言わざるをえない。
技術書もいろいろ読みましたが、徹夜で読みふけったのはこれが初めてです。
かなりぶ厚い本ですが、1ページめくるごとに新しい発見があって、まったく厚さを感じさせません。

文体は簡潔にして明晰であり、とても理解しやすいものです。

一見 複雑に見えるScalaの機能が、いかに一貫性のある、シンプルな思想に基づいて作られているのかがわかります。

これを読めば、きっとあなたもScalaが好きになる!

おすすめです。

Programming in Scala - N2 ToolBox(跡地)

以下はオリジナルのブログの一部超訳です。英語の勉強をかねてやってみましたけど、難しいですね。おかしいところも多々ありそうですが、とりあえず晒しときます。

Yet Scala has type inference - so its typically as concise as Ruby/Groovy but that everything has static types. This is a good thing; it makes code comprehension, navigation & documentation much simpler. Any token/method/symbol you can click on to navigate to the actual implementation code & documentation. No wacky monkey patching involved, or doubting of who added a method, when and how - which is great for large projects with lots of folks working on the same code over long periods of time. Scala seems to hit the perfect sweet spot between the consise feel of a dynamic language, while actually being completely statically typed. So I never have to remember the magic methods that are available - or run a script in a shell then inspect the object to see what it really looks like - the IDE/compiler just knows while you edit.

James Strachan's Blog: Scala as the long term replacement for java/javac?

Scala型推論をもっています。それは典型的にはRubyやGroovyと同じぐらい簡潔ですが、すべて静的な型をもっています。これはいいことですし、コードの理解、遷移&ドキュメントが簡単になります。あなたが任意のトークン/メソッド/シンボルをクリックすれば、実際の実装コードとドキュメントへ遷移することができます。変なモンキーパッチングは無いし、誰がメソッドを追加したのか疑う必要はありません。これは長期間同じコード上で多くのものが動く大規模プロジェクトでは重要なことです。Scala動的言語の簡潔な感じの間のスウィートスポットを打ち抜いているように見えます。実際には完全な静的型付けですけど。だから私は有用ではあるけれども魔術的なメソッドを覚える必要なないし、オブジェクトがどんなものか見るためにシェルでスクリプトを走らせてinspectすることもないのです。コードの編集中はIDEコンパイラだけがそういうことを知っているのです。

Scala has high order functions and closure support along with sequence comprehensions so you can write beautifully concise code. Scala also unifies functional and OO paradigms beautifully together into a language thats considerably simpler than Java (though the type system is of a similar order to truly understand than generics - but then thats usually an issue for framework creators rather than application code developers). It also lets folks gradually migrate from a traiditional OO/Java way of coding to a more functional way - which is particularly relevant for folks writing concurrent or asynchronous code (which due to the GHz of chips no longer going up but instead we're getting more cores is becoming more necessary). You can start the OO way and migrate to using immutable state if/when you need its benefits. Increasingly functional programming is becoming more and more important as we try and make things more concise and higher level (e.g. closures, higher order functions, pattern matching, monads etc) as well as dealing with concurrency and asynchrony via immutable state etc.

James Strachan's Blog: Scala as the long term replacement for java/javac?

Scalasequence comprehensionsと一緒に高階関数クロージャをサポートしているため簡潔でビューティフルなコードを書くことができます。Scalaは関数型とOOのパラダイムを統一し、Javaよりもかなりシンプルな1つの言語になっています(その型システムはジェネリクスよりも真に理解できるほどシンプルです。もっともこれはアプリケーション開発者よりもフレームワーク開発者にとって重要な問題でしょうけど)。このことは多くの人が徐々に古典的なOO/Javaな道から関数型の道へ移行することを推進するでしょう。並行、非同期なコード(チップのGHzはもはや上がっていかないけれども代わりにもっと多くのコアが必要になってくる)を書く人にとってはこれはとくに明らかです。もしメリットがあるならOOの道を進んだ後にimmutable stateを使うために関数型に移行することもできます。私たちがもっと簡潔で高レベル(例:クロージャ高階関数、パターンマッチング、モナドetc)なものを作ろうとするならば、関数型プログラミングはますます重要になってきています。immutable state etcによって並行、非同期を扱うのと同様に。