Python触り始めたと思いきやNuitka

かなり長い間このBlog放置しちゃいました。始めた当初は日々触れた技術寄りの事柄を英語・日本語で投稿するつもりでしたけど、三日坊主で終わりました。

小中高では日記をつける事が出来たのに困ったもんですね。日々のドキュメンテーションが必要だ…と思い知らされる機会が結構有るのでまた戻ってきました。今度こそやってみせる…!

というわけで、Pythonについて触れて行きましょう。


Pythonに触れる事になった経緯ですが、実は Blender だったりします。Blenderはフリーの3Dモデリング・エディタで、各種内部データを操作するためにPython APIが用意されています。
ちょっとした野暮用でロボット・シミュレーションの3Dアニメーションを作る事に成ったのですが、テキストファイルに記述されたシミュレーション結果をパースし、3Dモデルに姿勢を取らせる…そういった各種ロジック面の記述でPythonに触れる事に成りました。

自分はC/C++で主に書いてる人間なので、C/C++側からPythonを見ると、結構利点があります:

  • リスト・タプル・辞書が簡単に定義できる。
  • 反復処理の記述(ループfor elem in list:やリスト作成[2*elem for elem in list]など)が楽。
  • 最初から提供されているモジュールが豊富。
  • lambda式を使える。

C++でもBoostライブラリや次期規格であるC++11で上記の利点のほとんどを享受できる様になるんでしょうけど、Boostはちょっと約束事が多いしC++11は実装が未完成という理由で自分の中ではPythonのほうに分がありますね。

ただ、今までC/C++でプログラムを組んできた身としては、Pythonの記述力を讃えこそすれ、コードの実行にPythonインタプリタを必要とする事に関しては「汎用性損なってるな」と少しマイナス点を出してます。
そんなことを言ったらC/C++はインタプリタ上で動かないじゃないか、ということでC/C++にもマイナス点なんですが、どうせならコンパイル・インタプリット両対応で実行できてほしい、というのが自分の希望。



そして、「Pythonをコンパイルできないかなー」と、ググってみたらさっくり苦労せず Nuitka というのが出てきました。細かい解説は省いて、要は「Nuitkaを使えばPythonをコンバイルできる」ってことです。

HelloWorldサンプルと、モジュールを使ったサンプルをNuitkaでコンパイルした所のスクリーンショットを以下に載せます。

HelloWorldサンプルのコンパイル
モジュールを使ったサンプルのコンパイル

これは極々簡単な例。Pythonには沢山モジュールがあるし、例えばC/C++で作った共有オブジェクト(.so、.dll、.pyd拡張子のファイルとか)がモジュールとして使われていたり、ctypeモジュールで読み込まれて使われている場合はどうなるんだろう、とか気にはなりますが。まあ、Nuitkaが巧くやってくれるんでしょう。

Pythonが手に馴染んできた丁度良いところでNuitkaを見つけた事だし、これを機にPythonでプロトタイピングや本コーディングをやってみるのも良いかな、とか思ってます。

Comments

Popular posts from this blog

Hardcoding Data Like Images and Sounds into HTML or CSS

DDS for GIMP (Mountain Lion, Native, no X11 GUI)

Make It Work: Global .gitattributes