Risa/Asir

Risa/Asir (りさ・あじーる)



Risa/Asirは、竹島卓、横山和弘、野呂正行らによって富士通研究所で開発された、オープンソースの計算機代数システムです。その構成は、数式処理エンジンであるRisa (Research Instrument for Symbolic Algebra) と、ユーザーインターフェースを担うAsirから成り立っています。

2000年以降、オリジナル版は安定版(STABLE)として維持され、開発版(HEAD)は野呂正行の異動に伴い、神戸大学へと開発の中心が移りました。現在はOpenXM contrib2として、OpenXMコミッターによって開発が進められています(Asir2000 神戸版)。Risa/Asirは、Windows、macOS、そして各種UNIX環境で動作し、主にFreeBSD上で開発が行われています。

Risa/Asir の特徴



Risa/Asirの主な特徴は以下の通りです。

インターフェイス実装 Asir



Asirは、コマンドラインインターフェース(CLI)アプリケーションとして提供され、端末から `asir` コマンドを通じて利用できます。Windows版には `asirgui.exe` が存在しますが、これは端末上で `asir` を呼び出した状態を模倣したものであり、一般的なGUIソフトウェアとは異なります。macOS版では、十進BASICのインターフェースを模した `cfep` を利用できます。

ユーザ言語 Asir の文法



Risa/Asirのユーザ言語もまたAsirと呼ばれ、標準入力から対話的に利用可能です。C言語に似たプログラミング言語としての側面も持ち合わせており、Asirで記述されたソースファイルを読み込んで実行することもできます。

ユーザ言語Asirは、C言語を下敷きとして設計されているため、多くの特徴をC言語と共有しています。しかし、プログラム変数が型を持たない点、`switch`文や`goto`文を持たない点、有理数計算が容易に行える点、リストを扱える点など、Asir独自の特徴も存在します。

Asir の扱うオブジェクト



Asirで扱うオブジェクトは、可読な形式で入力された後、パーサーによって中間言語に変換され、Risaによってそれぞれの型に応じた内部形式に変換されます。オブジェクトの型は、`type()`、`nytype()`、`vtype()`といった関数で確認できます。

型を持たない変数


Asirのプログラム変数は、必ずASCII大文字で始まります。通常、変数を明示的に宣言する必要はありません。Asirの各対象はそれぞれ型を持ちますが、プログラム変数にはあらゆる型の対象を代入できるため、「変数には型が無い」と表現されます。この特性により、柔軟な代入操作が可能です。また、関数内で使用される変数は、デフォルトでローカル変数となります。グローバル変数を使用する場合は、`extern`宣言が必要です。

Asirでは、不定元と変数は明確に区別されます。不定元は、数学における意味と同様に、係数体上超越的な元として扱われます。したがって、不定元に値を代入することは、概念的にもシステム的にも不正な操作とみなされます。ただし、変数とは異なり、不定元および関数名はASCIIの小文字で始まるため、意図しない代入が発生する心配は少ないでしょう。

リストと配列


リストは、`[`と`]`で囲み、要素を`,`で区切って生成します。リストは実行中にサイズを変更できますが、要素への代入はできません。LISPに由来する強力なリスト操作が可能です。

他言語における配列に相当する型は、Asirではベクトルと呼ばれます。ベクトルは`newvect()`を用いて明示的に生成する必要があり、サイズは固定されます。要素への代入は自由に行えます。行列やバイト列の扱いもベクトルに準じます。ベクトルとリストは、`vtol()` / `newvect()` によって相互に変換できます。

機能拡張



モジュールやC言語ソースコードを通じて、高度な機能拡張が可能です。

OpenXM



OpenXMに基づいた通信・分散計算をサポートしています。

Asir が得意とする計算



有限体・代数体上の代数計算
グレブナー基底計算

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。