Cython本が出てること、と、…

日本Pythonユーザ会はほとんど毎日といっていいほど訪れるのに、意外と気付かないことも多くて。

気付かないのはまぁ、たいていドキュメントに直行しちゃうからというのもあるんだけれど、ただねぇ、最近日本Pythonユーザ会て、「お仕事募集」周知ばかり目立ってきて、これも大事とは思うんだけれど、やっぱり書籍の情報とかは、別格で扱って欲しい、なんてことも思うわけで。

なわけで、Cython――Cとの融合によるPythonの高速化が出版されてます、ちぅ、浦島太郎なネタなんです。

やっぱしね、Cython を「気軽に」使えると思うのは、アタシは間違ってると思うのよ。本当は「C 未経験者は手を出すべからず」と言いたいくらい。さらにあわよくば、「Python にさえ不慣れで手を出すようなシロモノではない」とさえ。ただ、「難易度が低い方の Cython の使い方」があるので、手は出せる、んだけどさ。

正直いま「Cython」と検索すると日本語でヒットするほとんどの見出しが「Python を高速化する Cython を使ってみました」系なのには、アタシは苦々しい思いをしてる。高速化したいだけなら Cython 使わずに C だけで書くのが一番速いよ。しかも「簡単に」を強調するのは、正直どうかしてると思う。簡単に C と連携したいだけなら、SWIG が一億倍くらいは簡単よ? 実際 Cython、別に簡単じゃないよ。みたいなことをまぁ思うんだけど、Cython――Cとの融合によるPythonの高速化の目次を読んでニヤリ:

7.1.1 Cythonはラップを自動化しない

Cython てね、「Python も C も極限まで使い倒す」けれども「あくまでも Python らしく」というもの、なんですね。だから「最高速」じゃないし、「安全なものを作れる」ことにもなる。SWIG は「どんな言語相手でも手間なく」だけに執着しているだけあって、とにかく簡単、だけれども、「Python らしくない」ものも作ってしまう。特に例外処理にこれは現れる。Cython の場合「Python らしさを失わない」ことに執着するから、非常に繊細なところも多い。C と Python というのは全く異質なものなのだから、これらを混ぜこぜにしようとすれば、当然危なっかしいことが増える。参照カウンタの問題が最も顕著ね。

そういうわけなんで、ワタシは「Cython 簡単です!!」とか「Cython で速くしようぜ!!」なんてなことではなくて、「Cython――Cとの融合によるPythonの高速化みたいなものでしっかり理解して使えば Python が 10倍オイシイ」くらいの控えめな主張をすることにしてみたい

20:00追記
著者の Kurt W. Smith、聞き覚えあるなぁ、と思って、cython-devel — Core developer mailing list of the Cython compilerを見てみたが、やっぱり。ML にたまに登場してる、この人。Contributors の中にいますね:

Kurt Smith and Danilo Freitas were funded through the Google Summer of Code program to work on improved Fortran and C++ support respectively, and in 2010 Haoyu Bai was funded to work on Python 3 compatibility.