M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Mark Lutz 『初めてのPython 第3版』

初めてのPython 第3版

初めてのPython 第3版

・・・というわけで、Pythonのテキストを久々に読み返してみた。

こうして見ると数年前に読んだときの印象とことなって、このテキストの記述は妙に冗長かつ散漫である。

これは第1版→第2版→第3版と改版を重ねるごとに、そしてまたPythonがバージョンアップを重ねるごとに、もとの筋立てを維持しながら記載内容が書き足されてきたためらしい。

ビルトイン・オブジェクト、モジュール、パッケージ、クラスといったPython言語を構成するオブジェクトたちについて説明するとき、その細々とした部分の内容が、ときに前後の章の参照(前述と後述)をし、ときに道草をし、またしばしば奇妙な分岐やジャンプをしながら記述される。

結果的に、「多重継承の優先順位」といった話題が、ひとつの体系だった記載の中で整理されることなく、読み進めるうちにあちこち登場することになる(多重継承についての説明は斜め読みしただけでも3回見かけた。なるほど重大テーマだが、だからといってそこら中で繰り返し論じても仕方ない)。

「例外」のハンドリングについては状況はもっと悪い。少なくとも読者の感覚としては2ページもあれば呈示できると思われる情報に、くどくど16ページほどの紙幅を割いている。

内容は「構文Aは・・・だが、旧バージョンでは・・・だった、しかしいまでは・・・だ、しかしその点については・・・で述べよう、それはそれとして旧バージョンでも・・・とすれば同等機能になる、さて構文Bは・・・である、(・・・中略・・・)ここまで構文A・Bを別物として扱ってきたが実は・・・」といった具合でスパゲティ化している。

try、except、else、finallyというすべてのキーワードを網羅する一覧は、(驚くべきことに)解説の先頭でも末尾でもなく中ほどにあり、その一覧の前後で「finallyとexceptの混在」といったキーワードが(「多重継承」の話題と同じく)何度も登場することになる。

本来で言えば構文や制御に関して比較的シンプルなPythonであり、バージョン3.0では大々的な整理も行われている。結局のところ、焦点をバージョン2.7や3.0にしぼり、筋立てをしかるべく整理すれば、伝達できる内容はそのままに、文量的にはもっとずっとコンパクトなテキストになることに疑いはない・・・。残念なことである。