[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


はじめに

履歴

プログラミング言語は満載した機能を特色の第一とするものではない。あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。今日使用されるほとんどの重要なプログラミングパラダイムを取り扱うのに充分柔軟な、実用的で効率のいいプログラミング言語を作成するにあたっても、構成方法に制約がなければ極めて少数の式構成規則で充分である。それはSchemeが証明している。

Schemeはラムダ演算におけるような第一級の手続きを組み込んだ最初のプログラミング言語のひとつであった。その結果、動的に型を生成する場合に静的スコープとブロック構造が有用であることが証明された。手続きをラムダ式とシンボルから切り離し、すべての変数に単一の静的環境を使用し、オペランドと同じ方法でオペレータの状況を評価した、初めての有力なLisp方言がSchemeであった。繰り返しを表現する場合に手続き呼び出しのみを使用することによって、終端再帰的手続き呼び出しが本質的に引数を渡すgotoであることが、Schemeでは強調されている。Schemeは、第一級の脱出手続きを採用して広く使用された最初のプログラミング言語であり、以前は順次的制御構造として知られていたものがすべてそれによって統合できた。次の改定ではCommon Lispの包括的演算法に基づいて、完全数と不完全数(3)の概念が導入された。最も新しい改定版では、Schemeは名前の衝突を起こさない(4)マクロをサポートする最初のプログラミング言語となり、それによって、充分な信頼性をもってブロック構造言語の文法を拡張できるようになった。

背景

Schemeの最初の記述は1975年に書かれた[SCHEME75]。1978年にはその改定報告書が発表された[SCHEME78]。これはScheme言語の発展を説明したもので、例えばMITによる処理系は革新的なコンパイラ[RABBIT]をサポートするように更新された。1981年と1982年には、MIT、Yale、Indianaの各大学での授業のためにそれぞれ異なるSchemeを使用するという、3つの別々のプロジェクトが開始した[REES82]、[MITSCHEME]、[SCHEME311]。1984年には、Schemeを使用したコンピュータ科学入門の教科書が出版された[SICP]。

Schemeがさらに普及するにしたがって、学生も研究者も、異なる場所で書かれたコードを理解するのが困難と感ずるまでに各種方言への分岐が始まった。1984年10月には、より良く、さらに広く受け入れられるSchemeの標準へ向けた作業を行なうために、Schemeの主な処理系を代表する15人が会議を開催した。この報告書[RRRS]は1985年の夏にMITとIndianaの各大学で出版された。1986年春[R3RS]と1988年春[R4RS]に、さらなる改定が行なわれた。本報告書は、1992年のXerox PARCにおける会議で合意されたそれ以後の改定が反映されている。

本報告書はSchemeコミュニティー全体に帰属することを意図している。したがってその全部もしくは一部のいずれも、対価を支払わずに複製することを許可するものである。特にScheme処理系の実装者は本報告書を出発点に使用して、必要に応じて変更を加えてマニュアルその他の文書に利用するように奨励する。

謝辞

次の諸氏の支援に対して謝意を表したい。Alan Bawden、Michael Blair、 George Carrette、Andy Cromarty、Pavel Curtis、Jeff Dalton、Olivier Danvy、Ken Dickey、Bruce Duba、Marc Feeley、Andy Freeman、Richard Gabriel、Yekta G\"ursel、 Ken Haase、Robert Hieb、Paul Hudak、Morry Katz、Chris Lindblad、Mark Meyer、Jim Miller、Jim Philbin、John Ramsdell、 Mike Shaff、Jonathan Shapiro、Julie Sussman、Perry Wagle、 Daniel Weise、Henry Wu、Ozan Yigit。Scheme 311第4版参照マニュアルのテ キストの使用を許可して下さった、Carol Fessenden、 Daniel Friedman、 Christopher Haynesの諸氏にお礼を申し上げる。TI Scheme Language Reference Manual[TIMANUAL85]のテキストの使用を許可して下さった、 Texas Instruments, Incにお礼を申し上げる。MIT Scheme[MITSCHEME]、 Scheme 84[SCHEME84]、Common Lisp[CLTL]、Algol 60[NAUR63]のマニュアルに影響を受けたことに謝意を表するのは、我々の喜びである。

本報告書をTeXで書くために多大な労力を費したBetty Dexterと、彼女の労苦の原因となったプログラムを設計したDonald Knuthにも謝意を表するものである。

マサチューセッツ工科大学人工知能研究所、インディアナ大学コンピュータ科学学部、オレゴン大学コンピュータおよび情報科学学部、NEC学術研究所からは、本報告書の作成に支援を受けた。MITの作業については部分的に、国防総省先端研究プロジェクト機関により、海軍研究契約N00014-80-C-0505号の業務の支援を受けた。インディアナ大学の作業については、NSF助成金NCS83-04567とNCS 83-03325による支援を受けた。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]