JPS61210432A - 計算処理方式 - Google Patents
計算処理方式Info
- Publication number
- JPS61210432A JPS61210432A JP60050425A JP5042585A JPS61210432A JP S61210432 A JPS61210432 A JP S61210432A JP 60050425 A JP60050425 A JP 60050425A JP 5042585 A JP5042585 A JP 5042585A JP S61210432 A JPS61210432 A JP S61210432A
- Authority
- JP
- Japan
- Prior art keywords
- cue
- processing
- execution
- registered
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
- G06F8/3135—Unification or backtracking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の利用分野〕
本発明は計算処理方式に関し、プログラムの劇作pg(
side effect )を伴なう部分の計算処理を
できるだけ遅らせることにより、その処理の取消しを容
易にするのに好適な計算処理方式に関する。
side effect )を伴なう部分の計算処理を
できるだけ遅らせることにより、その処理の取消しを容
易にするのに好適な計算処理方式に関する。
従来の論理型言語プロローグ(Prolog)の計算処
理方式等では、下記文献のように、計算途中で。
理方式等では、下記文献のように、計算途中で。
ある目標に対するすべての節の実行が失敗した時は、処
理を後戻りして、未だ実行してυ1ない節を実行すると
いうバックトラッキング(backtracking)
機能がある。しかし、入出力処理やデータベース操作の
実行後にバックトラッキングが生じた時、それらの実行
で生じた副作用(グローバルメモリへの書き込みなどに
よりプログラム機能を変える作用)を除去する点につい
ては配慮がされていなかった。
理を後戻りして、未だ実行してυ1ない節を実行すると
いうバックトラッキング(backtracking)
機能がある。しかし、入出力処理やデータベース操作の
実行後にバックトラッキングが生じた時、それらの実行
で生じた副作用(グローバルメモリへの書き込みなどに
よりプログラム機能を変える作用)を除去する点につい
ては配慮がされていなかった。
文献:rプロローグ プログラミング」マイクロソフト
ウェア 1983 6.4節(V、F、C1ock+1
nand C,S、Mslligh rProgra
mming in PrologJ1981 g6.
4) 〔発明の目的〕 本発明の目的は、バックトラッキングが生じた時に元の
状態に回復できないような副作用を伴なう組込述語の使
用により、 Prologのような論理型言語(マシン
)等に特に特徴的なバックトラッキングによる推論機能
が低下することを最小限に抑えるために、副作用を伴う
組込述語の実際の実行時期をバックトラッキングの可能
性が無くなるまで遅らせる機能を提供することにある。
ウェア 1983 6.4節(V、F、C1ock+1
nand C,S、Mslligh rProgra
mming in PrologJ1981 g6.
4) 〔発明の目的〕 本発明の目的は、バックトラッキングが生じた時に元の
状態に回復できないような副作用を伴なう組込述語の使
用により、 Prologのような論理型言語(マシン
)等に特に特徴的なバックトラッキングによる推論機能
が低下することを最小限に抑えるために、副作用を伴う
組込述語の実際の実行時期をバックトラッキングの可能
性が無くなるまで遅らせる機能を提供することにある。
従来のPrologのような論理型言語(マシン)では
、副作用の伴う述語の実行後のバックトラッキング時に
は副作用を元に戻すことはしていない。
、副作用の伴う述語の実行後のバックトラッキング時に
は副作用を元に戻すことはしていない。
本発明では、副作用を伴う述語の実行指示の代りにキュ
ーを保存する機能とバックトラッキング時にキューから
除く機能とキュー内の述語を実行する機能を設けること
により、上記の不都合を防止できるようにしたことにあ
る。・ 〔発明の実施例〕 以下、本発明の一実施例を図面により説明する。
ーを保存する機能とバックトラッキング時にキューから
除く機能とキュー内の述語を実行する機能を設けること
により、上記の不都合を防止できるようにしたことにあ
る。・ 〔発明の実施例〕 以下、本発明の一実施例を図面により説明する。
第1図は、Prologプログラムの簡単な例である。
構文規則はD E C10Prologに準じている。
このプログラムにおいて、 5endは1本発明で問題
とするところの、副作用を伴う述語とする(一般に副作
用を伴う述語は状態変数などのようにグローバルメモリ
内に長時間留まる必要性などから予めわかるものである
。) 第2図は、 Prologプログラムの従来方式の実行
処理システムの一実施例の概略図である。入出力端末1
はオペレータからの入力操作やシステムからの出力表示
を行う装置であり、その制御は入出力処理部2が行う、
実際のプログラムの実行は、計算処理部3が行うが、必
要に応じて、ユーザの記述したプログラムを管理するプ
ログラム部4やシステム側で用意したプログラムを管理
する組込述語部5と情報の受渡しを行う。
とするところの、副作用を伴う述語とする(一般に副作
用を伴う述語は状態変数などのようにグローバルメモリ
内に長時間留まる必要性などから予めわかるものである
。) 第2図は、 Prologプログラムの従来方式の実行
処理システムの一実施例の概略図である。入出力端末1
はオペレータからの入力操作やシステムからの出力表示
を行う装置であり、その制御は入出力処理部2が行う、
実際のプログラムの実行は、計算処理部3が行うが、必
要に応じて、ユーザの記述したプログラムを管理するプ
ログラム部4やシステム側で用意したプログラムを管理
する組込述語部5と情報の受渡しを行う。
第3図は、Prologプログラムのうち、各節の頭部
、即ち「ニー」の左側の述語名(この例ではP)が同じ
節の集合を一般形で表したものである。
、即ち「ニー」の左側の述語名(この例ではP)が同じ
節の集合を一般形で表したものである。
第4図は、第3図の各節の「ニー」の右側の素命題(a
tomic formula)の並びの1つ(例えばq
ha)を第2図の処理装置で実行する場合の処理の流
れを示したものである。以下この処理部分をSGと呼ぶ
ことにする。SGは、計算すべき素命題(atomic
formula)およびそれと同一述語名を節の頭部
に持つ節集合(第3図)の何番目から実行を試みるかと
いう2つの入力を有する。後者は第4図のkにあたり、
処理中に変化した値を処理終了時に返す、このSGは第
4図のブロック21で再帰的に実行されている。
tomic formula)の並びの1つ(例えばq
ha)を第2図の処理装置で実行する場合の処理の流
れを示したものである。以下この処理部分をSGと呼ぶ
ことにする。SGは、計算すべき素命題(atomic
formula)およびそれと同一述語名を節の頭部
に持つ節集合(第3図)の何番目から実行を試みるかと
いう2つの入力を有する。後者は第4図のkにあたり、
処理中に変化した値を処理終了時に返す、このSGは第
4図のブロック21で再帰的に実行されている。
ここで、第1図のプログラムを第2図の実行処理装置を
用いて実行した時の処理の流れを第4図を用いて説明す
る。今、入力として ?−p(b)。
用いて実行した時の処理の流れを第4図を用いて説明す
る。今、入力として ?−p(b)。
を考える。計算処理部は、
5G(p(b)、O)
という形でSGの実行に入る。に=1の状態で。
第1図の1行目が実行される。まずx=bとなり、次に
1行目布辺の先頭のq (Y)の実行でY = aとな
り、1行目布辺の2初目のr(Y)の実行でZ=aとな
り、副作用を伴なう5end(a、c)が実行される。
1行目布辺の先頭のq (Y)の実行でY = aとな
り、1行目布辺の2初目のr(Y)の実行でZ=aとな
り、副作用を伴なう5end(a、c)が実行される。
その後、s (x、y)の実行で、s(b。
a)が失敗してバックトラッキングが生じる。ブロック
23で1つ前に戻る処理がΩ=3から悲=1になるまで
行われ、再びq (Y)が実行されるが、この時t(4
1)=1となっているため、第1図の3行目が実行され
、Y=bとなる。その後、r(Y)が再び実行され、5
and(b、 c)を実行後、S(X。
23で1つ前に戻る処理がΩ=3から悲=1になるまで
行われ、再びq (Y)が実行されるが、この時t(4
1)=1となっているため、第1図の3行目が実行され
、Y=bとなる。その後、r(Y)が再び実行され、5
and(b、 c)を実行後、S(X。
Y)の実行も成功して終了する。この例では、バックト
ラッキング発生時に、既に実行済の5end(at c
)によって生じた副作用の取消しがなされていないとい
う問題がある。
ラッキング発生時に、既に実行済の5end(at c
)によって生じた副作用の取消しがなされていないとい
う問題がある。
第5図は、この問題を解決するために、本発明が導入し
た組込述語queueおよびdequeueを使用して
第1図のプログラムを改良したプログラムである。
た組込述語queueおよびdequeueを使用して
第1図のプログラムを改良したプログラムである。
第6図は本発明の一実施例であり、第2図の従来方式に
遅延実行用キュー6を加えたものである。
遅延実行用キュー6を加えたものである。
この遅延実行用キューの使用法を第4図の従来方式の処
理フローへの追加処理として以下に説明する。
理フローへの追加処理として以下に説明する。
(1)ブロック20の実行直前で、これから実行する素
命題q。の述語名がqueueか否かを判定し、que
ueの場合はその引数を実行遅延用キュー6に登録する
。
命題q。の述語名がqueueか否かを判定し、que
ueの場合はその引数を実行遅延用キュー6に登録する
。
(2)ブロック20の実行直前で、qkmがdeque
ueか否かの判定を行い、dequeueならば、実行
遅延用キュー6に登録された素命題を登録順に実行する
。
ueか否かの判定を行い、dequeueならば、実行
遅延用キュー6に登録された素命題を登録順に実行する
。
(3)ブロック23においてバックトラッキングの処理
を開始する時に、実行取消しの対象となったqueue
によって遅延実行用キュー6に登録された素命題を取り
除く。
を開始する時に、実行取消しの対象となったqueue
によって遅延実行用キュー6に登録された素命題を取り
除く。
従って、第6図の実施例を用いて、第5図のプログラム
を実行すれば、r (Y)の最初の実行では5end(
a、 c)はすぐには実行されず、その代りに遅延実行
用キュー6に登録された後、s(x、y)の実行の失敗
によるバックトラッキング処理で除去される。r(Y)
の2度目の実行で5end(b、 c)が登録され、d
equeueの実行により、遅延実行用キューから取出
されて実行される。
を実行すれば、r (Y)の最初の実行では5end(
a、 c)はすぐには実行されず、その代りに遅延実行
用キュー6に登録された後、s(x、y)の実行の失敗
によるバックトラッキング処理で除去される。r(Y)
の2度目の実行で5end(b、 c)が登録され、d
equeueの実行により、遅延実行用キューから取出
されて実行される。
このような計算処理方式により、副作用を伴う述語の実
行後の取消しと同じ効果を実現できる。
行後の取消しと同じ効果を実現できる。
以上説明した“queue”、 ”dequaus”
などはそれを取扱うO8のスーパーバイザマクロなどと
して使用することが効果的である。
などはそれを取扱うO8のスーパーバイザマクロなどと
して使用することが効果的である。
本発明によれば、プログラムの副作用を伴う部分の計算
処理を遅らせることができるため、論理型言語マシンに
お“けるバックトラッキング処理時の副作用の取消処理
が不要になるので、論理型言語マシンに特徴的なバック
トラッキングによる推論機能の利用が容易になる他、無
駄な処理の削除により処理効率が向上するという効果が
ある。
処理を遅らせることができるため、論理型言語マシンに
お“けるバックトラッキング処理時の副作用の取消処理
が不要になるので、論理型言語マシンに特徴的なバック
トラッキングによる推論機能の利用が容易になる他、無
駄な処理の削除により処理効率が向上するという効果が
ある。
また、従来論理言語とオブジェクト指向言語を結合した
システムに生じ勝ちな副作用とバックトラッキングとい
う2つの相反する課題を同時に解決するシステムを提供
するものであり、新たな計算機アーキテクチャをも提供
している。
システムに生じ勝ちな副作用とバックトラッキングとい
う2つの相反する課題を同時に解決するシステムを提供
するものであり、新たな計算機アーキテクチャをも提供
している。
第1図は従来のPrologプログラムの例、第2図は
従来のPrologマシンの一実施例のシステム構成図
、第3図はPrologプログラムにおける節の頭部の
述語名が同じ節の集合の一般形、第4図は第2図のよう
な従来方式によってPrologの節の素命題を計算す
る場合の処理の流れ、第5図は本発明の機能を利用した
Prologプログラムの例、第6図は本発明の一実施
例のシステム構成図である。 6・・・遅延実行用キュー。 第 1 口 F (X)ニー # (Yン、 と(Y)、S(
X、γ入) (L) 。 !r(b>。 r (1) : −5efLd (2! 、 c)。 5(vJ、w)。 第 2 口 ′M 5 図 F’ (X) ニー)(Y)、 ?(Y) 、 5(X
)Y)、 deyihe 。 シ(荻)。 1(bル 1(X):4a4cmg(,5end(ii、c))。 5(1r、11)。 VJt 口
従来のPrologマシンの一実施例のシステム構成図
、第3図はPrologプログラムにおける節の頭部の
述語名が同じ節の集合の一般形、第4図は第2図のよう
な従来方式によってPrologの節の素命題を計算す
る場合の処理の流れ、第5図は本発明の機能を利用した
Prologプログラムの例、第6図は本発明の一実施
例のシステム構成図である。 6・・・遅延実行用キュー。 第 1 口 F (X)ニー # (Yン、 と(Y)、S(
X、γ入) (L) 。 !r(b>。 r (1) : −5efLd (2! 、 c)。 5(vJ、w)。 第 2 口 ′M 5 図 F’ (X) ニー)(Y)、 ?(Y) 、 5(X
)Y)、 deyihe 。 シ(荻)。 1(bル 1(X):4a4cmg(,5end(ii、c))。 5(1r、11)。 VJt 口
Claims (1)
- プログラム部と組込述語部と計算処理部より成る言語マ
シンにおいて遅延実行用キューを設け、特定の素命題を
遅延実行用キューに登録するステップと該登録された素
命題を取出して実行するステップとその登録を取消すス
テップを有することを特徴とする計算処理方式。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60050425A JPS61210432A (ja) | 1985-03-15 | 1985-03-15 | 計算処理方式 |
GB08603266A GB2173614B (en) | 1985-03-15 | 1986-02-11 | Logic program processing method and system |
FR8601907A FR2578990B1 (fr) | 1985-03-15 | 1986-02-12 | Methode de traitement des calculs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60050425A JPS61210432A (ja) | 1985-03-15 | 1985-03-15 | 計算処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS61210432A true JPS61210432A (ja) | 1986-09-18 |
Family
ID=12858510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP60050425A Pending JPS61210432A (ja) | 1985-03-15 | 1985-03-15 | 計算処理方式 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPS61210432A (ja) |
FR (1) | FR2578990B1 (ja) |
GB (1) | GB2173614B (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3616740A1 (de) * | 1986-05-17 | 1987-11-19 | Heidenhain Gmbh Dr Johannes | Vorrichtung zur gewinnung von werkstueckkonturen |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2060225B (en) * | 1979-09-29 | 1983-05-25 | Plessey Co Ltd | Multi-programming data processing system process suspension |
DE3380643D1 (en) * | 1982-06-21 | 1989-11-02 | Ibm | Method and apparatus for restoring data in a computing system |
US4734848A (en) * | 1984-07-17 | 1988-03-29 | Hitachi, Ltd. | Combination reduction processing method and apparatus |
-
1985
- 1985-03-15 JP JP60050425A patent/JPS61210432A/ja active Pending
-
1986
- 1986-02-11 GB GB08603266A patent/GB2173614B/en not_active Expired
- 1986-02-12 FR FR8601907A patent/FR2578990B1/fr not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB8603266D0 (en) | 1986-03-19 |
GB2173614A (en) | 1986-10-15 |
FR2578990A1 (fr) | 1986-09-19 |
GB2173614B (en) | 1988-12-21 |
FR2578990B1 (fr) | 1991-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Saleh et al. | Explicit effect subtyping | |
JPS61210432A (ja) | 計算処理方式 | |
JPH0581069A (ja) | プログラムのデバツグ方法 | |
Lodaya et al. | Proof theory for exception handling in a tasking environment | |
JPH0588878A (ja) | Lisp命令実行方式 | |
JPH01224843A (ja) | 運用モード付エキスパートシステム構築用ツール | |
Carciofini et al. | LogLisp Programming System Users Manual | |
JPS608944A (ja) | 関数型マシンの終端再帰呼出し制御方式 | |
JPH02103638A (ja) | 組込み関数実行時の性能向上方式 | |
JPH01298444A (ja) | プログラム実行制御方式 | |
JP2682206B2 (ja) | 目的プログラムの最適化方式 | |
JPH03172934A (ja) | 言語間インタフェース | |
Harland et al. | Programming in Lygon: a system demonstration | |
JPH03233634A (ja) | 業務再処理方式 | |
JPH04209027A (ja) | ルール推論装置 | |
JPS58109947A (ja) | シミユレ−ト装置 | |
Kopetz et al. | Reliability and System Design | |
JPH04153741A (ja) | 被デバッグプログラムのデバッグにおける逆方向実行方式 | |
Santos | Denotational semantics using horn concurrent transaction logic | |
JPH04241628A (ja) | エキスパートシステム構築用シェルのロード方法 | |
JP2000242524A (ja) | プロセッサのソフトウエアシミュレータ | |
JPS5848154A (ja) | プログラム1ステツプ制御方式 | |
JPH03282735A (ja) | 並列処理システム | |
JPH03136131A (ja) | システムプログラム階層分離作成方式 | |
JPS61241844A (ja) | 情報処理装置 |