[BACK]Return to introduction.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / OpenXM-specs

Annotation of OpenXM/doc/OpenXM-specs/introduction.tex, Revision 1.3

1.3     ! takayama    1: %% $OpenXM: OpenXM/doc/OpenXM-specs/introduction.tex,v 1.2 2000/01/24 07:36:35 noro Exp $
1.1       noro        2: //&jp \section{はじめに}
1.2       noro        3: //&eg \section{Introduction}
1.1       noro        4:
                      5: /*&jp
1.2       noro        6: OpenXM は, おなじタイプまたは異なるタイプの数学プロセス間の
1.1       noro        7: メッセージのやりとりの規約である.
                      8: 開発の動機は, 手作り(または研究的な)数学ソフトの相互乗り入れの実現
                      9: および分散計算の実装が
                     10: 第一であったが, もちろん数学ソフト間だけでなく, ワープロソフトや,
                     11: インタラクティブな数学本,
                     12: さらには数学デジタル博物館用のソフトがこの規約に従い,
                     13: 数学ソフトを呼び出すことなどにも利用できる.
1.2       noro       14: 当面の目標は OpenXM 数学ソフトパッケージを作ることである.
1.1       noro       15: これはさまざまな数学ソフトを一つのパッケージとして
                     16: 簡単に好きな言語より使えるようにするプロジェクトである.
1.2       noro       17: 現在 OpenXM.tar.gz には,
1.1       noro       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.2       noro       30: It is currently a collection of softwares
                     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.1       noro       38: 現在専門的な数学ソフトが多数開発
                     39: されているが, 次世代の数学ソフトは他のソフトよりサブルーチンとして
                     40: 呼び出せる機能をもつべきである.
                     41: このように協調機能にすぐれたプログラムを書くための設計の
                     42: ガイドライン, プログラム作法のようなものを提案するのも,
                     43: このプロジェクトの目的である.
                     44: このようなガイドラインにそってプログラムすることにより,
                     45: 数学アルゴリズム自体に集中できる環境が実現できることを
                     46: 期待している.
                     47:
1.2       noro       48: 設計の方針として, (1) 単純 (2) 拡張性 (3) 実装の簡便さ (4) 実用性(5)
                     49: 高信頼性(robustness),に重きをおいている.
                     50:
                     51: OpenXM はなにも考えずに簡単に接続できるシステムを作ろう,というまで野心
                     52: 的ではない.  数学的な object は一筋縄ではいかないし, 完全な統一規格を
                     53: つくるというのは気が遠くなる仕事である. そのかわり, 今よりすこしだけこ
                     54: ういったデータ交換や分散システム構築の仕事を楽にしたいというのがささや
                     55: かな第1目標である.  また, Mathematica や Maple といった巨大な統合ソフ
                     56: トを, Free Mathematical Softwares としてわれわれ自身の手でつくっていく
                     57: ための基礎でもある.
                     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
                     81: softwares.  However, it might be just a dream without realizability.
                     82: We want to build a prototype of such an open system by using existing
                     83: standards, technologies and several mathematical softwares.  We want
                     84: to see how far we can go with this approach.
                     85: */
1.1       noro       86:
1.2       noro       87: /*&jp
1.1       noro       88: 数学的な Object をどのように表現するのか, どう伝えるのかを考えることは
                     89: 決してつまらない問題ではない.
                     90: このような問題は, 新しい数学記号を創造する問題と似ているかもしれない.
                     91: 我々は, 数字を $0$ を含んだ10進数で表記し,
                     92: 微分を $dx$ と書き, 写像を $ \longrightarrow $ であらわす.
                     93: これらの記号法からどれだけ多くの利益を得ているか, 思いをはせて欲しい.
1.2       noro       94: */
                     95: /*&eg
                     96: It is not an obvious problem to consider how mathematical objects
                     97: are represented and communicated.
                     98: It may be similar to trying to create new mathematical symbols.
                     99: We have the decimal notation to represent numbers, the symbol $dx$
                    100: to represent a differential, and $ \longrightarrow $ to represent
                    101: a mapping. One should imagine how we are benefited from these notations.
                    102: */
1.1       noro      103:
                    104: %% 変数名をどうするか悩むのにも似てる.
                    105:
1.2       noro      106: /*&jp
                    107: OpenXM は論理的には
                    108: OX 層, SM 層, CMO 層にわかれる.
                    109: OX Object は, データ, コマンドに大別できる.
                    110: データはこのプロジェクトのオリジナルのデータ形式
                    111: である CMO (Common Mathematical Object Format) で
                    112: 送出してもよいし, MP や Open MATH などの形式を用いてもよい.
                    113: SM 層は (スタックマシン)サーバを制御するための命令の
                    114: あつまりであり, サーバは非同期的に動作させることが可能である.
                    115: 柔軟性が高いので, IMC などのリモートプロシージャコール系の
                    116: プロトコルもエミュレートできる.
1.3     ! takayama  117: OX メッセージは DTD を用いて定義可能であり, XML を用いて
        !           118: 記述できる.
1.2       noro      119: */
                    120: /*&eg
                    121: In OpenXM, communication is an exchange of messages.
                    122: The messages are classified
                    123: into three types: DATA, COMMAND, and SPECIAL.  They are called OX
                    124: (OpenXM) messages.  Among the three types, {\it OX data messages} wrap
                    125: mathematical data.  We use standards of mathematical data formats such
                    126: as OpenMath and MP as well as our own data format {\it CMO} ({\it
                    127: Common Mathematical Object format}).  Servers, which provide services
                    128: to other processes, are stack machines.  The stack machine is called
1.3     ! takayama  129: the {\it OX stack machine}.  Existing mathematical software systems are
1.2       noro      130: wrapped with this stack machine.  OX stack machines work in the
                    131: asynchronous mode which is similar to X servers. That is, OpenXM
                    132: server won't send messages to the client unless it is requested
                    133: to send them. It is also possible to emulate RPC and a web server for MCP
                    134: \cite{iamc} on our asynchronous OX stack machines.
1.3     ! takayama  135: OX messages can be defined by DTD and be expressed by XML.
        !           136: We call it OpenXM/XML.
1.2       noro      137: */
                    138: /*&jp
                    139: OpenXM に準拠したシステム xxx を, open xxx とよぶ.
                    140: たとえば, OpenXM 対応の asir は open asir であり,
                    141: OpenXM 対応の kan/sm1 は open sm1 である.
                    142: */
                    143: /*&eg
1.3     ! takayama  144: A system xxx complient to the OpenXM protocol is called open xxx.
        !           145: For example Asir complient to the OpenXM protocol is called open Asir, and
        !           146: kan/sm1 complient to the OpenXM protocol is called open sm1.
1.2       noro      147: */
1.1       noro      148:
1.2       noro      149: /*&jp
                    150: OpenXM は, データ型をきめている部分と,
1.1       noro      151: 共通スタック言語を定めている部分にわかれる.
                    152: よいたとえかどうか自信がないが,
1.2       noro      153: OpenXM を定義する作業は, unicode を定める作業に似ている部分もある.
1.1       noro      154: たとえば, 漢字は東アジアで共通に使用されているが, 国や地方単位で
                    155: 形がすこしづつ違うものがある.
                    156: unicode では, 似た漢字を同じ code におしこんだ.
1.2       noro      157: OpenXM でも, システム毎にことなるが似ているデータ型を
1.1       noro      158: 同じ型としてあつかう.
                    159: たとえば, ``分散多項式'' の意味は, asir と kan/sm1 で異なるが,
1.2       noro      160: OpenXM では, 同じ型としてあつかわれる.
1.1       noro      161: ただしこれでは不十分な場合があるので,システム固有のデータ型も扱える
                    162: ような仕組みも用意している.
                    163: (さっきのたとえでは, こちらは, unicode でなく, ISO の文字符号系に対応するか.)
                    164: 共通スタック言語は, ごく小数の共通コマンドをのぞき
                    165: 基本的にシステム毎に固有の関数により実行される.
                    166: これにより, open xxx のサーバの実装およびマニュアルの記述は
                    167: いちじるしく簡単になる.
                    168: システム毎に固有の関数を共通の関数名にするプロジェクトも
                    169: 考えているが, 共通の関数名は OpenMath のものを利用する予定である.
1.2       noro      170: */
                    171: /*&eg
                    172: % not translated yet.
1.1       noro      173: */
                    174:
                    175:
                    176:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>