研究補完ツールとしてのプログラミング

最近だとどの分野の研究をしていても、プログラミングは必須とまでは言わないが、プログラミングスキルがあると便利以上の利益がある。 就職の要件なんかにも結構入っていたりするし。 しかし、プログラミングを専門とするわけではないのなら、必要以上にプログラミングに時間を取られるのは本末転倒でもある。 ベストなのは高速言語で必要なプログラミングをしてくれる同僚がいる状況ことだろう。 私の学生の頃のボスの一人はC++をガリガリ書くタイプだったのだが、彼にスクリプトを書いてもらうと仕事が三倍速で進んだ。 しかし、現実問題そんなスキルを持った同僚が、自分の必要なタイミングでプログラムを書いてくれるなんてことはないのだ。
学生生活を終えポスドクを始める時に、周りが基本スキルとして求めてくることは、博士課程での専門知識やスキルだろう。 私の場合は高結晶性材料の結晶構造をやっていたので、まずそれが第一であった。 幸いにして、直属のボスとその分野で二報論文をさっと書くことができ、スタートはとても順調であったのだ。 さて、ポスドクでは少しずつ違うテーマにも手を出して行くことが多いだろう。 私の場合その一つがボスの同僚の一人であった中ボスと始めた、より低結晶性材料の解析だったのだ。 結論から言うと、これがひどいことになった。 今現在でも一報すらもパブリッシュされていない。 この理由は実際他にもいろいろあるのだが、それらの理由は振り返って改善できるものでもないしここでは置いておく。 今回の投稿ではプログラミングに一つの原因を求めてみたい。 さて私の博士論文はプログラミング抜きにしては語れないが、それは元ボスの恩恵が大きかった。 しかしそんなことは中ボスには関係ないので、私が低結晶の素材を扱い出したとき、私に求められた一つはデータ解析用のプログラミングだった。 しかし伊達に元ボスにしごかれていたわけじゃないと、C言語のプログラムを幾つか書いてみたのだ。 結論から言えば書けたわけだが、やはりそこは付け焼き刃。 まず書きたいプログラムの初稿を書くのに時間がかかる、そしてコンパイルにも時間がかかる、さらにバグ探しにも時間がかかる。 これだけ時間がかかっていては、プログラム自体がいくら早く計算をしてくれても意味がない。 さらにそうして書いたプログラムも、一度解析に使われたらおしまいで、再利用されたわけでもなかった。 ようするにコストパフォーマンスが悪すぎたのだ。 私のこの時の失敗は、元ボスのプログラムを使ったり書き換えたりに慣れすぎて、一からのプログラムでもそれなりの時間で書けると誤認したことだ。
さて、その中ボスとの仕事はダラダラと成果が上がらなかったわけだが、他のグループとの共同研究はそれなりに結果が出ている。 これもまた他の要因も大きいのだが、私個人として変えたこともある。 C言語からPythonに乗り換えたのだ。 Pythonは高級言語なので、プログラムの計算速度はとにかく遅い。 早くするテクニックはあるが、それはようするにどれだけC言語下で動かすことができるかと改変することである。 とはいえ、そこにプログラムの準備時間を加味するとなると話は別だ。 そのシンプルな構造と、数多くのプリセット関数がスピーディなプログラミングを可能にする。 また使っている人が多いので、トラブルシューティングがウェブでとても簡単に見つかる。  また私の印象としては、改変しての再利用もしやすい。 そういわけで今の所Pythonは、私の研究活動のサポートツールとしてとても役立ってくれている。

もちろんケースバイケースで考えなければならない。 莫大な計算量を走らせるなら、多少時間がかかってもC言語で書く価値がある。 しかし、Pythonをベース言語として習得することは、研究活動をしていく中でコストパフォーマンスがとても良いと思う。 最近少し忙しくなってきたので、実際にどの程度書いていけるかはわからないが、このブログの科学カテゴリーでは少しづづpythonのTIPSなどを書いていきたいと思っている。

関連記事

pythonのまとめ

D