PythonのカンファレンスであるPyConJP2016に一般参加してきました。
様々な発表や催しがあったのですが、特に素晴らしかったのが@tell_kさんの『メタプログラミングPython』という発表です。その名の通りオライリーの「メタプログラミングRuby」の内容に沿って、Pythonについて同様の内容を解説するという内容です。
今日の発表飼料です https://t.co/2OOrEIa73Y #pyconjp #pyconjp_201
— 特茶でおなじみ 照左衛門 (@tell_k) 2016年9月22日
まず、Pythonのオブジェクトのクラスの継承関係や、+
演算子は__add__
メソッドの糖衣構文で、自作のクラスでも自由に演算子を設定できる(また、右から左に足し算する__radd__
というメソッドがあることは初めて知りました)など、なんとなく知っていたことが素晴らしく整理されていました
。
Pythonのコードの文字列を、ast
モジュールで抽象構文木に変換し、print
をpprint
に変換して実行するというLispのマクロみたいなことを始めたときは脳汁が出そうになりました。こんなことPythonでもできたんですね。
ただし、密度の濃い発表で後半は全く付いていけなかったし、「既に以前のPyConで素晴らしい発表があったので〜」と詳しい解説の無かった箇所もあったので、 今週〜来週あたりで、発表資料や映像をもう一度見返したいです。
#pyconjp #pyconjp_201 https://t.co/82SajMc5mR を読みながら .@tell_k さんの講演を聞いている。すごくよくまとまっていて、Pythonの一段深い理解ができて助かる。する・しないは別として、メタプログラミングは学ぶといいよ。
— ほそのひでとも (@h12o) 2016年9月22日
メタプログラミングというと、「黒魔術だ」「必要性がなければ使わないほうがいい」と思って敬遠しがちですが、私自身『メタプログラミングRuby』を読んだ後に、Rubyの(継承関係を理解したことで)Mix-inや(Procを理解したことで)ブロックなど、(基本的な機能ばかりなのですが)納得して使えるようになりました。
端的に言うと、「バルス」を知ることで「リーテ・ラトバリタ・ウルス・アリアロス・バル・ネトリール」を使いこなせるようになった感じです。
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (2件) を見る
同様の経験がPythonでもできることに感謝しています。