鉄は熱いうちに打て
=============================

The Zen of Python

2017-12-01

12月ですね。

はじめに

今年も今月で終わりですが、最後になにか学習をしたいと考えていました。 知らない言語を学んでみようかなと Land of Lisp という本を読んでみました。しかし、作者の他言語への並々ならぬ気持ちがすごかったので、受け止めきれなかったです。Lisp に関してはわかりやすかったです。読むまでは Lisp はカッコばっかりでとっつきにくいと思ったけどいい本でした。

そんな時、 くろのて勉強会 に参加しました。

  • 他言語学ぶほどPython知っているの?

  • おまえのPythonの知識は充分なの?

と私の中のリトル亀子が問いかけてきます。

反省して、Python関連のことを1ヶ月勉強することにしました。

「全体的になんとなく知っている」から、「この部分は詳しい」になりたいです。そろそろ。

The Zen of Python

手始めに、ちゃんと読んだこと無い The Zen of Python を読みました。

Pythonらしさ を開発者のピーターさんがまとめたものだそうです。

PEP 20 -- The Zen of Python に書いてあります。

対話モードで import this と書くと見られます。便利ですね。

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

書いてみた。出た。 探せば日本語訳が山ほど出てきますが、ヒントなしに訳してみます。あとで答え合わせしよう。

ノーヒント翻訳

  • Beautiful is better than ugly.

醜いより美しい方がいい。

  • Explicit is better than implicit.

自明な方が暗黙よりよい。

  • Simple is better than complex.

シンプルな方が複雑よりいい。

  • Complex is better than complicated.

複合はややこしいよりよい。(ちょっと意味がわからない)

  • Flat is better than nested.

ネストするよりフラットがいい。

  • Sparse is better than dense.

希薄なほうが密よりいい

  • Readability counts.

可読性は数える?

  • Special cases aren't special enough to break the rules.

ルールを破らないといけないほど特別なケースはない。

  • Although practicality beats purity.

実用性は純粋さを凌いだりする

  • Errors should never pass silently.

エラーは静かに過ぎさらせてはいけない

  • Unless explicitly silenced.

はっきりしていないことは無視してはいけない

  • In the face of ambiguity, refuse the temptation to guess.

曖昧さに直面すると、推測したくなる

  • There should be one-- and preferably only one --obvious way to do it.

何かをやる方法は一つであるべき、できればたったひとつがいい

  • Although that way may not be obvious at first unless you're Dutch.

あなたがオランダ人じゃないなら、その方法は最初から自明ではない(突然のオランダ人?)

  • Now is better than never.

やらないよりは今やるほうがいい

  • Although never is often better than right now.

しばしばやらないほうが今やるよりいい(右?今?なに?)

  • If the implementation is hard to explain, it's a bad idea.

実装を説明するのが難しい場合は、悪い実装をしている

  • If the implementation is easy to explain, it may be a good idea.

実装を説明するのが易しい場合、良い実装をしてる

  • Namespaces are one honking great idea -- let's do more of those!

名前空間は一つの素晴らしいアイデアだ、それ以上のことをしよう。

答え合わせ

ぐぐったら石本敦夫さんのブログに回答らしきものが載っていたので答え合わせ

The Zen of Python 解題 - 後編 - atsuoishimoto's diary

  • Readability counts.

「読みやすさが大切なのよ。」だそうです。 countsってどう訳されているの?わからない。

以外は、大体わかりました。ありがとう。石本さんのブログと訳してくれた方。

オランダ人はオランダ人だった。「ケチ」とか「細かい」的な裏の意味があるのかと思った。

禅は意味を考えてはいけない。そのまま受け取るものらしいです。(これは禅の話)

訳すまで有名な3つくらいしか認識してなかったけど、これ、いいこと言っているが、ピザでも食べながら書いたんじゃないの?と思う。

今日の参考書籍:

追記

Pythonのパパ、グイド・ヴァンロッサム(Guido van Rossum)さんがオランダ人だそうです。 Pythonコミュニティでは "Benevolent Dictator for Life"(BDFL、慈悲深き終身独裁者)として知られ、Python開発を常に監督し決定を下す ってwikipediaにあったので、「あいつが考えていることはあいつしか知らないよ」って感じなのかな。