PEPのススメ

講義資料の続き

PEPのススメ

さて、言語の設計の違いについて学ぶことは重要だが、不毛な議論で時間を浪費することは避けなければいけない。

ならばどうするのがいいだろうか?

正解はないが一つの案としてPEPを読むのはどうだろう?

PEPとは

Python Enhancement Proposals
http://www.python.org/dev/peps/
Pythonをこう改良したらいいんじゃない?という提案
採用されることもあれば却下されることもある

詳細はPEP 1で定義されているよ 和訳: http://sphinx-users.jp/articles/pep1.html

なかには本気かと思うような提案もある
PEP 3117:Postfix type declarations
Unicodeの絵文字で型宣言をつけよう」

def normpathƛ(path✎)✎:
    """Normalize path, eliminating double slashes, etc."""
    if path✎ == '':
        return '.'
    initial_slashes✓ = path✎.startswithƛ('/')✓

これはRejected(却下)されている。

(はてなじゃ表示できないのか)

PEP一覧の俯瞰

  • Meta-PEPs: PEP自体や手続きに関するPEP
  • Informational PEP: ガイドラインなど
  • Accepted PEPs: 受理されて未実装
  • Open PEPs: 議論中
  • Finished PEPs: 実装済
  • Deferred, ... and Rejected PEPs: 却下など
  • 番号順一覧

Accepted PEPsとFinished PEPsの、それも互換性を失わせるような変更を重点的に読んでみよう。
なぜなら互換性を捨てるような提案が採用されているということは、

  • 互換性を捨ててまで採用するほど重要な問題で
  • 説得力がある=それがなぜ重要であるのかが明確に説明されている

ということだからだ。

_

  • ここにいくつかのPEPの概要などを入れてざっくり紹介する
  • いくつかピックアップして解説をする
    • True division、数値の型階層から他の言語の比較、IEEE754などなど現実の理想的なモデルをプログラミングできるものに落としこむことの困難さについて話す?
    • String Representationで、英語で発信することの重要さ、プログラマはプログラミングだけで世界を変えるのではなく、時には自然言語がとてもパワフルな道具になりうる、って話をする?

他の選択肢も挙げる

  • JSR
  • SFRI
  • EEP
  • RFC

_

ソースコードがドキュメントだ」という主張に対する反論
ソースコードには「いま現在どうなっているか」しか書かれていない。「過去になにがあっていまこうなっているのか」や「未来にはこういう実装に変わるべきである」は書かれていない。
PEPはPythonの過去や未来について書かれた文章だ。