読者です 読者をやめる 読者になる 読者になる

MATLABの問題点とスクリプト言語

ソフトウェア開発

 学生時代から画像処理や線形代数関係のアルゴリズムの検証によくMATLABを使っているのですが、ライブラリが充実している反面、スクリプト言語としての仕様に不十分さを感じます。
 例えば気になるところいくつか挙げてみます。


●変数宣言、型指定を強制できない
 タイプミスを検出できない。ビット数や変数型の厳密な管理が間接的にしかできない。


●構造に関する仕様が不十分
 関数、変数の公開/隠蔽を管理する仕様が貧弱。変数の記憶領域の管理が貧弱。モジュール、ライブラリを管理するための仕様が貧弱。


●IDEとして機能が貧弱
 プロジェクト管理、プラグイン、スタイル調整、各種テキスト処理といったIDEの機能が十分でない。しかし他のIDEを使うという選択肢がない。


インタプリタとして重い
 起動が重い。消費メモリ量が多い。ビット演算など非線形代数的な処理が重い。しかしスクリプトはMATLAB依存で、他のインタプリタは存在しない。


●標準IOが貧弱
 OSとのやり取りや、コマンドプロンプトのような入出力インターフェースを操作する関数が貧弱。


●エラー処理が貧弱
 規模が大きくなるとデバッグが一気に難しくなる。エラー対策が難しい。例外処理の仕様が貧弱。


 上記などの理由により、MATLABによる検証作業は、どうしてもスクリプトを書いては捨て、書いては捨ての繰り返しになり、無駄なコード・重複しているコードがどんどん発生していくようになります。また規模も1000行超程度で、管理にかなり難を感じるようになります。
 正直、OSの機能を容易に使えたり、構造化をきちんと管理できる他言語と比べると、使っていてうんざりしてくることもしばしばです。
 結果、解析作業を行う場合でも、線形代数的な処理を使う場合や綺麗なグラフを得たい場合はMATLABで、時系列データを扱う場合はExcel+VBAで、画像ファイルを扱う際はC#で、ビット単位の処理が大事な場合はCで、などといった、変な住み分けが発生しています。


 MATLABがすばらしいソフトであることは確かです(そのため今の変な住み分けはかなり悲しい状況です…)。
 が、スクリプト言語は、使い捨て目的であれ、学術目的であれ、やはりそれなりの設計を支えるに足る仕様を、きちんと持っておいて欲しいものです。
 その点、プロトタイピングや雑用目的においても、文法や仕様が整然としていて、大規模ソフトウェアの開発にも耐えうる設計記述力を持った、PythonRubyのような現代スクリプト言語に人気が集まっているのも自然な流れかもしれません。