Annotation of OpenXM/doc/OpenXM-specs/introduction.tex, Revision 1.5
1.5 ! takayama 1: %% $OpenXM: OpenXM/doc/OpenXM-specs/introduction.tex,v 1.4 2002/01/20 09:26:22 takayama Exp $
! 2: //&jp \section{はじめに}
1.2 noro 3: //&eg \section{Introduction}
1.1 noro 4:
5: /*&jp
1.5 ! takayama 6: OpenXM は, おなじタイプまたは異なるタイプの数学プロセス間の
! 7: メッセージのやりとりの規約である.
! 8: 開発の動機は, 手作り(または研究的な)数学ソフトの相互乗り入れの実現
! 9: および分散計算の実装が
! 10: 第一であったが, もちろん数学ソフト間だけでなく, ワープロソフトや,
! 11: インタラクティブな数学本,
! 12: さらには数学デジタル博物館用のソフトがこの規約に従い,
! 13: 数学ソフトを呼び出すことなどにも利用できる.
! 14: 当面の目標は OpenXM 数学ソフトパッケージを作ることである.
! 15: これはさまざまな数学ソフトを一つのパッケージとして
! 16: 簡単に好きな言語より使えるようにするプロジェクトである.
! 17: 現在 OpenXM.tar.gz には,
! 18: asir, sm1, phc, gnuplot, tigers が入っている.
! 19: OpenXM 数学ソフトパッケージプロジェクトに
! 20: 参加できるように CMO の
! 21: 規約を拡張していくための規約も定めるものとする.
1.2 noro 22: */
23: /*&eg
24: OpenXM is a free, or Open Source, infrastructure for mathematical
1.3 takayama 25: software systems.
1.2 noro 26: It provides methods and protocols
27: for interactive distributed computation and
1.3 takayama 28: for integrating mathematical software systems.
29: OpenXM package is a set of software systems that support OpenXM protocols.
1.4 takayama 30: It is currently a collection of software systems
1.2 noro 31: {\tt Risa/Asir} \cite{asir}, {\tt Kan/sm1} \cite{kan}, {\tt PHC} pack \cite{phc}
32: , {\tt GNUPLOT},
33: {\tt Mathematica} interface, and
34: {\tt OpenMath}/XML \cite{openmath} translator.
35: */
1.1 noro 36:
1.2 noro 37: /*&jp
1.5 ! takayama 38: 現在専門的な数学ソフトが多数開発
! 39: されているが, 次世代の数学ソフトは他のソフトよりサブルーチンとして
! 40: 呼び出せる機能をもつべきである.
! 41: このように協調機能にすぐれたプログラムを書くための設計の
! 42: ガイドライン, プログラム作法のようなものを提案するのも,
! 43: このプロジェクトの目的である.
! 44: このようなガイドラインにそってプログラムすることにより,
! 45: 数学アルゴリズム自体に集中できる環境が実現できることを
! 46: 期待している.
! 47:
! 48: 設計の方針として, (1) 単純 (2) 拡張性 (3) 実装の簡便さ (4) 実用性(5)
! 49: 高信頼性(robustness),に重きをおいている.
! 50:
! 51: OpenXM はなにも考えずに簡単に接続できるシステムを作ろう,というまで野心
! 52: 的ではない. 数学的な object は一筋縄ではいかないし, 完全な統一規格を
! 53: つくるというのは気が遠くなる仕事である. そのかわり, 今よりすこしだけこ
! 54: ういったデータ交換や分散システム構築の仕事を楽にしたいというのがささや
! 55: かな第1目標である. また, Mathematica や Maple といった巨大な統合ソフ
! 56: トを, Free Mathematical Software としてわれわれ自身の手でつくっていく
! 57: ための基礎でもある.
1.2 noro 58: */
59:
60: /*&eg
61: We have been profited from increasing number
1.3 takayama 62: of mathematical software systems.
1.2 noro 63: These are usually ``expert'' systems in one area of mathematics
64: such as ideals, groups, numbers, polytopes, and so on.
65: They have their own interfaces and data formats,
66: which are fine for intensive users of these systems.
67: However, a unified system will be more convenient
68: for users who want to explore a new area of mathematics with these
1.3 takayama 69: software systems or users who need these systems only occasionally.
70: It is also wonderful for developpers to have various software components
71: that can be used from the target system.
1.2 noro 72:
73: OpenXM provides not only data representation and communication protocols
74: but also programming guidelines to develop cooperative applications.
75: One will be able to concentrate on
76: developing mathematical algorithms with such guidelines.
77: Our design goals are (1) simpleness, (2) extensibility, (3)
78: easiness of implementation, (4) practicality, and (5) robustness.
79:
80: We believe that an open integrated system is a future of mathematical
1.4 takayama 81: software systems.
82: However, it might be a dream without realizability.
1.2 noro 83: We want to build a prototype of such an open system by using existing
1.4 takayama 84: standards, technologies and several mathematical software systems.
85: We want to see how far we can go with this approach.
1.2 noro 86: */
1.1 noro 87:
1.2 noro 88: /*&jp
1.5 ! takayama 89: 数学的な Object をどのように表現するのか, どう伝えるのかを考えることは
! 90: 決してつまらない問題ではない.
! 91: このような問題は, 新しい数学記号を創造する問題と似ているかもしれない.
! 92: 我々は, 数字を $0$ を含んだ10進数で表記し,
! 93: 微分を $dx$ と書き, 写像を $ \longrightarrow $ であらわす.
! 94: これらの記号法からどれだけ多くの利益を得ているか, 思いをはせて欲しい.
1.2 noro 95: */
96: /*&eg
97: It is not an obvious problem to consider how mathematical objects
98: are represented and communicated.
99: It may be similar to trying to create new mathematical symbols.
100: We have the decimal notation to represent numbers, the symbol $dx$
101: to represent a differential, and $ \longrightarrow $ to represent
102: a mapping. One should imagine how we are benefited from these notations.
103: */
1.1 noro 104:
1.5 ! takayama 105: %% 変数名をどうするか悩むのにも似てる.
1.1 noro 106:
1.2 noro 107: /*&jp
1.5 ! takayama 108: OpenXM は論理的には
! 109: OX 層, SM 層, CMO 層にわかれる.
! 110: OX Object は, データ, コマンドに大別できる.
! 111: データはこのプロジェクトのオリジナルのデータ形式
! 112: である CMO (Common Mathematical Object Format) で
! 113: 送出してもよいし, MP や Open MATH などの形式を用いてもよい.
! 114: SM 層は (スタックマシン)サーバを制御するための命令の
! 115: あつまりであり, サーバは非同期的に動作させることが可能である.
! 116: 柔軟性が高いので, IMC などのリモートプロシージャコール系の
! 117: プロトコルもエミュレートできる.
! 118: OX メッセージは DTD を用いて定義可能であり, XML を用いて
! 119: 記述できる.
1.2 noro 120: */
121: /*&eg
122: In OpenXM, communication is an exchange of messages.
123: The messages are classified
124: into three types: DATA, COMMAND, and SPECIAL. They are called OX
125: (OpenXM) messages. Among the three types, {\it OX data messages} wrap
126: mathematical data. We use standards of mathematical data formats such
127: as OpenMath and MP as well as our own data format {\it CMO} ({\it
128: Common Mathematical Object format}). Servers, which provide services
129: to other processes, are stack machines. The stack machine is called
1.3 takayama 130: the {\it OX stack machine}. Existing mathematical software systems are
1.2 noro 131: wrapped with this stack machine. OX stack machines work in the
1.4 takayama 132: asynchronous mode like X servers.
133: OpenXM servers try to be as quiet as possible.
134: OpenXM server does not send messages to the client unless it is requested
135: to send them.
136:
137: Our stackmachine architecutre can be used as the lowest level layer
138: to implement other protocols.
139: Emulating RPC or constructing a web server like MCP
140: \cite{iamc} on our asynchronous OX stack machines
141: are possible.
142:
143: Our datatype definition is compliant to XML architecture.
144: OX messages can be defined by DTD and can be expressed by XML.
1.3 takayama 145: We call it OpenXM/XML.
1.2 noro 146: */
147: /*&jp
1.5 ! takayama 148: OpenXM に準拠したシステム xxx を, open xxx とよぶ.
! 149: たとえば, OpenXM 対応の asir は open asir であり,
! 150: OpenXM 対応の kan/sm1 は open sm1 である.
1.2 noro 151: */
152: /*&eg
1.3 takayama 153: A system xxx complient to the OpenXM protocol is called open xxx.
154: For example Asir complient to the OpenXM protocol is called open Asir, and
155: kan/sm1 complient to the OpenXM protocol is called open sm1.
1.2 noro 156: */
1.1 noro 157:
1.2 noro 158: /*&jp
1.5 ! takayama 159: OpenXM は, データ型をきめている部分と,
! 160: 共通スタック言語を定めている部分にわかれる.
! 161: よいたとえかどうか自信がないが,
! 162: OpenXM を定義する作業は, unicode を定める作業に似ている部分もある.
! 163: たとえば, 漢字は東アジアで共通に使用されているが, 国や地方単位で
! 164: 形がすこしづつ違うものがある.
! 165: unicode では, 似た漢字を同じ code におしこんだ.
! 166: OpenXM でも, システム毎にことなるが似ているデータ型を
! 167: 同じ型としてあつかう.
! 168: たとえば, ``分散多項式'' の意味は, asir と kan/sm1 で異なるが,
! 169: OpenXM では, 同じ型としてあつかわれる.
! 170: ただしこれでは不十分な場合があるので,システム固有のデータ型も扱える
! 171: ような仕組みも用意している.
! 172: (さっきのたとえでは, こちらは, unicode でなく, ISO の文字符号系に対応するか.)
! 173: 共通スタック言語は, ごく小数の共通コマンドをのぞき
! 174: 基本的にシステム毎に固有の関数により実行される.
! 175: これにより, open xxx のサーバの実装およびマニュアルの記述は
! 176: いちじるしく簡単になる.
! 177: システム毎に固有の関数を共通の関数名にするプロジェクトも
! 178: 考えているが, 共通の関数名は OpenMath のものを利用する予定である.
1.2 noro 179: */
180: /*&eg
181: % not translated yet.
1.1 noro 182: */
183:
184:
185:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>