-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathintro.tex
82 lines (50 loc) · 7.45 KB
/
intro.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
\clearextrapart{概述}
\label{historysection}
程序设计语言的设计不应该是特征的堆砌,而应消除那些需要依赖于多余特征的弱点和局限。Scheme语言证明,极少的表达式构造规则和不加限制的表达式复合方式可以构造出实用而高效的程序设计语言,其灵活性足以支持今天的大部分主流编程模型。
Scheme是最早的像在lambda演算里一样提供了第一级过程的程序设计语言之一,并由此在动态类型的语言中提供了有用的静态作用域规则和块结构的特征。在Lisp的主要方言中,Scheme第一次使过程有别于lambda表达式和符号,为所有变量使用单一的词法环境,在确定运算符的位置时采用与确定运算对象位置一样的方式。Scheme完全依赖过程调用来表示迭代,并以此强调,尾递归过程调用在本质上就是传递参数的goto。Scheme是第一种被广泛使用的,采纳第一级逃逸过程(escape procedure)的程序设计语言,通过第一级逃逸过程可以合成所有已知的顺序控制结构。Scheme的后续版本引入了精确和非精确数的概念,这是CommonLisp语言通用算术功能的扩展。最近,Scheme成为了第一种支持卫生宏(hygienic macro)的程序设计语言,该机制允许我们以一种一致和可靠的方式扩展块结构语言的语法。
\subsection*{指导原则}
为帮助指导标准化的工作,编辑采纳了如下的一系列原则。正如\rrs{5}~\cite{R5RS}定义的Scheme语言,本报告描述的语言致力于:
\begin{itemize}
\item 允许程序员互相阅读别人的代码,允许能被任何符合标准的Scheme实现执
行的可移植程序的开发;
\item 得益于它简单的力量,只有少量有用的核心形式和过程,并且在它们如何
组合方面没有不必要的限制;
\item 允许程序定义新的过程和新的语法形式;
\item 支持以数据的形式呈现程序源代码;
\item 使过程调用足够强大以表达任意形式的顺序控制,也允许在不使用全局程
序变换的情况下执行非本地控制操作;
\item 允许有趣的纯函数式程序无限期运行而不被中断且在有限内存的机器上不
会内存不足;
\item 允许教育工作者在各个层次用各种教育方法使用本语言去有效地进行编程
教学;并
\item 允许研究工作者使用这门语言去探索编程语言的设计,实现和语义。
\end{itemize}
此外,本报告致力于:
\begin{itemize}
\item 允许程序员创建和分发大量的程序和库,比如:Scheme要求的在不修改的情况下在各个Scheme实现中运行的实现;
\item 通过任意作用域的过程和卫生宏以及允许程序定义卫生弯曲(hygiene-bending)和卫生破坏(hygiene-breaking)的语法抽象和新的独特的数据类型来更全面地支持程序,语法和数据抽象;
\item 允许程序员在一定程度上依赖足够确保类型安全的自动的运行时类型和边界检查;且
\item 允许实现在不要求程序员使用实现定义的运算符和声明的情况下生成高效的代码。
\end{itemize}
尽管在\rrs{5}表述的Scheme中编写可移植的程序是可能的,且在这篇报告之前也确实有可移植的程序被写出,但是许多Scheme程序是不可移植的,这主要是因为标准库的缺乏和繁多的实现定义的语言扩展。
通常,Scheme应当包含能够编写各种库程序的积木,包括以提高库和用户程序的
可移植性(portability)和可读性(readability)为目的的常用的用户层特性,
并排除可以在单独库中轻松实现的不常用的特性。
本报告描述的语言同样致力于在不违背上述原则和语言未来发展的情况下尽可能与用\rrs{5}表述的Scheme编写的程序反向兼容。
\subsection*{致谢}
许多人对本版本的报告做出了有意义的贡献。我们尤其感谢Aziz Ghuloum和André van Tonder贡献的库系统的参考实现。我们感谢Alan Bawden,John Cowan,Sebastian Egner,Aubrey Jaffer,Shiro Kawai,Bradley Lucier和André van Tonder在语言设计上的洞察力。Marc Feeley,Martin Gasbichler,Aubrey Jaffer,Lars T Hansen,Richard Kelsey,Olin Shivers和André van Tonder编写了用于本报告文本直接录入的SRFIs。Marcus Crestani,David Frese,Aziz Ghuloum,Arthur A. Gleckler,Eric Knauel,Jonathan Rees和André van Tonder细致彻底地校对了本报告的早期版本。
我们同样感谢下面这些人对本报告的帮助: Lauri Alanko,Eli Barzilay,Alan Bawden,Brian C. Barnes,Per Bothner,Trent Buck,Thomas Bushnell,Taylor Campbell,Ludovic Courtès,Pascal Costanza,John Cowan,Ray Dillinger,Jed Davis,J.A. “Biep” Durieux,Carl Eastlund,Sebastian Egner,Tom Emerson,Marc Feeley,Matthias Felleisen,Andy Freeman,Ken Friedenbach,Martin Gasbichler,Arthur A. Gleckler,Aziz Ghuloum,Dave Gurnell,Lars T Hansen,Ben Harris,Sven Hartrumpf,Dave Herman,Nils M. Holm,Stanislav Ievlev,James Jackson,Aubrey Jaffer,Shiro Kawai,Alexander Kjeldaas,Eric Knauel,Michael Lenaghan,Felix Klock,Donovan Kolbly,Marcin Kowalczyk,Thomas Lord,Bradley Lucier,Paulo J. Matos,Dan Muresan,Ryan Newton,Jason Orendorff,Erich Rast,Jeff Read,Jonathan Rees,Jorgen Schäfer,Paul Schlie,Manuel Serrano,Olin Shivers,Jonathan Shapiro,Jens Axel Søgaard,Jay Sulzberger,Pinku Surana,Mikael Tillenius,Sam Tobin-Hochstadt,David Van Horn,André van Tonder,Reinder Verlinde,Alan Watson,Andrew Wilcox,Jon Wilson,Lynn Winebarger,Keith Wright和Chongkai Zhu。
我们同样感谢下面这些人对本报告以前版本的帮助: 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ürsel,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。
我们感谢Carol Fessenden,Daniel Friedman和Christopher Haynes,他们允许
我们使用Scheme 311第4版参考手册的内容。我们感谢德州仪器公司(Texas
Instruments, Inc.)允许我们使用《TI Scheme语言参考手册》({\em TI
Scheme Language Reference Manual})~\cite{TImanual85}的内容。我们衷
心感谢MIT Scheme~\cite{MITScheme},T~\cite{Rees84},Scheme
84~\cite{Scheme84},Common Lisp~\cite{CLtL},Chez Scheme~\cite{csug7},
PLT~Scheme~\cite{mzscheme352}和Algol 60~\cite{Naur63}的手册对本报告的影响。
\vest{}我们也感谢Betty Dexter,她在将本报告设为\TeX{}格式的工作中做出了杰出的贡献;感谢高德纳(Donald Knuth),他设计的程序给Betty添了不少麻烦。
\vest The Artificial Intelligence Laboratory of the Massachusetts Institute of Technology, the Computer Science Department of Indiana University, the Computer and Information Sciences Department of the University of Oregon和the NEC Research Institute支持了本报告的预备工作。The Advanced Research Projects Agency of the Department of Defense根据Office of Naval Research的N00014-80-C-0505号合同为MIT的工作提供了部分支持。NSF的NCS 83-04567和NCS 83-03325号基金为Indiana University的工作提供了支持。
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "r6rs"
%%% End: