C++ Advent Calender 10日目の記事です。 Boost 1.63でBoost.NumPyがBoost.Pythonにマージされます。 それに伴い以下の記述では不具合があるかもしれません。修正記事を書く予定です。 動機 Pythonまじ便利です。 シミュレーションとその結果の解析がメインとなるアカデミア(見習い)である私には、 対話的にデータの加工、解析、可視化がシームレスに実行できるIPython Notebookは必須です。 残念ならがC++だけで同等の機能を提供してくれる環境はありません(たぶん)。 CERNが作ってるROOTのclingはC++を対話的に実行できるそうですが情報が少なくて使ったことありません。 だれかC++で文芸的プログラミングできるIC++ Notebook作ってください(切実)。 しかしながらシミュレーション自体は数日から数週間実行するもので、
何故C++のクラス・関数をPythonにバインドするか? C++11は非常に便利になった。Boost使えばさらに便利だ。 しかし、pythonはもっと使いやすい。 NumPyをベースにしたプロジェクト群(SciPy, matplotlib, pandas, ...) は共通の基盤の上に非常に使い易く整備されている上に、そこそこ高速に動作する。 C++を使うべきか、Pythonにバインドして使うべきか、 また私の中で結論はでていないが、とりあえずバインドするための情報をまとめる。 どうやってバインドするか? 問題は2つある。 単純にPythonにバインドする方法 NumPyにバインドする方法 Pythonを使う理由の一つにNumPyのベースのライブラリを使用する事があるので、 NumPyのndarray等に変換できる必要がある。 基本となるのはPython C APIとNumPy C API
Boost の一部ながらも「実用的」すぎるため、とかくテンプレートメタプログラミングを愛好する諸兄から黙殺されてきた不幸のライブラリ、Boost.Python。Boost.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介してみたい。 Boost.Python の基礎 Boost.Python は C++ のクラスや関数をラップする Python モジュールを恐ろしく簡単に書けるようにする、強力なライブラリである。 特に、Pyrex や Cython と比べて何がうれしいのかというと、 Python側にいちいちラッパ関数を書かなくてよい (テンプレートにより自動的に定義される) コンバータを登録することで、Python⇆C++の型の透過的な変換が容易にできる C++ のクラスを分かりやすい形で Python のクラスとして見せることが可能 といった点が挙
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く