Risa/Asir
Risa/Asir(りさ・あじーる[注釈 1])は、竹島卓・横山和弘・野呂正行らにより富士通研究所で開発されたオープンソースの計算機代数システムである。数式処理エンジン Risa (Research Instrument for Symbolic Algebra; 記号代数のための研究道具)とインターフェイス実装 Asir[注釈 2] からなる。 2000年以降、オリジナルを安定版 (STABLE) とし、開発版 (HEAD) は野呂正行の転出先である神戸大学へ中心を移し[注釈 3]、OpenXM contrib2[注釈 4] として OpenXM コミッターによって開発されている(Asir2000 神戸版)。Risa/Asir は Windows・macOS及び各種UNIX上で動作し、開発は主にFreeBSD上で行われている。
Risa/Asir の特徴
編集主な特徴[2]
インターフェイス実装 Asir
編集インターフェイスとしての Asir はコマンド asir
によって端末から利用するコマンドライン(CLI)アプリケーションである。Windows版の asirgui.exe
は端末上で asir を呼び出した状態を模したソフトウェアであり、マウス操作を想定した一般的なGUIソフトウェアではない。macOS版では十進BASIC[3]のインターフェイスを模した cfep[注釈 5] を利用することができる。
ユーザ言語 Asir の文法
編集Risa/Asir のユーザ言語も Asir と呼ばれ、標準入力から対話的に利用することができるほか、これはC言語に似たプログラミング言語としての性格を持っていて、予め Asir で書かれたソースファイルを読み込んで動作させることもできる。
ユーザ言語 Asir はC言語を下敷きとして設計されているために多くの特徴をC言語と共有しているが、プログラム変数が型を持たない・ switch
や goto
文を持たない・有理数に対する計算が通常のように使用できる・リストが扱えるなどの点で Asir 独自の特徴が見られる。
Asir の扱うオブジェクト
編集各オブジェクトは可読な形式での入力からパーサーにより中間言語に変換され、Risa によって各々に応じた型を持つ内部形式に変換される。オブジェクトの型は type()
・nytpe()
・vtype()
によって確認できる。
type() | オブジェクトの型 |
---|---|
0 | 0 |
1 | 数 |
2 | 多項式 |
3 | 有理式 |
4 | リスト |
5 | ベクトル |
6 | 行列 |
7 | 文字列 |
8 | 構造体 |
9 | 分散表現多項式 |
10 | 符号無し32bit整数 |
11 | エラーオブジェクト |
12 | 二元体上の行列 |
13 | MATHCAPオブジェクト |
14 | 一階述語論理式 |
15 | 小標数有限体上の行列 |
16 | 符号なし byte の配列 |
-1 | VOIDオブジェクト |
type() | ntype() | 数の型 |
---|---|---|
1 | 0 | 有理数 |
1 | 1 | 倍精度浮動小数 |
1 | 2 | 代数的数 |
1 | 3 | 任意精度浮動小数 |
1 | 4 | 複素数 |
1 | 5 | 小標数素体の元 |
1 | 6 | 大標数素体の元 |
1 | 7 | 標数2の有限体の元 |
1 | 8 | 有限体の元 |
1 | 9 | 小位数有限体の元 |
type() | vtype() | 不定元の型 |
---|---|---|
2 | 0 | 一般不定元 |
2 | 1 | 未定係数 |
2 | 2 | 函数形式 |
2 | 3 | 函数子 |
型を持たない変数
編集Asir のプログラム変数は必ずASCIIの大文字で始まり、Asir では通常はプログラム変数を宣言することはしない。Asir の各対象はそれぞれ必ず何らかの型を持っているが、プログラム変数にはどんな型を持つ対象でも代入できるという意味で「変数には型が無い」。型を持たない変数を用いることによる豊富な代入操作が可能である。また、函数内に現れる変数は全てデフォルトで局所変数となる。大域変数を利用するには extern
の宣言が必要である。
Asir では不定元と変数は明確に区別され、不定元は数学で用いる意味と同じく係数体上超越的な元である。よって不定元に何らかの値を代入するというのは、概念的に不適当であるとともにシステム的にも不正な操作である。しかしながら、変数に対する規約と異なり不定元及び函数名はASCIIの小文字で始まるため、実用上は不定元に対し意図せぬ代入が行われる心配は無用である。
リストと配列
編集- リストの生成は "[" と "]" で囲むことで行われる。要素の区切りは "," である。
- リストは実行中にサイズを変更できるが要素への代入を行うことはできない。
- LISPに由来する強力なリスト操作
- 他言語で配列 (array) に相当する型は Asir ではベクトル (vector) と呼ばれる。
- ベクトルは
newvect()
を用いて明示的に生成する必要があり、サイズは固定される。要素への代入は自由にできる。 - 行列・バイト列の扱いはベクトルに準じる。
- ベクトルとリストは
vtol()
/newvect()
によって相互に変換可能である。
機能拡張
編集- モジュール・C言語ソース等による高い機能拡張性
OpenXM
編集- OpenXM に基づく通信・分散計算
Asir が得意とする計算
編集注
編集注釈
編集- ^ Asir の発音については諸説あるが、ここでは竹島卓[1]等に倣った。OpenXM コミッターチームは「あしーる」と呼んでいるように思われる。呼称については asirgui.exe のアイコンでもあるマスコットキャラクタのホポ君(野呂がモデル)はアザラシ (a seal; あ・しーる) だからとも言われるが、ホポ君はどう見てもセイウチ。
- ^ Asir は Risa の逆さ綴りである
- ^ 野呂は立教大学へ転出しており、年1回3月に行われていたカンファレンスも2015年からは小原功任を中心に金沢大学で開かれている
- ^ OpenXM は神戸大学教授である高山信毅、および、野呂正行・小原功任らを中心メンバーとして、様々な数学ソフトウェア間での通信を行うためのプロトコルおよびパッケージを提供するプロジェクトであり、Asir は OpenXM における通信インターフェイスとしての役割も果たす。
- ^ cfep 自体は OpenXM のフロントエンドであり、デフォルトの Asir 以外の計算エンジンを利用することも可能である。(動作環境: Mac OS X v10.4以上)[1]
出典
編集- ^ Risa/Asirの開発 (PDF) , 竹島卓, 数式処理第12巻第1号, 日本数式処理学会, 2005年9月.
- ^ マニュアルより
- ^ 十進BASICのホームページ
参考文献
編集- 斎藤友克, 平野照比古, 竹島卓『日本で生まれた数式処理ソフト—リサアジールガイドブック』SEG出版、1998年。ISBN 487243076X。
- Asir (PDF) , 野呂正行・横山和弘・竹島卓・Risa/Asir committers, 2010年2月. Asir マニュアル
- Asir User’s Manual, 野呂正行・横山和弘・竹島卓・Risa/Asir committers, 2010年2月6日.
- OpenXM/Risa/Asir-Contrib (PDF) , OpenXM Developing Team, 2002年2月. OpenXM・Risa・Asir-contrib マニュアル
- Asir OpenXM-Contrib User's Manual, OpenXM Developing Team, 2002年2月.
- Risa/Asir ドリル (PDF) , 高山信毅・野呂正行, 2012年11月7日. - Risa/Asir を用いたプログラミングの入門書
関連項目
編集外部リンク
編集- http://jp.asir.org/
- Risa/Asir (神戸版) ダウンロードページ Risa/Asir 開発版 (HEAD)
- OpenXM (Open message eXchange for Mathematics)
- cfep OpenXM のフロントエンド(動作環境: Mac OS X v10.4以上)