GNU Octave
LISPの 'unwind_protect'を実装しており、例外処理を記述することができる。unwind_protectブロックはOctaveでは以下のように書かれる:
Octaveでは一般的に、ブロックの終端は 'end' キーワードで示される(MATLAB 互換)が、'end_block' でも示すことができる。'unwind_protect' ブロックでも 'end' に加えて 'end_unwind_protect' を使うことができる。
unwind_protectのcleanup部は、常に実行される。body部で例外が発生した場合は、その時点でcleanupが実行され、 'unwind_protect' ブロックの残りの部分が評価されることはない。
MATLAB との互換性のため他の例外処理も使える:
'try' と 'catch' を使う例では 'unwind_protect' ブロックと違い、例外がbody部で発生したときにのみexception_handlingが実行される。またexception_handlingの実行後は、 'rethrow( lasterror )' 文がexception_handling部に記述されていない限りは、'try' ブロックの例外発生場所以降の部分が評価されることはない。
条件判定の二項演算子、'&&' および '||' が評価されるときには、短絡評価が行われる(C言語の場合と同様)。 '&' および '|' 演算子を使った場合は短絡評価は行われない。
MATLAB 互換のインタプリタを実装しており、GUIの開発環境もそろっている。
C++とSTLを用いる。
C/C++言語の自作プログラムをコンパイルし、Oct-fileとよばれる形式で呼び出せる。
Octave 4.0からグラフィックはOpenGL graphics with Qt widgetsを用いる。それ以前はgnuplot。
行列計算でBLASを呼び出しているため高速かつ信頼性が高い。
Octave 4.0からOpenMPがデフォルトで有効になっており、システムにこれが実装されている場合、計算の高速化が期待できる。