Python界では「Pythonic(パイソニック)」という言葉がよく使われる。
用例としてはこんな感じだ。
Pythonicを一言で説明するのは難しい。無理してやってみると「誰もが正しいと考える、たった1つの方法をできる限り採用する(There should be one—and preferably only one—obvious way to do it)」となるかなあ(これはPerlの「TMTOWTDI(There's more than one way to do it)」に対するアンチテーゼとして生まれた言葉)。「import this」で表示される文言はPythonicだし, PEP8 もPythonicだ。selfはパッと見Pythonicじゃなさそうだけど, よくよくみると Pythonicだ。
PEP8なんかを見ると分かるけど,Pythonicな教条には,「エンジニアとして守るべき事柄」のうち「広く活用できるルールや教条」が多く含まれているとも言える。 Pythonのパラドックス を引き合いに出すまでもなく,「Pythonicな技術者」は優秀な技術者であることが多い。転じて,「Pythonicになること」は優秀な技術者になるためのルートであると言える。
Pythonicな技術者になるための一つの方法は,Pythonicな技術者と接することだろう。Pythonの仕様を作っているGuidoさんの書いた 「Pythonチュートリアル第二版」 がちょうど出たので,読んでみるといいと思う。
「Pythonチュートリアル」 はその名の通り,サクッと読めるPythonの入門書なのだが,随所にちりばめられたPythonの作者ならではの言葉がすばらしい。
例えば58ページでPythonでは式の中では代入が出来ないことに振れ,
Cプログラマの方はご不満かも知れないが,==を書きたいところで=を書いてしまう,という, Cのプログラムにおいて非常によくある問題が,これによって回避されているのである。
などいうことがさらっと書いてある。
他に例えば,121ページでosモジュールの説明部分。
「from os import *」でなく,必ず「import os」を使うこと。 これはos.open()がビルトインのopen()関数を隠さないようにするためだ。 動作が全然違うのだ。
というような感じ。
2つの例は「曖昧さの回避,明示的な記述」というPythonicなルールをよく表したコメントだ。明示的なコードは,Pythonに限らずどの言語でも,バグの混入率が低くなるとか,ポータビリティが増すとか,読みやすいとか,良いことがたくさんある。このように,技術者が守るべきルールをよく表した言葉が満載されている。他にも,PythonのスライスがIcon由来とか,クラス実装がModula-3やSmalltalkを参考にしているとか,言語の設計者ならではの言葉がちりばめられていて読んでいて楽しい。
気づきの多い書籍だ,というのが改めて読んでみた感想。よりPythonicになりたいPythonistaだけでなく,多くのエンジニアに読んでいただきたい書籍だと思う。