オライリー矢野様より献本御礼。
私のような Occasional Pythonistas には、これまで書かれた最良の Python 本。
だけど、初心者向けの本としては、どうなのだろう。
本書「初めてのPython 第三版」は、タイトルどおり、プログラミング言語Pythonの初心者向けの本であり、そしてオライリーという出版社がだしているだけあって、その決定版であることを運命づけられた一冊。
Book:初めてのPython 第3版より
|
|
まずびっくりしたのが、その厚さ。800ページを超えている。ただページ数が多いだけではない。フォントが明らかに他の動物本より小さいのだ。単に文字数だけを数えたら、邦訳が上下に分冊されてしまったラクダ本に匹敵するのではないか。
はじめからこうだったわけではない。初版が432ページで、 第2版が715ページ。そしてついに第3版で808ページというわけだが、なぜここまで大きくなってしまったかには、二つほど理由がある。
一つは、著者--に限らず Pythonistas というのは、「どうやる」、「なぜそうか」に加えて「なぜそれが正しいのか」を語りたがる癖があるから。小姑といえば小姑ではあるが、懇切丁寧といえば懇切丁寧である。Pythonたんが実在したとしたら、委員長に違いない。ぜったい違いない。
しかしもう一つは、Pythonもまた歴史というものから逃れられないことから生じている。同じことをやるにしても、過去と現在では「正しい」やり方が変わってきているのである。
例えば、以下の例を見てみる。
[Run via codepad]
import math
def log2(b = math.exp(1)):
def f(x):
return math.log(x) / math.log(b)
return f
lg = log2(2)
print lg
print lg(8)
print log2()(8)
以上は、クロージャーを持つ言語に慣れたユーザーであれば、実に自然な表記である。JavaScriptならこうなるだろう。
var log2 = function (base){
if (!base) base = Math.exp(1);
return function(x){
return Math.log(x) / Math.log(base);
};
};
var lg = log2(2);
alert([ lg, lg(8), log2()(8) ].join(',\n'));
ところが、かつてこういう書き方はエラーになっていたそうなのである。どうしてエラーになっていたのかは、本書P. 347をご覧頂くとして、本書は「過去のPythonに対する弁解」もかなり入っていて、それが嵩を増している。
かさを気にしなければ、本書は単なる入門書としてではなく、かつてPythonを使ってみようとして挫折したり飽きたり失望したりした人々に対する再入門書としても実によい出来だといえる。ここまで懇切丁寧だと、間違いはおこしようがないのではないかと思えるほど。委員長のツンデレさかげんを試すのは、本書の範疇からは外れる。
それでもこれを見て、プログラミングというものを未体験の人は、正直びびらないだろうか?転校して来た初日に委員長にしかられるような体験にならないだろうか?本書を見てびびった人は、以前紹介した「実践Python」を薦めておく。
しかしそれ以上に心配になったのは、Python のバイブルとなっている「ヘビ本」との棲み分け。目次を見ての通り、本書は「初めての」を通り越して「終わりまで」な一冊なのだが、ヘビ本の原著第三版は、なんと1596ページある。これならご本尊を食ってしまうこともないというわけか。本書の表紙はどう見てもニシキヘビの大好物である。「窮鼠蛇を噛む」なんてことになったら面白いと思ったのだが。
それらを考慮しても、そろそろ「初めてのPython」は、「初めてのPerl」がリャマとアルパカに分かれたように、分冊すべきだと思う。初心者でなくとも怖がる人は少なくないのではないか。
委員長属性がある人は、言語ごと本書もお勧めなのは言うに及ばず。
Dan the Occasional Pythonista

このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。