Submit Search
次世代言語 Python による PyPy を使った次世代の処理系開発
23 likes
11,886 views
shoma h
PyPy の紹介
Technology
Read more
1 of 52
Download now
Downloaded 45 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
More Related Content
PPTX
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
PDF
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
PDF
Windowsコンテナ入門
Kyohei Mizumoto
PDF
Docker Swarm入門
Masahito Zembutsu
PPTX
Apache Avro vs Protocol Buffers
Seiya Mizuno
PDF
BuildKitの概要と最近の機能
Kohei Tokunaga
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Windowsコンテナ入門
Kyohei Mizumoto
Docker Swarm入門
Masahito Zembutsu
Apache Avro vs Protocol Buffers
Seiya Mizuno
BuildKitの概要と最近の機能
Kohei Tokunaga
What's hot
(20)
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
PDF
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan
PDF
Dockerだけではないコンテナのはなし
Katsunori Kanda
PDF
オブジェクト指向できていますか?
Moriharu Ohzu
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
PDF
Unified JVM Logging
Yuji Kubota
PDF
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
PDF
CRC-32
7shi
PPTX
root権限無しでKubernetesを動かす
Akihiro Suda
PPTX
冬のLock free祭り safe
Kumazaki Hiroki
PDF
Akkaとは。アクターモデル とは。
Kenjiro Kubota
PDF
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
PDF
Twitterのsnowflakeについて
moai kids
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
PDF
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
PDF
Tackling Complexity
Yoshitaka Kawashima
PDF
すごい constexpr たのしくレイトレ!
Genya Murakami
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
PDF
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Preferred Networks
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan
Dockerだけではないコンテナのはなし
Katsunori Kanda
オブジェクト指向できていますか?
Moriharu Ohzu
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
Unified JVM Logging
Yuji Kubota
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
CRC-32
7shi
root権限無しでKubernetesを動かす
Akihiro Suda
冬のLock free祭り safe
Kumazaki Hiroki
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
Twitterのsnowflakeについて
moai kids
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
Tackling Complexity
Yoshitaka Kawashima
すごい constexpr たのしくレイトレ!
Genya Murakami
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Preferred Networks
Ad
Viewers also liked
(13)
PDF
PyPy 紹介
shoma h
KEY
Pythonコミュニティが私に与えてくれたもの
TomomiK
PDF
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
Project Samurai
PDF
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
PPTX
【勉強会】自己組織化マップ(SOM)
Jun Harada
PDF
What's New in MySQL 5.7 Security
Mikiya Okuno
PDF
Pythonistaデビュー #PyNyumon 2016/5/31
Shinichi Nakagawa
PDF
PyQtではじめるGUIプログラミング
Ransui Iso
PDF
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
PDF
What's New in MySQL 5.7 Replication
Mikiya Okuno
PDF
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
PDF
Pythonによる機械学習の最前線
Kimikazu Kato
PDF
MySQL5.7 GA の Multi-threaded slave
Takanori Sejima
PyPy 紹介
shoma h
Pythonコミュニティが私に与えてくれたもの
TomomiK
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
Project Samurai
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
【勉強会】自己組織化マップ(SOM)
Jun Harada
What's New in MySQL 5.7 Security
Mikiya Okuno
Pythonistaデビュー #PyNyumon 2016/5/31
Shinichi Nakagawa
PyQtではじめるGUIプログラミング
Ransui Iso
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
What's New in MySQL 5.7 Replication
Mikiya Okuno
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
Pythonによる機械学習の最前線
Kimikazu Kato
MySQL5.7 GA の Multi-threaded slave
Takanori Sejima
Ad
Similar to 次世代言語 Python による PyPy を使った次世代の処理系開発
(20)
PDF
Pyconjp2014_implementations
masahitojp
PDF
Python & PyConJP 2014 Report
gree_tech
PDF
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
PDF
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
PDF
Django で始める PyCharm 入門
kashew_nuts
PDF
Python札幌 2012/06/17
Shinya Okano
PDF
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
PDF
サードパーティパッケージの歩き方
Takesxi Sximada
PDF
10分でわかるPythonの開発環境
Hisao Soyama
PPTX
Pipenvのご紹介 v2
C Y
PDF
Rdkitの紹介
Takayuki Serizawa
PDF
Pyconjp2016 pyftplib
Shinya Okano
PDF
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
KEY
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
PDF
PHPとJavaScriptの噺
Shogo Kawahara
PPTX
Pythonによる画像処理について
Yasutomo Kawanishi
PDF
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Takayuki Shimizukawa
PDF
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
PDF
High performance python computing for data science
Takami Sato
PPTX
高位合成友の会 第3回 (2015/12/08) でのスライド
ktok07b6
Pyconjp2014_implementations
masahitojp
Python & PyConJP 2014 Report
gree_tech
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
Django で始める PyCharm 入門
kashew_nuts
Python札幌 2012/06/17
Shinya Okano
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
サードパーティパッケージの歩き方
Takesxi Sximada
10分でわかるPythonの開発環境
Hisao Soyama
Pipenvのご紹介 v2
C Y
Rdkitの紹介
Takayuki Serizawa
Pyconjp2016 pyftplib
Shinya Okano
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
PHPとJavaScriptの噺
Shogo Kawahara
Pythonによる画像処理について
Yasutomo Kawanishi
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Takayuki Shimizukawa
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
High performance python computing for data science
Takami Sato
高位合成友の会 第3回 (2015/12/08) でのスライド
ktok07b6
次世代言語 Python による PyPy を使った次世代の処理系開発
1.
次世代言語 Python による
PyPy を使った 次世代の処理系開発 第八回ありえるえりあ勉強会 2012/01/20 しょーま @shomah4a
2.
お前、誰よ ●
しょーま or しょうま ● twitter: @shomah4a ● id:shomah4a ● pypy-ja とか PyCon JP とかやってるみたい ● PyPy を使ってみた切っ掛けは俺言語が作りたかっ たから ● 仕事? こまけぇこたぁいいんだよ
3.
やること ●
PyPy ってなに? ● Python で Python を実装するとは ● 高速化のヒミツ ● その他情報まとめ
4.
PyPy って何?
5.
twitter で見かけた説明によると
6.
https://twitter.com/nati/status/121825143285747713
7.
一部不適切な表現がありましたがお詫 びするのも面倒だしする気もないので
次へ
8.
PyPy とは ●
http://pypy.org/ ● Python で作られた Python のインタプリタ ● 一般的にはこっち ● 今日は説明だけ ● Python を作るために Python で作られた動的言 語作成フレームワーク ● 今日はこっちがメイン ● メインコミッターは Armin Rigo 氏
9.
PyPy とは ●
前身は Psyco (さいこ) ● http://psyco.sourceforge.net/ ● Python に JIT を追加す るモジュール ● こちらも Armin Rigo 氏 がメインコミッター ● x86 しか使えない
10.
Python インタプリタ ●
Python で作られた Python の処理系 ● 速いよ! ● JIT が載っていてすごく速い ● CPython の五倍くらいらしい ● ベンチマークについてはここらへんに kwsk 載っている ので参照 http://speed.pypy.org/ ● 高速化を…強いられているんだ!
11.
互換性とか ●
現在は Python 2.7.1 互換の処理系 ● 開発としては 3.x 対応を進めている ● 3.x 対応に向けた開発のための資金出資者募集中!! ● C 拡張もそれなりに使えるけど、まだまだ ● ctypes を実装することで読めるようになっているとか ● http://readthedocs.org/docs/pypy/en/latest/extend
12.
CPython との違い ●
Garbage Collection が違う ● CPython ● 参照カウント ● Mark & Sweep のような何か – 循環参照の解放に使われる – http://www.narihiro.info/translate/garbage_collection_for_python_jp.html ● PyPy ● 標準は Minimark GC ● その他色々選べる ● http://readthedocs.org/docs/pypy/en/latest/garbage_collection.htm ● 細かな違いはここら辺(翻訳途中) ● http://readthedocs.org/docs/pypyja/en/latest/cpython_differe
13.
ここまでコピペ ●
ここらへんからコピペしました ● PyPy 紹介 ● http://www.slideshare.net/ShomaHosaka/pypy-1011 ● 受付のお姉さんの感想は「フォントが可愛い」でした ● こっから先も大体コピペです
14.
その他の資料 ●
PyPy Advent Calendar 5日目 - PyPyとCPython の違いを知ろう - Ehrenの日記 ● http://d.hatena.ne.jp/Ehren/20111205/132307880 ● PyPy Advent Calendar 2011 6日目 Frequently Asked Questions - YAMAGUCHI::weblog ● http://d.hatena.ne.jp/ymotongpoo/20111206/1323
15.
やること ●
PyPy ってなに? ● Python で Python を実装するとは ● 高速化のヒミツ ● その他情報まとめ
16.
Python で Python
を実装するとは
17.
そもそも何を作るの? ●
言語の処理系に必要なもの全部 ● ソースのパース ● VM のバイナリに落とし込む ● VM そのものの実装 ● VM 上の型システム ● 標準ライブラリ ● etc ● …
18.
はい! めんどくせーって思った人!
19.
PyPy はそんなあなたをサポートします
20.
PyPy とは ●
動的言語の処理系を作るための汎用フレームワー ク! ● しかもフルスタック ● Python なので書きやすい! ● C みたいにメモリ確保とかめんどくさい部分は PyPy が 引き受けてくれたり ● dict, list みたいなリッチな組み込み型が使えたり ● PyPy の Python インタプリタの中で使い回せるも のは使い回しちゃう
21.
PyPy がしてくれること ●
言語を作るためのライブラリとか ● EBNF によるパーサ ● dict, list などの Python で使える標準的な型 ● 基本的な型システムとその評価器 (ObjectSpace) ● Python から C ライブラリを使う仕組み ● メモリ管理はもちろん意識しない ● RPython Toolchain ● JIT コンパイラ ● 各種GC
22.
実装実績(Python 以外) ●
Brainf*ck ● Gameboy Emulator ● Grass ● HQ9+ ● Io ● JavaScript ● Ook! ● Prolog ● Scheme ● Smalltalk
23.
でも、遅いんでしょう?
24.
やること ●
PyPy ってなに? ● Python で Python を実装するとは ● 高速化のヒミツ ● その他情報まとめ
25.
高速化のヒミツ
26.
速度について ●
Python で Python を実装している PyPy ● でも 5 倍くらい速いらしい
27.
何言ってんだこいつ
28.
Python で Python
実装したって速い わけねーだろ起きろ!
29.
と思われるかもしれませんが ●
速さにはもちろん理由があります ● RPython Toolchain がキーワード
30.
RPython Toolchain とは ●
RPython という言語を処理するためのツールチェ イン ● FlowGraph, Annotation, RTyper, Optimize な どの工程を経て、様々なバックエンドに出力できる ● バックエンドは C Binary, CLI, Python, LLVM, JVM など ● kwsk はここらへん http://readthedocs.org/docs/pypyja/en/latest/t
31.
RPython とは ●
Restricted Python の略らしい ● Zope の RestrictedPython ではない ● Python をバイナリコンパイルするためにいくつか の制限を設けたもの ● 型システム含む動的な部分を制限し、静的型っぽく なっている ● Python のサブセットなので、 RPython は Python の処理系でそのまま動く
32.
RPython の制限 ●
変数は一つの型しか扱えない ● 継承関係にあればアップキャストできる ● モジュールグローバル変数はすべて定数として扱われる ● 書き換えようとするとエラー ● for ループは組み込み型のみ ● 動的関数定義や動的クラス定義は無理 ● ジェネレータはサポートしない ● 関数などの型は一つしか推論結果を持てない ● template <typename T> T somefunc(T arg) なんだけど、 実体化できるのは一つ、というイメージ
33.
RPython の制限 ●
文字列型のメソッドは大体使えるけど使えないのもある ● リストは一つの型しか扱えない ● 辞書なんかも同様 ● 複数の型が入るような場合は、すべての型を含む上限境界の型が推 論結果として使われる ● 最悪 TYPE <: object な推論結果になって、後々エラーになることも ● クラス周り ● 後付のメソッドは不可 ● 単一継承は完全サポート ● 単純な mixin はサポート ● クラスはもちろんファーストクラスオブジェクト
34.
RPython の制限 ●
Python の動的な部分が結構制限されて、静的型 言語っぽくなる ● コンパイル時なら動的に色々できる ● とはいえ Python らしい記述力は十分発揮できる ● 静的型っぽいとはいえ、普通にプログラムを書いて いれば、そんなにおかしな設計をしない限り動的型 言語でも型を意識して静的型っぽくなるでしょう? ● 詳しい仕様はこちら: http://readthedocs.org/docs/pypy/en/latest/co
35.
RPython Toolchain の工程 ●
RPython ● FlowGraph ● Annotation ● Type Annotation ● RTyper ● Optimize (Optional) ● Transform ● Output (C Binary, CLI, LLVM, etc...)
36.
FlowGraph ●
平たくいえばフローチャート ● RPython から分岐・繰り返し・関数呼び出しなどの 処理の流れを取り出し、データ構造にしたもの ● 後の工程ではこれに対して色々やる
37.
Type Annotation ●
型アノテーション ● FlowGraph を辿って、型を全部チェックしていく ● みんな大好き型推論 ● 静的解析かも ● 型チェックしてくれてエラーも出してくれるし素敵! ● Erlang の Dializer みたいなやつ? ● この後のセッションで詳しく説明します
38.
RTyper ●
Annotator による型とバックエンドの型システムを 繋ぐもの ● Annotator の High-level な型からバックエンドの Low-level な型に変換する ● signed int とか unsigned int とか ● リストじゃなくて配列とか ● ドキュメントはこちら http://codespeak.net/pypy/dist/pypy/doc/rtype
39.
RTyper で使われる型システム ●
lltypesystem ● C っぽいモデル ● 低レベルな操作に変換される ● メモリ操作とかポインタとか ● C Backend ● LLVM Backend
40.
RTyper で使われる型システム ●
ootypesystem ● High-level な型システムを持つ VM 向け ● CLI ● JVM ● Squeak(?)
41.
Transform ●
Transform ● FlowGraph の構造を弄るイメージ ● Stackless 変換(deprecated) – continulet になりました – http://readthedocs.org/docs/pypyja/en/latest/stackless.h ● CPS 変換とかもできそうじゃない?(適当) ● Lisp のマクロみたいな何か
42.
Backend ●
色々やってバックエンドにはき出す ● さっき書いたよね
43.
JIT コンパイラ ●
Just in Time Compiler ● 実行時に処理の流れを解析して最適化できるとこ ろを最適化する ● 実装した 処理系から Analyzer にヒントを与えると 最適化してくれる ● 詳しくはこの後
44.
結局のところ ●
RPython Toolchain でバイナリになるから速い ● とはいえ C でガチで書くよりは遅い ● 速いのは JIT があるから ● 後のセッションにご期待下さい! ● 結局型チェックしてバイナリに落とすならそれで動 的言語作らなくてもいいんじゃないの? という方は こちら ● 渋日記: PyPyよりも5倍高速な最速のPython処理系 http://blog.shibu.jp/article/51727956.html
45.
問題とか ●
x86 な Linux 以外の環境だと C-Backend 以外 がコンパイルできなかったりする ● pypy cliバックエンドに完敗 - aodag's posterous – http://aodag.posterous.com/pypy-cli ● jvmバックエンドに完敗 PyPy Advent Calendar 26日 + 1日目(27日目?) - rokujyouhitomaの日記 – http://d.hatena.ne.jp/rokujyouhitoma/20111226/132485 ● PyPy Sudden Death Calendar 27日目 - JVM Backend に完敗した件を受けて - プログラマのネタ帳 – http://d.hatena.ne.jp/shomah4a/20111227/1324997958
46.
ソースとかデモとか ●
時間があったら… ● https://bitbucket.org/brownan/pypy-tutorial/
47.
情報まとめ ●
本家ドキュメント ● http://readthedocs.org/docs/pypy/en/latest/ ● pypy-ja が翻訳中のドキュメント ● http://readthedocs.org/docs/pypyja/en/latest/ ● 協力者募集中!
48.
情報まとめ ●
PyPy Tutorial ● PyPy を使って BF という言語を実装するチュートリアル ● 言語実装から JIT のヒント追加まで一通り ● https://bitbucket.org/brownan/pypy-tutorial/ ● 翻訳しました – http://shomah4a.net/pypy-tutorial/
49.
情報まとめ ●
PyPy Advent Calendar 2011 ● PyPyの紹介・翻訳・言語実装・処理系拡張・実装理論 など各種エントリが揃っているのでオススメ ● http://atnd.org/events/22078 ● https://sites.google.com/site/pypyja/pypy-advent-ca
50.
pypy-ja について ●
闇の軍団らしいよ ● @rokujyouhitoma が総帥 ● pypy-ja まとめサイト ● https://sites.google.com/site/pypyja/ ● Google Groups ● https://groups.google.com/group/pypy-ja ● Bitbucket ● https://bitbucket.org/pypyja ● lingr ● http://lingr.com/room/pypy_ja ● skype ばっかりなのであんまり使われていなかったり…
51.
pypy-ja は皆様の参加をお待ちしております! 興味のある方は多分会場にいるであろう @rokujyouhitoma
が 代表総帥なので掛けあってみてください
52.
ご清聴ありがとうございました
Download