プログラミング

Pythonの思想「The Zen of Python」がとても興味深い

Pythonというプログラミング言語には、プログラマーが持つべき心構えを簡潔にまとめた「The Zen of Python」という考え方が存在します。

読んでみるととても面白かったので紹介します。

The Zen of Python

この「The Zen of Python」はPythonプログラマーのティム・ピーターズ氏によって作られた金言・警句集的なもの。

原文は英語なので Ptyhon.org をフォローしながら書いていきます。

Abstract – 要点

Long time Pythoneer Tim Peters succinctly channels the BDFL’s guiding principles for Python’s design into 20 aphorisms, only 19 of which have been written down.

via: PEP 20 — The Zen of Python – Ptyhon.org

ベテランPython使いティム・ピーターズは、Pythonで設計するためのBDFLの指針を簡潔に20の格言を作り、そのうちの19が書き留められている。

ここに出てくる「BDFL」とは「Benevolent dictator for life」の略で、Benevolent は「親切な、慈悲深い」、Dictator は「独裁者」、 For life は「一生涯、死ぬまで」ということで、意味は「慈悲深き終年独裁者」って感じでしょうか。

The Zen of Python – Pythonの禅

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!

醜いより美しいほうがいい。
暗示するより明示するほうがいい。
複雑であるよりは平易であるほうがいい。
それでも、込み入っているよりは複雑であるほうがまし。
ネストは浅いほうがいい。
密集しているよりは隙間があるほうがいい。
読みやすいことは善である。
特殊であることはルールを破る理由にならない。
しかし、実用性を求めると純粋さが失われることがある。
エラーは隠すな、無視するな。
ただし、わざと隠されているのなら見逃せ。
曖昧なものに出逢ったら、その意味を適当に推測してはいけない。
たったひとつの冴えたやりかたがあるはずだ。
そのやり方は一目見ただけではわかりにくいかもしれない。オランダ人にだけわかりやすいなんてこともあるかもしれない。
ずっとやらないでいるよりは、今やれ。
でも、今”すぐ”にやるよりはやらないほうがマシなことが多い。
コードの内容を説明するのが難しいのなら、それは悪い実装である。
コードの内容を容易に説明できるのなら、おそらくそれはよい実装である。
名前空間は優れたアイデアであるため、積極的に利用すべきである。

via: プログラマが持つべき心構え (The Zen of Python) – Qiita

禅は自分自身を探す行為で、禅宗の修行のうちの一つ、アジア人には馴染みのある考え方ですね。

無駄を削ぎ落としていく思想と余白を意識した簡素な美。表面的なものに惑わされず、その内に秘めた本質を見つめる。

私にはこの考え方が非常に目立って見えました。

より良いコードを極めるため、コードの本質を追求するため、その場としてPythonは存在している。

コードを書くことを「修行」と捉えてた世界観はすごく興味深いです。

こういう言語独特の哲学はシビれますね。

ちなみに原文をそのまま逐語訳すると少々分かりづらいので、読む際はそのセンテンスが持つ背景を理解しながら読んでみてください。ここは各々の想像力にお任せ。

おわり

ちなみに、この逆の考え方「The Anti-Zen of Python」もあるようです。面白いですね。

参考記事

記事内の写真出典元

Thomas Hafeneth – Unsplash

ABOUT ME
maechan
ベンチャー、フリーランス、スタートアップを経験。 開発業務、人事業務に従事していました。 現在は農業系スタートアップ企業でエンジニアとして働いています。 リモートワークをしているノマドサラリーマンです。茶道とワークアウトが趣味です。