Enviar pesquisa
Carregar
次世代言語 Python による PyPy を使った次世代の処理系開発
•
23 gostaram
•
11,848 visualizações
shoma h
Seguir
PyPy の紹介
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 52
Baixar agora
Baixar para ler offline
Recomendados
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monoc...
EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monoc...
Kazuyuki Miyazawa
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
[DL輪読会]Pay Attention to MLPs (gMLP)
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
Recomendados
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monoc...
EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monoc...
Kazuyuki Miyazawa
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
[DL輪読会]Pay Attention to MLPs (gMLP)
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
Unityは神,Unrealは現実
Unityは神,Unrealは現実
Linea319
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
それでも私が研究を続ける理由
それでも私が研究を続ける理由
Hitomi Yanaka
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較
gree_tech
Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part I
Maho Nakata
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
Deep Learning JP
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Maho Nakata
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
佑 甲野
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Preferred Networks
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
PyPy 紹介
PyPy 紹介
shoma h
Pythonコミュニティが私に与えてくれたもの
Pythonコミュニティが私に与えてくれたもの
TomomiK
Mais conteúdo relacionado
Mais procurados
Unityは神,Unrealは現実
Unityは神,Unrealは現実
Linea319
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
それでも私が研究を続ける理由
それでも私が研究を続ける理由
Hitomi Yanaka
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較
gree_tech
Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part I
Maho Nakata
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
Deep Learning JP
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Maho Nakata
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
佑 甲野
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Preferred Networks
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Mais procurados
(20)
Unityは神,Unrealは現実
Unityは神,Unrealは現実
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
それでも私が研究を続ける理由
それでも私が研究を続ける理由
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
Oss貢献超入門
Oss貢献超入門
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較
Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part I
メタプログラミングって何だろう
メタプログラミングって何だろう
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
2019年度チュートリアルBPE
2019年度チュートリアルBPE
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解について
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
プログラムを高速化する話
プログラムを高速化する話
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Destaque
PyPy 紹介
PyPy 紹介
shoma h
Pythonコミュニティが私に与えてくれたもの
Pythonコミュニティが私に与えてくれたもの
TomomiK
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
Project Samurai
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
【勉強会】自己組織化マップ(SOM)
【勉強会】自己組織化マップ(SOM)
Jun Harada
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
Mikiya Okuno
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
Shinichi Nakagawa
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 Replication
Mikiya Okuno
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
Kimikazu Kato
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
Takanori Sejima
Destaque
(12)
PyPy 紹介
PyPy 紹介
Pythonコミュニティが私に与えてくれたもの
Pythonコミュニティが私に与えてくれたもの
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 第2回
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
【勉強会】自己組織化マップ(SOM)
【勉強会】自己組織化マップ(SOM)
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 Replication
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
Semelhante a 次世代言語 Python による PyPy を使った次世代の処理系開発
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
Introduction Pycon2010
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
Takesxi Sximada
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
Pipenvのご紹介 v2
Pipenvのご紹介 v2
C Y
Rdkitの紹介
Rdkitの紹介
Takayuki Serizawa
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
Pythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Takayuki Shimizukawa
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
High performance python computing for data science
High performance python computing for data science
Takami Sato
高位合成友の会 第3回 (2015/12/08) でのスライド
高位合成友の会 第3回 (2015/12/08) でのスライド
ktok07b6
Semelhante a 次世代言語 Python による PyPy を使った次世代の処理系開発
(20)
Pyconjp2014_implementations
Pyconjp2014_implementations
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Introduction Pycon2010
Introduction Pycon2010
Django で始める PyCharm 入門
Django で始める PyCharm 入門
Python札幌 2012/06/17
Python札幌 2012/06/17
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Pipenvのご紹介 v2
Pipenvのご紹介 v2
Rdkitの紹介
Rdkitの紹介
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Pythonによる画像処理について
Pythonによる画像処理について
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
High performance python computing for data science
High performance python computing for data science
高位合成友の会 第3回 (2015/12/08) でのスライド
高位合成友の会 第3回 (2015/12/08) でのスライド
次世代言語 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.
ご清聴ありがとうございました
Baixar agora