GNU Octave
OctaveはMATLABとの互換性を重要視しており、MATLABの機能の多くをOctaveも持っている。多くのMATLABプログラムは修正なしでOctaveで動作する。以下が両者の類似点である:
行列を基本のデータ形式
複素数に対応
強力なbuild-in関数とライブラリ
ユーザ定義関数によって拡張可能
両者の相異点はオフィシャルサイトのFAQにまとめられているが、例として以下のようなものがある:
行頭に % の他に # を置いてもその行をコメントとすることができる
++, --, +=, *=, /= などのC言語の演算子が使える
[1:10](3) などのように、変数 (インスタンス) を生成しなくても、配列の要素を参照できる
' の他に、" を使っても文字列を定義できる
開発が始まったのは1988年頃で、当初は化学反応器設計の授業のために作られた。その後、1992年からジョン・イートン (John W. Eaton) が開発を始めた。彼による最初のアルファ版のリリースは1993年1月4日で、正式版 (ver. 1.0) は翌年の1994年2月17日にリリースされた。2007年12月21日にバージョン3.0が、2015年5月29日にはバージョン4.0がリリースされた。
Octaveという名前はイートンの指導教官である元オレゴン州立大学教授のオクターブ・レヴェンシュピール(Octave Levenspiel、反応工学)にちなむ。
当初の目的である個人的な利用に加え、学術及び工業的用途にも使われている。例えば米国ピッツバーグ・スーパーコンピューティング・センター (Pittsburgh supercomputing center) では大規模並列計算による社会保障番号の攻撃に対する脆弱性検証に使っている。
ユーザインタフェースは永らくCUIのみであったが、3.8.0からはGUIが搭載された。
対話形式で用いられるコマンドをスクリプト化しプログラミング言語のように扱う事ができる。C言語のような構造化言語であり、C言語の標準ライブラリに含まれる多くの関数が実装されている。またUNIXのシステムコールもいくつか利用できる。しかし関数呼び出しで引き数の参照渡しはサポートされていない。
スクリプトでは多数の行列演算子が利用できる。また多種多様なデータ構造を利用できる他、3.2以降のバージョンではオブジェクト指向が付加された。
Octaveの文法はMATLABと非常によく似ており、少し注意してプログラミングすることでOctaveとMATLABの両方で実行できるスクリプトを書くことができる。
OctaveはGNU General Public Licenseによって公開されているため、その改変、複製、利用は自由である。Octaveは多くのUNIXやUnix系プラットフォーム、macOS、Windows で実行できる。