著者
天海良治
出版者
一般社団法人情報処理学会
雑誌
情報処理学会プログラミング研究会
巻号頁・発行日
pp.25-30, 1998
被引用文献数
1

TAO/ELISは, いまから10年ほど前に作られた記号処理専用ワークステーションである. Lisp マシン ELIS とその上で動作するマルチパラダイム言語 TAO で構成されている. ELIS はマイクロプログラム制御のタグアーキテクチャマシンで, TAO のインタプリタは直接 ELIS のマイクロプログラムで実装されている. 今回, このマイクロプログラムをC言語に変換することで, TAO を UNIX 上に移植した. パーソナルコンピュータのオペレーティングシステム FreeBSD で稼働している. Pentium ll 300MHzの計算機の上で, オリジナルの TAO/ELIS の2.5倍以上の性能が得られた.
著者
吉田 雅治 天海良治 山崎 憲一 中村 昌志 竹内 郁雄 村上 健一郎
雑誌
情報処理学会研究報告計算機アーキテクチャ(ARC)
巻号頁・発行日
vol.1995, no.98(1995-ARC-114), pp.17-24, 1995-10-19

記号処理システムの核となるプロセッサSILENTのアーキテクチャ,実験機構成,及び簡単な性能評価について述べる.SILENTは記号処理のみならず,知能ロボットやコンピュータグラフィックス等の分野への適応も考慮し,画像生成計算機SIGHT?2で提案したTARAI演算器と密結合マルチプロセッサを構成することを前提としている.SILENT?CPUは0.7μCMOSゲートアレーで作成した.LSIの回路規模は97kgates,33MHzで動作している.SILENTアーキテクチャの性能評価のために実験機を作成し,マイクロプログラムでLispの処理系を実装した.関数呼び出しのオーバーヘッドを計測するtarai関数の実行時間を比較したところ,SILENTはELISの10倍以上の性能を得た.
著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.40, no.6, pp.2743-2754, 1999-06-15
被引用文献数
2

本論文では Lispをべースとして論理型プログラミングを融合したマルチパラダイム言語TAOについて述べる. これまで研究されたきた融合型言語においては 純粋な関数型言語と論理型言語を融合するものが多かったが TAOではすべてのLispプリミティブと論理型プログラミングを利用できる. TAOでは Lispと論理型言語の実行機構の類似性に着目した融合を行う. ここで 実行機構の類似性とは 状態変数と論埋変数 関数呼び出しと述語呼び出し 大域的脱出とバックトラックなどを指す. たとえば catch/throwのような脱出とバックトラックには類似性があり バックトラックを大域脱出の一種と考えることができる. これにより バックトラックが Lispの大域脱出に関するさまざまなプリミティブを自然に利用できるようになる.This paper describes a Lisp-based multi-paradigm programming language TAO that incorporates a logic programming (LP) paradigm. Whereas previous multi-paradigm languages only supported purely functional and LP facilities, TAO supports all Lisp primitives as well as LP facilities. This amalgamation of Lisp and LP is done by making use of the similarities in their execution mechanisms, giving a natural semantics to the amalgamation. The similarities include state vs. logic variables, function vs. predicate calling, and non-local exit vs. backtracking. For example, the similarity between non-local exit (catch/throw) and backtracking enables backtracking to be regarded as a kind of non-local exit, so that backtracking can use all Lisp facilities which support non-local exit.
著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.42, no.7, pp.70-83, 2001-07-15

Lispに論理型言語の機能を融合する場合には,論理型言語特有の内部データ構造である未定義値(UNDEF)と,参照(REF)をどのように表現するかということが問題となる.本論文では,我々がTAO86およびTAOという2つの言語で採ったアプローチについて述べる.UNDEFには,必然的に構造データ中の「番地」という概念がともなうが,これをLispからどのように隠蔽するかがポイントとなる.TAO86では,UNDEFを即値とし,REFを処理系が自動的にたどる方法によって実装を行った.これにより言語が単純なものとなるが,いくつかのケースにおいては特有の問題を生じる.たとえば,REFやUNDEFを含む構造データの同一性を判定するために,アドホックな関数を必要とする.TAOでは同様の方法を採りつつも,論理変数を述語の値として返す関数型の機能,パターンマッチによる同一性の判定の機能などを用いて,これらの問題を解決する.また,本論文ではTAOのタグ割当てなど,実装の詳細についても述べる.Lisp can have much expressive power by incorporating logic-programming facilities. In this paper, we discuss implementation issues of this incorporation, especially for internal data representation such as undefined value (`UNDEF') and reference (`REF'). We designed two Lisp-based multi-paradigm programming languages, TAO86 and TAO, to solve these issues. In TAO86, UNDEF is a first-class immediate value, and REF is dereferenced by the system automatically. This solution is quite simple but did not have enough power to handle the whole set of data so that TAO86 provides some adhoc builtin functions. TAO, a thoroughly redesigned successor of TAO86, has new features such as functional predicates and pattern-matching mechanism that give an elegant solution of TAO86 issues. This paper also describes the implementation of internal data representation and data handling mechanisms in detail.
著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.41, no.1, pp.136-147, 2000-01-15
被引用文献数
1

TAOは,関数型,論理型,オブジェクト指向のプログラミング機能を持つマルチパラダイム言語である.TAOの論理型計算は次の2つの特徴を持つ.パターンマッチとガードによって節を選択し,深いバックトラックは陽に呼び出す.関数と述語は互い呼び出すことができ,任意のデータを渡せる.本論文では,このような論理型計算機構を実装するための抽象マシンを提案する.この抽象マシンは,WAMをベースとしており,以下のような特徴を持つ.1)構造データをスタックでなくヒープ上に表現する.2)単一化やパターンマッチでは,レジスタを極力使用しない.3)プロセススイッチする可能性がある時点では,データを必ず無矛盾に保つ.また,他のProlog処理系と比較評価し,Lispとの融合によって性能が劣化しないことを示す.TAO is a Lisp-based multi-paradigm programming language whichincorporates functional, logic and object-oriented programmingparadigms. This paper describes the implementation of logic computation in TAO, which is different from Prolog in thefollowing two points.A clause is selected according to pattern matching and guard testing,and deep backtracking is invoked explicitly.Functions and predicates can invoke each other and pass any type ofdata between them.We propose an abstract machine, based on WAM (Warren's abstract machine), which has the following features.1) Structured data are represented in heap memory instead of stack.2) Almost no extra registers are used at unification and pattern maching.3) Memory configuration is consistent at any potential process-switching point.We also evaluated our implementation comparing with other Prologprocessors, and showed that the paradigm fusion does not degrade theperformance.
著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.43, no.1, pp.112-123, 2002-01-15

本論文では,Lispでオブジェクト指向プログラミングを行うための,Lispの拡張について述べる.本論文で提案する言語TAOは,ポリシーとメカニズムを分離するという考えに基づいて設計されており,たとえば,クラスや継承といったポリシーは提供しない.TAOは,オブジェクト指向計算のための最小限のメカニズムと,ポリシーを構築するためのメカニズムだけを備える.メカニズムは,Lispの環境とラムダ式を自然に拡張することにより導入される.ユーザは,これらを用いてTAO上にさまざまなポリシーを構築できる.本論文では,一例として,単純継承と委譲の構築例を示す.また,実装についても述べ,評価を行い,TAOの提供するメカニズムがいずれも十分な性能を達成していることを示す.This paper describes an extension of Lisp to incorporateobject-oriented programming into Lisp.A symbolic processing languageTAO, proposed in this paper, is designed based on policy/mechanismseparation principle where mechanisms support essential primitives forobject-oriented computation and policies, such as class definition andinheritance, determines how mechanisms are managed.The mechanisms areintroduced naturally by extending the Lisp's concept of environmentand lambda expression.By using these mechanisms, a TAO user canconstruct his/her own policy, such as single inheritance and simpledelegation which are shown in this paper as an example.We describe theimplementation of TAO and evaluate it using some benchmark programs,and as a result, we show that these primitives are efficient enough.