( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

書評:プログラミングScala - The Python Paradox is now the Scala Paradox

オライリージャパン様より献本頂きました。読了したので、感想など書いてみたいと思います。


プログラミングScala
プログラミングScala
posted with amazlet at 11.02.19
Dean Wampler Alex Payne
オライリージャパン
売り上げランキング: 69951

The Python Paradox is now the Scala Paradox

なんですが、本の紹介に入る前に、とある記事の紹介をしたいと思います。


The Python Paradox is now the Scala Paradox — Martin Kleppmann‘s blog

In his 2004 short essay The Python Paradox, PG argues (perhaps controversially) that a company can hire smarter programmers if it chooses to write its code in a “comparatively esoteric” programming language. At the time, Python was probably considered by most people to be esoteric in comparison to Java – in the sense that not many people would learn it at university or for career purposes. Therefore, the programmers who knew Python were people who learnt it for fun; and learning languages for fun is an activity which typically only the bright and motivated people engage in. Which makes the language a good “quality filter” for people.


2004年のポール・グレアムのエッセイ"The Python Paradox"では、ある企業が「比較的難解な」プログラミング言語でコードを書くことを選択したなら、より賢い(Smartな)プログラマを雇うことができる、と言っています。


当時、PythonJavaより難解である、と考えれていました(大学やキャリア目的でPythonを学ぶことがすくないので)。
したがって、Pythonを知っているプログラマは、純粋な興味でPythonを学んだ人々でした。そして、興味を持ってプログラミング言語を学ぶ人々は、活動的で明るく、やる気のあるプログラマです。


プログラミング言語は、よいプログラマを見分ける「上質のフィルタ」なのです。

http://martin.kleppmann.com/2009/09/18/the-python-paradox-is-now-the-scala-paradox.html


引用されている"The Python Paradox"も、短くて簡単な英文なので、是非読んでみてください。


さて、The Python Paradox is now the Scala Paradox — Martin Kleppmann‘s blogでは、" Scala in 2009 has the place which Python had in 2004.(2009年のScalaは2004年のPythonと同じ位置づけである)"と言っています。すなわち、あまり使われてなくて、やってる人はほとんど興味本位で勉強しはじめて、と言うわけです。そして、ポール・グレアムのエッセイの中で、"誰もが働いてみたい企業"としてGoogleがあげられており、実はGooglePythonの経験のあるプログラマを求めていたんだ、とありますが、GoogleTwitterやLinkedlnなどScalaをベビーに採用している企業に置き換えてみたらどうでしょうか?


「達人プログラマ」には「毎年、新たなプログラミング言語を1つは学ぶこと」というのがあります。今年学ぶ言語として、Scalaはいかがでしょう?いい仕事が見つかるかも知れませんよ?

プログラミングScalaについて

ようやく、本題の「プログラミングScala」についての書評です。


結論から言うと、良書であることは間違いありません。Scalaを学ぶなら、本書と「Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)(通称コップ本) 」を二冊セットで用意すべきです。


本書は、Scalaの機能や言語仕様について詳細に、時には処理系の内部に踏み込んで解説されています。また、著者の一人であるAlex Payneは元TwitterでプロダクトコードにScalaを投入してきた、いわば歴戦の勇士であり、随所に登場する実践的なTipsが非常に参考になります。


"6章 Scalaによる上級オブジェクト指向プログラミング"では、トレイトやコンパニオンオブジェクトなど、Scalaの特徴的なオブジェクト指向サポートをよりよい設計で扱うための実践的な内容が述べられており、是非従来のオブジェクト指向プログラミングに馴染んだ人に読んでもらいたいです。必ず新しい発見があります。


"8章 Scalaによる関数型プログラミング"においては、関数型プログラミングとはどのような思想なのか、実例のコードをもとにわかりやすく解説してあります。特に、関数型プログラミングとは切っても切れない関係であるListやOptionなどのデータ構造についても述べられています。同様のことはコップ本にも書いてありますが、すこし違ったアプローチで解説されています。Javaプログラマの方は、Java SE 8で導入予定のラムダ式に先駆けて、Scala関数型プログラミングを体験しておいてはどうでしょうか。


他にも"9章 アクターによる堅牢でスケーラブルな並行処理", "11章 ドメイン固有言語", "12章 Scalaの型システム", "13章 アプリケーションの設計"と、どの章も読み応えがあります。原著はScala2.7の頃に初版が発行されたのですが、翻訳版である本書は随所に脚注で2.8についても補足されています。


本書について、あえて苦言を述べるとしたら、「重厚すぎる」という点でしょうか?Scalaは豊富な機能を持つ言語ですので、それぞれの機能を細やかに解説していくと、どうしても分量が多くなりがちです。もし、初めてScalaに触れる方ならば、本書をじっくりと読み進めてもよいのですが、先にコップ本を読みつつ、気になったトピックを本書でさらに深く理解する、という進め方がよいでしょう。冒頭で、二冊セットで揃えるべき、と言ったのは、こういった理由です。


ともあれ、内容は素晴らしいので、Scalaプログラマ必携の一冊であることは、間違いないでしょう。