最近、私の使うコンピュータ言語で使用頻度の高いものはこの3つである。やはり速度重視の場合C言語ははずせない。 しかし、速度を犠牲にしても開発時間を短くすませたい場合にはrubyやmathematicaは強力である。

rubyはその設計ポリシーが、"コンピュータにできることはなるべくコンピュータにやらせる"というだけあって、ファイルの読み込みや文字列、配列、ハッシュの扱いが非常に楽であり、プログラムの記述量は、C言語の数分の1以下ですませることができる。gslやgtkなどの便利なライブラリについても、有志の手でラッパーが用意されており、これまたC言語から利用する場合の数分の1の労力で利用できる。記述量が少なくて済むということは、バグの発生をそれだけ少なくできるということであり、短時間で開発したい場合の大きな利点となる。

rubyはオブジェクト指向プログラミングができるようになっているので、問題の抽象化が容易で、テキストファイルの操作のみならず、複雑な数値計算にも力を発揮する。 ただし、強力なパワーを持つrubyにも、こと数値計算に限った場合、 若干の欠点が目につくことがある。最大のものは、整数を整数で割ったものが強制的に整数になってしまう事であろう。これはFortranやC言語の特徴を継承したものであり、古くからのプログラマには好評であるものの、現代的に抽象化されたプログラミングに使おうと思ったときには少々不便である。気をつけて使えばいいと言えばそれまでだが、できれば実数を返して欲しいところである。他にも括弧の付け方や演算子の前後の空白の入れ方で結果が変わる、といったことがあるが、汎用言語を目指すならなるべく誤りの可能性が小さくなる方向に改善していって欲しい。

対象を数値計算および数式処理に限ってしまえば、専用の数式処理システムを使う以上の選択はないであろう。 Mathematicaは慣れるまでに時間がかかるものの、一旦特徴をつかんでしまえばこれほど便利なものはない。 あらかたの数学関数は用意されているし、数学的問題を扱うための巧妙な仕掛けがあちこちにほどこされており、 それらを理解して使えば非常に強力なツールとなる。昔はデータファイルの読み込みや書き出しに難があったが、いまでは Import関数やExport関数が用意され、それも手軽になった。組み込みの関数名やオプションの名前が長すぎて面倒になることがあるが、ヘルプを使って必要な関数を探すような場合には却って利点になるし、補完機能を覚えてしまえば 長さはそれほど気にならない。

このように便利なMathematicaではあるが、使いこなすにあたってどうしても必要なことがいくつかある。 その中でも最大のものは、リストの扱いに習熟することであろう。特に、Range, Map, Apply, MapThreadの各関数、それに純関数の使い方は理解しておかなくてはならない。 これらを知っているのといないのとでは、 プログラミングの労力、および実行速度に雲泥の差がある。初心者は、少しMathematicaに慣れたところで これらのリスト処理関数を学ぶべきである。他にも遅延評価、パターンマッチ、関数の属性など、理解すべきことは 多いが、使いながら慣れるというよりも一度解説書*1を読むなどして大体の言語構造を頭に入れておく方がよいだろう。

山本夕可


*1 お勧めは [木村広"Mathematicaハンドブック"]

トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-09-04 (土) 12:57:55