MATXは行列の演算や成分の操作法について Cleve Molerらによって開発されたMatlab言語 [12,13]と いくつかの特徴的性質を共有している。 しかしながら,Matlabはデータの型を「区別しない」言語であり, 唯一のデータ型は行列であり,他の型のデータの演算や操作をするには, 特別な演算子を使うか関数を呼び出さなければならない。 一方,MATXはデータの型を「区別した」言語である。 データ型には,整数,実数,複素数,文字列,多項式,有理多項式,行列,配列, リストがあり,行列,配列,多項式,有理多項式,リストは次数指定を必要としない。
MATXは数値解析だけでなく数式処理も行なえ,方程式の解を求めたり, 多項式や有理多項式の導関数や不定積分を計算できる。 MATXの文法の根幹となる制御の流れや関数やプログラム構造は,C言語 から受け継がれている。C言語は,PDP-11上でDennis M.Ritchieによって開発された プログラミングである [7,20,8,22]。 MATXはすべてC言語で記述されており,特に,構文解析部は構文解析部生成言語 として有名なyaccを用いて作成されている [18,21]。
Matlabは,インタプリタであるためFortranやCで作成されたプログラムに比べて, 複雑な計算の繰り返しなどに時間がかかる。 そのため,Matlabは特別なインターフェースをもっていて, 別にコンパイルしてリンクされたFortranやCのルーチン(mex-files)を Matlab環境から普通のm-fileのように呼び出すことができる。 m-fileによるアルゴリズムの実現の速度が十分でない時に,この機能は有効である。 しかしながら,mex-fileの作成は簡単な作業ではなく,MatlabとFortranの間で 関数のパラメータを交換するための特別なgateway functionを書かなけれ ばならない。
MATXは対話型処理を行なうインタプリタだけでなく,
コンパイラも提供している。インタプリタをmatx,
コンパイラをmatcと呼ぶ。パッケージ全体を表す時はMATXと書いて
インタプリタ(matx)と区別する。
コンパイラ(matc)は,インタプリタ(matx)と同じプログラムを
処理することができ,
与えられたプログラムから移植性の良いC言語のコードを生成する。
プログラムを拡張するためには,アルゴリズムをmmファイルの中に
関数として実現する。
この過程は,matxを使って対話的に途中経過をチェックしながら行なえる。
関数が完成した後,matcを使ってコンパイルし,実行プログラムを作る
ことができる。C言語のファイルをmatcの出力コードにリンクすることによって,
C言語の関数をMATXの関数から簡単に呼び出すことができる。
このおかげで,既存の膨大なC言語のルーティンを利用することができ,
計算速度が上がり,メモリ効率を良く使用できる。