2006年11月21日 13:30 [Edit]

There's more than one language to cook your problems

今書いている本の資料として両書とも購入したのだけど、よせばいいのに二つとも一気読みしてしまった。

コンデンスミルクを二缶いっきのみしたような感じ。うぐぐ...


見てすぐわかるとおり、"Python Cookbook"も"Ruby Cookbook"も、大好評だった"Perl Cookbook"(404 Blog Not Found:perl - "Hello, world!"から始めたくない人はで書評)のPython版およびRuby版なのだけど、面白いのは、違うのは料理に使う言語だけではなく、レシピのまとめ方と料理の対象もそれぞれ少しずつ違うこと。

まず、レシピのまとめ方。Perl Cookbookの方は、「古典的」に著者だけでレシピをまとめているのだけど、後発の両書では多くの著者によって書かれたレシピを「著者」がまとめるというスタイルをとっていて、レシピごとにクレディットがついている。手法的には「まるごとPerl!」により近い。今後はCookbooksはこの方法で書かれるようになると思う。Perl Cookbookも3rd Ed.が出るのであればこの方法に移行するのではないか。

しかしそれよりも面白かったのは、料理で何をめざしているのかが、三者三様なことだ。

テキスト、数値、配列、ハッシュといった基本技に関してはどの本もきちんと紹介していて、どの本を読んでも一通りの料理はできるようになるのだけど、Pythonは包丁の上げ下げにうるさく、逆にRubyはフードカッターを平気で使うという感じ。三者をまとめると、Perlは料理そのものがおいしいことに、Pythonは台所がきれいであることに、そしてRubyでは楽しく料理することにそれぞれ主眼がおかれているという印象だ。

いずれのCookbookも一応対象読者はそれぞれの言語を日常的に使うプログラマーなのだが、むしろ中級以上のプログラマーであれば、自分が今まで使って来なかった言語のCookbookを眺めてみると、自分の料理にも奥行きが出るのではないか。理想をいえば3種類とも全部買ってしまうことだが、残念ながら邦訳があるのはPerlのみだ(多分Rubyは邦訳されるだろう。Pythonこそ訳出して欲しいところであるが)。少なくとも、一種類だけではなく二種類以上買っておくべきだ。確実に1+1≫2となる。

確かに三種類全部そろえると15,000円以上してしまうのは痛いし、分厚さも半端ではないが、それだけの価値は確実にあります。また内容が内容なので、英語はそれほど気にならないでしょう。「プロ」グラマーならぜひ揃えておきたい三冊。

Dan the Codecooker

追記:それにしても、Pythonのjoin()はなんでArray#joinでなくてString#joinなんだ?あとRubyのObject#cloneがDeep Copyじゃない理由って何だ?


この記事へのトラックバックURL

この記事へのトラックバック
オライリー矢野様より献本御礼。いつもありがとうございます。 JavaScript & DHTMLクックブック 第2版 Danny Goodman / 村上列訳 [原著:Javascript & Dhtml Cookbook (2nd Ed.)] 初出2008.06.17; 販売開始まで更新 JavaScriptのクックブックとしては結...
怠惰が足りないが短気旺盛 - 書評 - JavaScript & DHTMLクックブック 第2版【404 Blog Not Found】at 2008年06月17日 17:17
アスキー改めアスキーメディアワークスの鈴木様より献本御礼。 Unix/Linuxプログラミング理論と実践 Bruce Molay / 長尾高弘訳 C言語を通してUnix/Linuxの仕組みを学べる良著。Perl/Python/Rubyクックブックのレシピを、レシピを並べる(遅延学習的)のではなく、....
「Cクックブック」 - 書評 - Unix/Linuxプログラミング 理論と実践【404 Blog Not Found】at 2008年05月09日 22:12
献本御礼。 Python クックブック第二版 Alex Martelli / Anna Martelli Ravenscroft / David Ascher著 鴨澤眞夫 / 當山仁健 / 吉田聡 / 吉宗貞紀 訳 力作にして傑作。
書評 - Pythonクックブック【404 Blog Not Found】at 2007年06月20日 16:35
献本御礼は礼儀上当然であるが.... Rubyクックブック 失格。
書評 - Rubyクックブック【404 Blog Not Found】at 2007年06月20日 15:55
というわけで、404 Blog Not Found:There's more than one language to cook your problemsでPython & Ruby Cookbooksを一気読みしたので、気になる点を少しずつ書いて行くことにする。 まずは、文字の扱い。文字列でない点に注意。
perl, python & ruby - chr() vs. Unicode【404 Blog Not Found】at 2006年11月23日 22:09
さすが弾さん,
How would you cook? - Perl, Python, Ruby [memo]【Peace Pipe】at 2006年11月23日 00:35
この記事へのコメント
あんたの書く本は,結城さんのものとちがってオナニーでしかないので,どうせまたあんまり売れないよ.
Posted by とおりすがり at 2006年11月23日 19:28
> Pythonのjoin()
http://www.python.org/doc/faq/general/#why-is-join-a-string-method-instead-of-a-list-or-tuple-method
Posted by Dubhead at 2006年11月22日 10:53
pythonista は string にしか(基本的に)使わないメソッドを Array オブジェクトにはやすのは「美しくない」という思想です。
Posted by トオルスガルモノノ at 2006年11月22日 10:11
deep copyは個別のオブジェクト専用に対応しないといけないからです。
この辺がオブジェクトの種類が三種類(スカラ、アレイ、ハッシュ)しかないPerlとの違いですね。
っていうか、種々のオブジェクトがある言語では基本はshallowでしょう。
Posted by まつもと at 2006年11月21日 23:08
Faulenzerさん、
りがとうございます。
Dn the Typo Generator
Posted by at 2006年11月21日 16:02
「古典的」に著者だけでレシピをまとめているのdけど、
>、「古典的」に著者だけでレシピをまとめているのだけど、

母音が抜けてますぜ、Dan那。
Posted by Faulenzer at 2006年11月21日 14:52