「Now is better than never. Although never is often better than *right* now.」の解釈

いま The Zen of Python を検索すると日本の Python コミュニティ史上最も迷惑な記事が上位に来てしまうのが苛立つ。

散文詩なんだし、解釈の幅が広くなるように書いてるんだから、解説することそのものが「野暮」だし、ましてや「Python の優位性」を謳うものなんかじゃない。件の記事は、バカ丸出し。

よく映画鑑賞や読書体験が人生経験が深くなるにつれて見え方が変わってくることは言われるでしょ。The Zen of Python なんかまさにそれだよ。開発経験が豊富になるほど味わい深い。

なのでほんとはこれの「解説」なんかしたくはないんだけれどね。でもちょっと前からなんか伝わってないなぁと思ってた一節についてだけ。

「Now is better than never. Although never is often better than *right* now.」部分。ここね、プログラミングのスタイルとかプログラマの心構え、と見做されることが多いみたいなんだけど、多分元々 Tim Peters が念頭に置いてたのは違うんじゃないかね? 「the battery is included」に呼応してる、と解釈する方がずっと素直なはずよ。色んな捉え方出来るように元々書かれているものだから解釈は自由ではあるけれど、これが書かれた時代背景と著者(Tim)を考えれば、「Python という言語と標準添付ライブラリが目指すべき道」を踏まえていたと考える方が自然。(無論その思想を個人でも汲むのが「心意気」。)

「Now is better than never. Although never is often better than *right* now.」は、一つの解釈として「四の五の言ってる暇があったらとっとと動くもん書いちまえ、でも少しは頭使うんだぞ」としてもいい。そしてこれ、「スクリプト言語だから」(つまり実際にとっとと作れるから)であるがゆえに価値が出るということも少なからずあり、そして実際に Python のユーザは、これでもか、というくらいにその恩恵を受けてきた。

「動くものが(標準添付ライブラリとして)誰の目の前にもある」効果は絶大だ。何かがダメでも誰かが改善する。いつだって「最初のとりあえず」、を作るのが最もエキサイティングでチャレンジングだから、「まず動くもの」を作れるエンジニアは一握りと言ってよい。けれども一旦そうして書かれた「完成度の高くない初版」を目にし、改造出来るエンジニアはワタシも含め星の数ほどいる。改造できなくとも「要望」というフィードバックでも貢献出来る。

そして。「作り上げたものを動かすのも改造してテストし直すのも早い」というスクリプト言語の特徴によって、進化のスピードが、猛烈に速い、ということ。はじめは「アイディアも設計も使い勝手も素晴らしいけれど、遅くて実用には厳しい」だったものが、気付いたら高速化して使い物になっていた、なんてことは多いし、「標準添付ライブラリ版をベースに高速化だけ試みる」OSS が登場することも良くあることだ。この場合、標準添付ライブラリの「遅い版」がなかったら、速い版も生まれなかったかもしれないのだ。

これが書かれた 2004年、というと、eXtreme Programming の考え方の、まだ黎明期じゃなかったかな。多分 Tim Peters はそのことも経験的に熟知していたか、あるいは XP そのものを実際に踏まえたのかもしれない。












ま、The Zen of Python には「唯一正解の解釈」なんかないから、一つの解釈、ってことで、開発者人生の参考にしてみてよ。