Submit Search
Upload
PyPy 紹介
•
36 likes
•
8,285 views
shoma h
Follow
社内勉強会で PyPy の紹介をしたスライド
Read less
Read more
Technology
Report
Share
Report
Share
1 of 82
Download now
Download to read offline
Recommended
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
shoma h
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
civicpg
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
Recommended
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
shoma h
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
civicpg
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
kuroneko1988
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
Pynyumon03 LT
Pynyumon03 LT
drillan
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
Takeshi Akutsu
Py datameetup1
Py datameetup1
shiroyagi
210630 python
210630 python
Takuya Nishimoto
Go言語オーバービュー201507
Go言語オーバービュー201507
エンジニア勉強会 エスキュービズム
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Takuya Ueda
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
Goをえらんだ理由
Goをえらんだ理由
Tatsumi Naganuma
PyCharm入門
PyCharm入門
Yuki Nagai
Goとテスト
Goとテスト
Takuya Ueda
黒い画面超入門 - tmux を使ってみよう
黒い画面超入門 - tmux を使ってみよう
girigiribauer
Fork/Join Framework
Fork/Join Framework
Appresso Engineering Team
More Related Content
What's hot
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
kuroneko1988
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
Pynyumon03 LT
Pynyumon03 LT
drillan
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
Takeshi Akutsu
Py datameetup1
Py datameetup1
shiroyagi
210630 python
210630 python
Takuya Nishimoto
Go言語オーバービュー201507
Go言語オーバービュー201507
エンジニア勉強会 エスキュービズム
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Takuya Ueda
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
Goをえらんだ理由
Goをえらんだ理由
Tatsumi Naganuma
PyCharm入門
PyCharm入門
Yuki Nagai
Goとテスト
Goとテスト
Takuya Ueda
What's hot
(20)
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
Phpstormちょっといい話
Phpstormちょっといい話
Pynyumon03 LT
Pynyumon03 LT
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
Py datameetup1
Py datameetup1
210630 python
210630 python
Go言語オーバービュー201507
Go言語オーバービュー201507
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Goをえらんだ理由
Goをえらんだ理由
PyCharm入門
PyCharm入門
Goとテスト
Goとテスト
Viewers also liked
黒い画面超入門 - tmux を使ってみよう
黒い画面超入門 - tmux を使ってみよう
girigiribauer
Fork/Join Framework
Fork/Join Framework
Appresso Engineering Team
Web Component概要
Web Component概要
Shumpei Shiraishi
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
Kenichiro MATOHARA
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
shigeki_ohtsu
Node-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
ルータ遊びことはじめ
ルータ遊びことはじめ
Takumi Sueda
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
スマホデザインパターン なう
スマホデザインパターン なう
Android UI勉強会
バグハンターの哀しみ
バグハンターの哀しみ
Masato Kinugawa
ルータでルータのプレゼンをした話。 ~# 技術解説
ルータでルータのプレゼンをした話。 ~# 技術解説
Takumi Sueda
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
Yuji Nojima
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
Shinichi Nakagawa
ES6 in Practice
ES6 in Practice
Teppei Sato
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
You Don't Know ES Modules
You Don't Know ES Modules
Teppei Sato
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE
Viewers also liked
(20)
黒い画面超入門 - tmux を使ってみよう
黒い画面超入門 - tmux を使ってみよう
Fork/Join Framework
Fork/Join Framework
Web Component概要
Web Component概要
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12の新機能について
Node-v0.12の新機能について
ルータ遊びことはじめ
ルータ遊びことはじめ
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
スマホデザインパターン なう
スマホデザインパターン なう
バグハンターの哀しみ
バグハンターの哀しみ
ルータでルータのプレゼンをした話。 ~# 技術解説
ルータでルータのプレゼンをした話。 ~# 技術解説
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
ES6 in Practice
ES6 in Practice
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
You Don't Know ES Modules
You Don't Know ES Modules
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
Similar to PyPy 紹介
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Takayuki Shimizukawa
Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
Ai Makabi
Pipenvのご紹介 v2
Pipenvのご紹介 v2
C Y
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
Introduction Pycon2010
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
Pythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
KyutatsuNishiura
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
Takesxi Sximada
Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート Python
hirokiky
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
Why python
Why python
TeppeiAkada1
Why python
Why python
TeppeiAkada1
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
Similar to PyPy 紹介
(20)
Pyconjp2014_implementations
Pyconjp2014_implementations
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Python札幌 2012/06/17
Python札幌 2012/06/17
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
Pipenvのご紹介 v2
Pipenvのご紹介 v2
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Introduction Pycon2010
Introduction Pycon2010
Pythonによる画像処理について
Pythonによる画像処理について
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
Django で始める PyCharm 入門
Django で始める PyCharm 入門
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート Python
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Why python
Why python
Why python
Why python
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Recently uploaded
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(10)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
PyPy 紹介
1.
- Python による
Python 実装 - 2011/11/11 pypy-ja 闇の軍団 団員 しょうま(@shomah4a)
2.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
3.
お前、誰よ ●
しょうま(@shomah4a) ● Java の会社勤務 ● ていうかその会社の社内勉強会 ● 仕事では今は Python 使ってます。と思ったらそうでもなく なった ● Java とかよくわかりません ● PyPy を触ってみたきっかけは、俺言語が作りたかったか ら ● PyPy 闇の軍団の団員らしい
4.
PyPy ってなに?
5.
の前に
6.
Python 使ったことある人!
7.
PyPy がどんなものか知っている人!
8.
PyPy をビルドしたことある人!
9.
PyPy で処理系を作ったことがある人!
10.
PyPy とは ●
http://pypy.org/ ● 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/extending.ht
12.
CPython との違い ●
Garbage Collection が違う ● CPython ● 参照カウント ● Mark & Sweep (循環参照の解放に使われる) ● PyPy ● 標準は Minimark GC ● その他色々選べる ● http://readthedocs.org/docs/pypy/en/latest/garbage_collec ● 細かな違いはここら辺 http://readthedocs.org/docs/pypy/en/latest/cpython_
13.
ここまでが一般的に知られる PyPy
14.
PyPy はこれだけじゃないんだぜ?
15.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
16.
歴史的なお話
17.
Psyco ●
さいこ ● http://psyco.sourceforge.net/ ● PyPy の前身となるプロジェクト ● PyPI で配布されているPython モジュール ● インポートすると JIT が使える ● x86 のみ対応 ● メインコミッターは Armin Rigo 氏
18.
Armin Rngo
19.
アーミン リーゴ
20.
あーみん りーご
21.
あーみん!
22.
きっとこんな人に違いない!
23.
と思って画像を探しました…
24.
あみちゃんだと思った?
25.
残念! ヒゲのイケメンでした!
26.
Rigo氏は重要なので何度も言いました
27.
プロジェクトとしての PyPy ●
最初のリリース 1.0 は 2007 年半ば ● 最新版は 1.6 ● もうすぐ 1.7 が出るみたい ● メインコミッターはもちろんあーみん Armin Rigo 氏 ● Psyco の後継プロジェクト ● JITの最適化の研究(とか ● 言語そのものの研究 ● アカデミック色が強い
28.
類似のプロジェクト ●
Ruby の Rubinius ● これも速いらしい ● すごいね!
29.
PyPy の歴史 ●
最初は CPython と比べて 2000倍くらい遅かったらし い ● 色々研究した結果 ● CPython の 5倍程度速くなりました!
30.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
31.
もう一つの PyPy
32.
俺言語を作りたいけどCとかわかんないし…
33.
C++ は俺の嫁だし可愛いんだけど、 ホント可愛いんだけど難しいし…
34.
JVM で動く言語を作りたいけど Java とかいう言語はちょっと…!
35.
(
゚∀゚)o彡゜ PyPy!! PyPy!! ( ゚∀゚)o彡゜ PyPy!! PyPy!! ( ゚∀゚)o彡゜ PyPy!! PyPy!! ( ゚∀゚)o彡゜ PyPy!! PyPy!! ( ゚∀゚)o彡゜ PyPy!! PyPy!! ( ゚∀゚)o彡゜ PyPy!! PyPy!!
36.
なんて言っているそこのアナタ!
37.
PyPy で言語処理系を作りませんか!!
38.
作りましょう ●
RPython で処理系を書きます ● RPython Toolchain でバイナリを吐きます ● できあがり ● わぁい!
39.
PyPy とは? ●
Python で Python を実装する際に使っているライブラ リおよびツール群 ● Python のライブラリ ● EBNF, ctypes など ● コンパイラ ● 型推論とか ● 処理系作成 ● 基本的データ型(リストとか辞書とか) ● GC
40.
PyPy とは ●
動的言語の処理系を作るための汎用フレームワーク! ● しかもフルスタックで Python なので書きやすい! ● C みたいにメモリ確保とかめんどくさい部分は PyPy が引き 受けてくれたり ● dict, list みたいなリッチな組み込み型が使えたり
41.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
42.
RPython Toolchain
43.
RPython Toolchain とは ●
RPython という言語を処理するためのツールチェイン ● FlowGraph, 型アノテーション, RTyper, Optimize などの 工程を経て、様々なバックエンドに出力できる ● バックエンドは C Binary, CLI, Python, LLVM, JVM な ど様々 ● kwsk はここらへん http://readthedocs.org/docs/pypy/en/latest/transla
44.
RPython Toolchain ●
処理系としての PyPy は RPython Toolchain を使って 作られている ● このツールチェインは Python を作るためだけのものでは なく、汎用的に使えるので、これで俺言語とか作れちゃ うよ!
45.
例えばこんな言語: Python 以外 ●
Prolog ● Smalltalk ● JavaScript ● Io ● Scheme ● Brainf*ck ● Grass ● Gameboy Emulator
46.
RPython とは ●
Restricted Python の略らしい ● Python をバイナリコンパイルするためにいくつかの制限 を設けたもの ● 型システム含む動的な部分を制限し、静的型っぽく なっている ● Python のサブセットなので、 RPython は Python の処 理系でそのまま動く
47.
RPython の制限 ●
変数は一つの型しか扱えない ● 継承関係にあればアップキャストできる ● モジュールグローバル変数はすべて定数として扱われる ● 書き換えようとするとエラー ● for ループは組み込み型のみ ● 動的関数定義や動的クラス定義は無理 ● ジェネレータはサポートしない
48.
RPython の制限 ●
文字列型のメソッドは大体使えるけど使えないのもある ● リストは一つの型しか扱えない ● 辞書なんかも同様 ● クラス周り ● 後付のメソッドは不可 ● 単一継承は完全サポート ● 単純な mixin はサポート ● クラスはもちろんファーストクラスオブジェクト
49.
RPython の制限 ●
Python の動的な部分が結構制限されて、静的型言 語っぽくなる ● とはいえ Python らしい記述力は十分発揮できる ● 静的型っぽいとはいえ、普通にプログラムを書いていれ ば、そんなにおかしな設計をしない限り動的型言語でも 型を意識して静的型っぽくなるでしょう? ● 詳しい仕様はこちら: http://readthedocs.org/docs/pypy/en/latest/coding-g
50.
RPython Toolchain の工程 ●
RPython ● FlowGraph ● Type Annotation ● RTyper ● Optimize (Optional) ● Transform ● Output (C Binary, CLI, LLVM, etc...)
51.
FlowGraph ●
平たくいえばフローチャート ● RPython から分岐・繰り返し・関数などの処理の流れ を取り出し、データ構造にしたもの ● 後の工程ではこれに対して色々やる
52.
Annotation ●
型アノテーション ● FlowGraph を辿って、型を全部チェックしていく ● みんな大好き型推論 ● 静的解析かも ● 型チェックしてくれてエラーも出してくれるし素敵! ● Erlang の Dializer みたいなやつ? ● このあたりは @cocoatomo が研究中
53.
RTyper ●
Annotator による型とバックエンドの型システムを繋ぐ もの ● Annotator の High-level な型からバックエンドの Low- level な型に変換する ● signed int とか unsigned int とか ● リストじゃなくて配列とか ● ドキュメントはこちら http://codespeak.net/pypy/dist/pypy/doc/rtyper.htm
54.
RTyper で使われる型システム ●
lltypesystem ● C っぽいモデル ● 低レベルな操作に変換される ● メモリ操作とかポインタとか ● C Backend ● LLVM Backend
55.
RTyper で使われる型システム ●
ootypesystem ● High-level な型システムを持つ VM 向け ● CLI ● JVM ● Squeak(?)
56.
Optimize ●
Optimize ● 処理の最適化 ● 関数のインライン展開 ● Python で書いた場合のメモリ確保の回数を減らす
57.
Transform ●
Transform ● FlowGraph の構造を弄るイメージ ● Stackless 変換 ● CPS 変換とかもできそうじゃない?(適当) ● Lisp のマクロみたいな何か
58.
Backend ●
色々やってバックエンドにはき出す ● さっき書いたよね
59.
JIT ●
Just in time Compiler ● 実行時に処理の流れを解析して最適化できるところを 最適化する ● 実装した 処理系から Analyzer にヒントを与えると最 適化してくれる ● このあたりは @chlere がめちゃくちゃ詳しい
60.
ここまで説明したけれど… ●
ここまでの説明は処理系実装者は気にしなくていいと ころ ● translate.py を実行すると勝手にやってくれるので意 識しない ● 重要なのは translate.py に食わせる RPython のソー スを書くこと
61.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
62.
改めて作り方 ●
RPython で処理系を書きます ● RPython Toolchain を通してバイナリ出力します ● できあがり ● わぁい!
63.
RPython で処理系を作るっていうけど
どういうこと? なにを作るの?
64.
答え: ●
言語の処理系に必要なもの全部 ● ソースのパース ● VM のバイナリに落とし込む ● VM そのものの実装 ● VM 上の型システム ● 標準ライブラリ ● …
65.
全部書きます ●
Python の場合は CPython で実装されているものを全 部 RPython で実装する ● 俺言語を作るときも同様、ソースのパースから全部書く ● で、これを RPython Toolchain でビルドすると、わぁい!
66.
なんか嬉しいの? ●
C よりも高級な Python っぽい書き方ができる ● メモリ管理とか煩わしいことは気にしなくていい ● PyPy の実装に使われている部分は使い回せる ● VM とか型モデルとか使い回すと楽なんじゃない? ● EBNF とかもあるので楽できるはず
67.
要は? ●
簡単に俺言語の処理系を作れるよ!! ● 重要なので何度も言っている気がする
68.
作る上で役立つ資料 ●
PyPy Tutorial ● https://bitbucket.org/brownan/pypy-tutorial/ ● PyPy で BF とかいう言語を作るチュートリアル ● 翻訳しました ● http://shomah4a.net/pypy-tutorial/ ● サンプル ● 処理系としての PyPy のソース ● その他言語のソース
69.
Grass 作ったよ ●
ここらへんにエントリ書いたので見てね ● http://d.hatena.ne.jp/shomah4a/20110730/13119931
70.
折角なのでソースを見てみる
71.
簡単でしょう?
72.
作りたくなったでしょう?
73.
やること ●
PyPy ってなに? ● Python 処理系としての PyPy ● 歴史的なお話 ● もう一つの PyPy ● RPython ツールチェイン ● 言語を作るには ● 闇の軍団について
74.
今すぐフォローするべき PyPy 界のスーパー
エンジニア (英語圏) ● @alex_gaynor ● Django, PyPy, CPythonのコミッター ● @pedronis ● PyPy 関係者らしい ● @voidspace ● IronPython、CPython、PyPyのコミッター ● @cfbolz ● pypyコミッター、Djangoも...?
75.
今すぐフォローするべき PyPy 界のスーパー
エンジニア (英語圏) ● @fijall ● PyPy コミッター ● @gutworth ● CPython, pypy ● @ctismer ● pypy, Pscyco ● @antocuni ● pypyメインコミッター, pdb++のメインコミッター, virtualenvの コミッター
76.
今すぐフォローするべき PyPy 界のスーパー
エンジニア(日本語圏) ● @rokujyouhitoma ● 総帥、翻訳 ● @chlere ● JIT 研究中の大学院生 ● @cocoatomo ● 静的解析、翻訳
77.
PyPy 闇の軍団について
78.
闇の軍団? ●
初出は C++ 闇の軍団? ● モヒカンの集まりくらいの意味合い ● 誰彼かまわず噛みつくことから怖い人たちみたいな捉え 方をされるみたい ● 好きなもの: まさかり
79.
PyPy 闇の軍団ってなんぞ ●
あーみんあーみん言っているただのユーザグループです ● とらドラ!の話がメイン ● 総帥は @rokujyouhitoma ● Google Group でやりとりしたりしてる ● https://groups.google.com/group/pypy-ja/ ● Google Site もあるよ ● https://sites.google.com/site/pypyja/ ● Lingr にもあるみたい ● とか言いつつ skype でのやりとりが多かったりする
80.
活動って? ●
メイン: とらドラ! の話 ● Sphinx ユーザ会の会長もいるよ! ● サブ: PyPy ドキュメントの翻訳 ● https://bitbucket.org/pypyja ● ついでに: PyPy の普及活動 ● pyfes に潜入して活動したり ● Python mini hack-a-thon に潜入して活動したり
81.
来たれ! 団員!
82.
ご清聴ありがとうございました!!
Download now