Linear Lisp -- Conclusions and Previous Work
Conclusions and Previous Work
結論と先の研究
Some have suggested that garbage collection not be done at all [White80] or after the program has finished [Moon84] (comment on the Boyer benchmark).
そのガベージコレクションは全く終わっていなくても[White80]プログラムが終わっていても何人かによって提案されました(Boyerベンチマークのコメント)。
Linear Lisp provides a hyper-clean environment in which garbage is never produced, and therefore garbage collection is not necessary.
Linear Lispはゴミが決して生成されない非常にきれいな環境を提供します、そしてそれ故にガベージコレクションは必要ありません。
Hash consing was invented by Ershov for the detection of common subexpressions in a compiler [Ershov58] and popularized by Goto for use in a Lisp-based symbolic algebra systems [Goto74] [Goto76] [Goto80].
ハッシュコンシングはErshovによってコンパイラの一般の部分式の検出のために考案され、GotoによってLispベース記号代数システムで使用するために普及されました。
While a hash-consing system with reference count management can be used to implement a functional (applicative) subset of Lisp with the same efficiency shown here, we believe that our Linear Lisp Machine is the first efficient implementation which allows for (linear) side-effects such as RPLACX.
そのうえ参照カウント管理のハッシュコンシングシステムはここで示された同じ効果を備えたLispの関数(適応)部分集合を実装するのに使用することができます、私達は私達のLinear LispマシンはRPLACXのような(線形)副作用を許した最初の効果的な実装であると思います。
See [Baker92] for a "warp speed" implementation of the Gabriel "Boyer" benchmark using hash consing.
Gabrielの「Boyer」ベンチマークを使用したハッシュコンシングの「ワープスピード」実装のために[Baker92]を見てください。
Linear Lisp is an ideal environment for symbolic algebra, since it provides the efficiencies of sharing, including fast copying and fast equality checking [Goto76], without the problems.
Linear Lispは記号代数の理想的な環境です、それは共有の効率を提供するので、速いコピーと速い等価性チェックを含みます、問題無しに。
For example, the Macsyma symbolic algebra system can represent the symbolic determinant of an nxn matrix with O($n^3$) cons cells, even though this expression prints out with O(n!) terms.
例えば、Macsyma記号代数システムはO(n^3)のコンスセルをもつn×n行列の記号行列式を表現することが出来ます、この式の印字がO(n!)であっても。
Furthermore, Linear Lisp allows for destructive operations on expressions, which can sometimes be more efficient [Gabriel85] [Fateman91], yet these destructive operations are completely safe.
さらに、Linear Lispは式で破壊的操作を許します、それは時にはより効果的です、まだこれらの破壊的操作は完全に安全です。
While our Linear Lisp cannot support laziness, because CONS is transitively strict in both arguments, it does support a mild form of side-effects.
そのうえ私達のLinear Lispは遅延をサポートしません、CONSは両方の項で推移的に厳密です、それは副作用の緩やかな形をサポートします。
Linear Lisp RPLACX cannot be used to produce (visible) sharing, and hence requirements for "object identity" expressed in [Baker93ER] are vacuously met for cons cells.
Linear LispのRPLACXは(見える)共有を生成することができません、そして故に[Baker93ER]で「オブジェクトアイデンティティー」の必要条件をぼんやりと満たします。
These cells live in a twilight zone between functional and non-functional data; any "side-effects" to the data are not really "side"-effects because they are not visible through any other pointer alias.
これらのセルは機能的と非機能的なデータの間の中間地点で生きています:データへのどんな「副作用」もそれらは他のどのポインタエイリアスでも見えないので本当の「副」作用ではありません。
[Myers84] describes a scheme for implementing certain imperative data structures efficiently using applicative data structures.
[Myers84]は実装の応用データ構造を効果的に使用する確かな必須のデータ構造のための仕組を述べます。
We believe that the implementation of side-effects in Linear Lisp automatically produces the efficiency claimed by his scheme, without translating the program into applicative form.
私達はそのLinear Lispの副作用の実装が彼の仕組によって自動的に効果的な主張を生産すると信じます、応用の形へのプログラムの変換なしに。
[Harms91] discusses the advantages of unity reference count data structures and swapping for efficient programming of abstract data types, although he utilizes notions as "unshared" or "non-aliased" instead of unity reference counts.
[Harms91]は単一参照カウントデータ構造と抽象データ型の効果的なプログラミングのスワッピングの長所を議論します、たとえ彼が単一参照カウントの代わりに「非共有」や「非エイリアス」のような概念を利用しても。
[Kieburtz76] also advocates the use of hidden (unity reference count) pointers.
[Kieburtz76]もまた隠れた(単一参照カウント)ポインタの使用を主張します。
Pointer swapping can be used to minimize reference count overflows in systems with limited counts [Wise77], and to avoid appearing multiply referenced [Deutsch76].
ポインタスワッピングは限られたカウントのシステムで参照カウントオーバーフローを最小にするために使用することができます、そして現れるのを避けるために参照されて増加します。
Memory-to-memory swapping is a superior form of synchronization [Herlihy91], so we expect to see efficient swapping operations implemented on future shared-memory multiprocessors.
Memory-to-memoryスワッピングは優れた同期の方法です、なので私達は将来の共有メモリマルチプロセッサ上に実装された効果的なスワッピング操作を見ることを期待します。
Our Linear Lisp Machine consumes the programs it interprets, therefore requiring a private copy of the code in the manner of a combinator reduction machine.
私達のLinear Lispマシンはそれが解釈するプログラムを消費します、従ってコンビネータリダクションマシンの方法でコードのプライベートコピーが必要です。
The Linear Lisp COPY is more efficient, however, than the real copying utilized in combinator reduction machines.
しかしながら、コンビネータリダクションマシンで利用されて本当のコピーよりLinear LispのCOPYはより効果的です。
A machine which consumes its programs provides new insight into the mechanisms of instruction caches (see also [Kieburtz87]) and "index registers".
そのプログラムを消費するマシンはインストラクションキャッシュ([Kieburtz87も見てください])の仕組みと「インデックスレジスタ」への新しい見識を提供します。
Since index registers were invented in order to avoid side-effecting code, and since all modern CPU's utilize instruction caches, the index register is obsolete!
インデックスレジスタはコードの副作用を避けるために考案されたので、現代の全てのCPUはインストラクションキャッシュを使用します、インデックスレジスタはすたれました!
Linear logic provides a firm semantics for an unshared instruction stream, which could be destructively modified without causing havoc.
線型論理は非共有インストラクションストリームのためにしっかりした意味論を提供します、大混乱を引き起こすことなく破壊的な修正ができます。
Other approaches to "linear-like" logic include connection graphs [Bawden86], chemical abstract machines [Berry90], linear abstract machines [Lafont88] and interaction nets [Lafont90].
他の「線形のような」論理のアプローチは連結グラフを含みます、科学抽象的マシン、線形抽象マシンと相互作用網。
We have not yet integrated arrays into our Linear Lisp, so we cannot perform imperative array updates.
私達はまだ私達のLinear Lispへ配列を統合していません、なので私達は強制的な配列の更新を行うことが出来ません。
However, [Baker91SB] shows an efficient O(1) implementation of array updates for "single-threaded" programs.
しかしながら、[Baker91SB]「シングルスレッド」問題のための配列の効果的なO(1)の実装を示します。
Another approach would be to incorporate I-Structures [Arvind89] into Linear Lisp.
他のアプローチはLinear LispへのI構造を具体化するつもりです。
>> Lively Linear Lisp
>> Abstract
>> Introduction
>> A Linear Lisp Machine
>> A Linear Lisp Machine with FREE, COPY, EQUAL and Assignment
>> Dataflow-like Producer/Consumer EVAL
>> Reconstituting Trees from Fresh Frozen Concentrate
>> Linear Lisp EVAL
>> Implications for Real Multiprocessors
>> Conclusions and Previous Work
0 件のコメント:
コメントを投稿