Skip to content

Instantly share code, notes, and snippets.

@okusama27
Last active May 16, 2018 11:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save okusama27/d807842288d85af6fea7ea809964cdfe to your computer and use it in GitHub Desktop.
Save okusama27/d807842288d85af6fea7ea809964cdfe to your computer and use it in GitHub Desktop.

広がるPython(Python Big Bang)

OverView

  • Pythonの歴史
  • Pythonの思想
  • Pythonの特徴
  • Pythonの言語仕様の決め方

お前誰よ(Who am I?)

image

大村亀子( @okusama27 )といいます。

BeProudという会社で、Pythonオンライン学習サービスを作っています。

I'm Kameko Ohmura, please call me "kame-chan".

image

PyLadies Tokyo

世界中にある女性のPython利用者をつなぐ団体。

スタッフやっています。

image

タイトル「広がるPython」

PyCon JP 2018 のテーマをお借りしました。

PyCon JP は日本で開催される、プログラミング言語 Python に関する国際カンファレンスです。 毎年、1000人規模で行われています。

今年は、2018/9/15 〜 9/18の間で開催されます。

Pythonの歴史

はじまり

1989年

オランダ人の Guido van Rossum がクリスマス休暇中に暇だったので開発を開始したのがはじまり。

イギリスで大人気だったテレビ番組「空飛ぶモンティ・パイソン」(Monty Python's Flying Circus)から取って、Pythonと名付けた。

image

2001年

Pythonソフトウェア財団、PSF( PythonSoftwareFoundation )が組織される。

Python関連の知的所有権を所有するために作られた非営利団体。 Pythonのリリースはすべて オープンソース です。

参照: Python公式ドキュメント: 歴史とライセンス

バージョン

1991年: バージョン 0.9x

Guidoさんが、ソースコードを公開

1994年: バージョン 1.x

2000年: バージョン 2.x

サポートは2020年までと発表されている。( PEP404

2008年: バージョン 3.x

言語を掃除してリフレッシュすることが目的としてリリースされた。

Python2.xとの後方互換が失われていることでPython2系から気軽にPython3系に移行できない問題がある。

Pythonは母体となる企業、営利団体もなしに長期間に渡って開発を継続し、安定したリリースを続けています。

Pythonの思想

キャッチフレーズ

1990年台に使われていたPythonのキャッチフレーズ

Python gets the job done

「Pythonは仕事を終らせる」という意味。

現実に処理しなければいけない仕事を片付けるために用意された実用品。 Pythonは華やかさよりも、シンプルな機能美を信条としています。

The Zen of Python

対話型インタプリタに import this と打つと、Pythonの哲学が表示される。

The Zen of Python, by Tim Peters(抜粋)

  • 醜いより美しい方がいい。
  • 暗黙より明示の方がいい。
  • 複雑より単純の方がいい。
  • 読みやすさは大切だ。
  • 実用性は純粋性に勝る。
  • 仕事をするための当然の方法はひとつある。

(略)

PEP 20 -- The Zen of Python にまとまっています。

私も翻訳してみました。 The Zen of Python - 鉄は熱いうちに打て

Pythonの特徴

読みやすい

  • 見ただけで意味が理解できるように、普通のアルファベットの英単語で書ける様になっている。
  • 見ただけで意味がわからない記号はなるべく使わない
  • インデントを正しく付けないと動かないので、誰が書いても同じようなコードになり読みやすいです。

image

  • Python利用者が全体で守るコーディング規約 PEP8 が定められています。

初心者のうちは「人が書いたコードが読みやすい」は学習しやすい要因の1つです。

その他

以下のような言語です。

  • 手続き型言語
  • オブジェクト指向プログラミング
  • 動的型システム
  • インタープリタ
  • オープンソース

利用

いろいろなところで利用されています。

  • Googleなどの欧米の企業で使われている
  • 適応範囲はWebプログラミング、GUIベースのアプリケーション、CAD、3Dモデリング、数式処理など幅広い分野に及ぶ。
  • スクリプトとして利用される。
  • NumPy、SciPyなどの高速な数値計算ライブラリの存在により、科学技術コンピューティングにもよく用いられる。
  • 機械学習などのライブラリが豊富でその領域でも利用されている。
  • 教育用にも利用されている

転載: Wikipedia

Pythonの言語仕様の決め方

PEP

PEP はPython 拡張提案(Python Enhancement Proposal)の略語です。

大きな変更が行われるときは、PEPという文書が書かれて議論されます。

PEPについて詳しくは、 PEP 1 -- PEP Purpose and Guidelines に記載があります。

また、 PEP 0 -- Index of Python Enhancement Proposals (PEPs) を参照すると、PEPの歴史を一覧で参照できます。

PEPの種類

Standards Track(標準化過程)

Pythonの新しい機能や実装について説明するドキュメント

Informational(情報)

Pythonの設計上の課題や、Pythonコミュニティに知らせる一般的なガイドラインや情報などを説明するドキュメント

Process(プロセス)

Pythonを取り巻くプロセスについて説明をしたり、プロセスや、プロセス中のイベントについて提案したりするドキュメント

PEPワークフロー

アイデア

Pythonの言語に関するアイデアは特定のメーリングリスト( python-ideas@python.org 、python-list@python.org)や SIG's などで議論されている。

アイデアを思いついたら、メーリングリストやSIG'sに投げて議論します。

Draft(草案)

PEP編集者が承認するとPEP番号が割り当てられます。ステータスは"Draft"(草案)になります。

Accepted(受理)、Rejected(却下)

グイドや、彼が選んだコンサルタントにレビューされて、"Accepted"(受理)、"Rejected"(却下)、差し戻しになります。

PEPのドラフトの最終決裁者は、BDFL(慈悲深き終身独裁者, グイドさんのこと)です。

忙しいときは他の人にBDFLの権利を移譲したりします。

参照: https://mail.python.org/pipermail/python-dev/2017-December/151054.html

Reminder: INADA Naoki was nominated as the BDFL-Delegate. 「稲田さん, 代わりによろしく」

Final(確定)

承認されて、 リファレンス実装(Reference implementation) が完成し、main source code repositoryに取り込まれたら、"Final"(確定)になります。

PEPのステータスの移行可能な経路

流れはこんな感じだそうですが、違う場合もあるそうです。

image

図は、 PEP1 より参照。

Deferred(延期)、Withdrawn(取り下げ)、Active(完成させることを意図していない。PEP1など)などに設定されることもあります。

日本人のPEPへの貢献

日本人にもPEPを作り確定した方がいらっしゃいます。

さいごに

私もこの発表のためにPEPを読みました。

これまでは、Pythonコードのコーディング規約が定めてある PEP8 しか読んだことがなかったので、これからはもうちょっと読んでいこうと思います。

また、INADA Naoki さんが、定期的に 最近のPython として、PEPの変更点などを紹介してくれています。

この資料をレビューしてくださった、Atsuo Ishimoto さん、 tomo さん、ありがとうございます。

リンク一覧

Twitter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment