単純に考えれば、PerlよりもC++の方が、処理速度が速い、という違いがあったり、Perlインタプリタのロード時間のせいで、Perlは実行までに時間が掛かるといった問題があります。
速度面をのぞけば、私としてはPerlの方が全然短時間で目的の処理を書けるので、速度が優先されない場合をのぞき、極力Perlで書きたいです。とはいうものの、研究室経由で受けた技術開発のアルバイトでは、メンバのほとんどがPerlで書くことに乗り気ではないといいます。一人はRubyで、あとの二人はC++で、というのです。
モジュールの分担がおわり、今日さっそく5時間ほど掛けてコーディングしてみたのですが、私が担当するモジュールのコア部分は出来上がってしまいました。あとは私のモジュールの出力を受け取るモジュール用に、データ構造を変換する処理だけです。
受け渡し先がC++で書かれたモジュールでして。渡すデータ構造が若干複雑なので、SWIGでC++のオブジェクトファイルをPerlモジュールとして使えるようにしたとしても、複雑な型は渡しにくいです。文字列などなら渡せるだろう、ということで、XMLに変換して渡すことにしました。
Rubyでモジュールを書く人の担当内容は、キーワードを受け取り、Webの検索エンジンでのヒット数を取得するものです。私のモジュールでもWebの検索エンジンのヒット数を使う必要が出てきたので、12行程度で書き上げてしまいました。RubyのコードをPerlで使うためにはInline::Rubyなどを使えばいいのでしょうけど、私のCygwin上ではコンパイルがうまくいかず、外部プロセスとしてRubyを立ち上げ、プロセス間通信しなければならないかもしれません。
…全員Perlで書けばなんら問題ないんとちゃうんかと。生産性の面からすれば、C++に比べて断然Perlの方が少ない行数で書けるわけでして。全員で分担したこのプログラム開発ですが、コーディングとテストを含めて、私であれば三日で終わりそうな気がしてきました。それを、あえて全員で分担し、SWIGでつなぎ合わせたりプロセス間通信したりして、コーディング量が無駄に増えたり、処理時間が増えてるのか減ってるのかよくわからない状態になったりして。Inlineモジュールがあることから、全員言語がバラバラでも良いと言ってしまったことを後悔してきました。CygwinでInlineモジュールのコンパイルが上手く行かないと来てますから。
No comments:
Post a Comment