smalltalk-tng
view doc/redb.lyx @ 323:454c18798969
merger
| author | Tony Garnock-Jones <tonygarnockjones@gmail.com> |
|---|---|
| date | Tue Feb 07 11:34:20 2012 -0500 (3 months ago) |
| parents | |
| children |
line source
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 221
3 \textclass article
4 \language english
5 \inputencoding auto
6 \fontscheme palatino
7 \graphics default
8 \paperfontsize default
9 \spacing single
10 \papersize a4paper
11 \paperpackage widemarginsa4
12 \use_geometry 0
13 \use_amsmath 0
14 \use_natbib 0
15 \use_numerical_citations 0
16 \paperorientation portrait
17 \secnumdepth 3
18 \tocdepth 3
19 \paragraph_separation indent
20 \defskip medskip
21 \quotes_language english
22 \quotes_times 2
23 \papercolumns 2
24 \papersides 1
25 \paperpagestyle default
27 \layout Title
29 A Reflective, Eager, Distributed Blue Calculus
30 \layout Author
32 Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
33 \newline
34 Michael Bridgen <mikeb@squaremobius.net>
35 \layout Date
37 17 October, 2004
38 \layout Abstract
40 Boudol's blue calculus (the
41 \begin_inset Formula $\pi^{*}$
42 \end_inset
44 -calculus) allows a natural embedding of both the call-by-name
45 \begin_inset Formula $\lambda$
46 \end_inset
48 -calculus and Milner's
49 \begin_inset Formula $\pi$
50 \end_inset
52 -calculus.
53 We extend the blue calculus with eager (call-by-value) parallel evaluation,
54 a notion of evaluation location similar to that of the distributed join
55 calculus, and basic lexical reflection facilities to arrive at an implementable
56 distributed process language rich enough to act as the virtual machine
57 for a Self-like object-oriented environment.
58 \layout Section
60 Introduction
61 \layout Standard
63 Our goal is an implementable, reflective, dynamic, efficient concurrent
64 process language that can readily support object-oriented features in the
65 style of Self
66 \begin_inset LatexCommand \cite{ungar91self}
68 \end_inset
70 or SmallTalk
71 \begin_inset LatexCommand \cite{goldberg83smalltalk}
73 \end_inset
75 while not precluding the use of ML-like functional features.
76 The language should be rich enough to support its own development and runtime
77 environment, like SmallTalk, but should be as concurrent as the
78 \begin_inset Formula $\pi$
79 \end_inset
81 -calculus
82 \begin_inset LatexCommand \cite{milner91polyadicpi}
84 \end_inset
86 .
88 \begin_inset Marginal
89 collapsed false
91 \layout Standard
93 Mention Obliq?
94 \end_inset
96 Like the distributed join calculus
97 \begin_inset LatexCommand \cite{join-tutorial}
99 \end_inset
101 , our language should provide a notion of the location in which a computation
102 is proceeding, and an idea of the location to which messages sent along
103 a name should be directed.
104 \layout Standard
106 SmallTalk and Self both, to a point, provide a completely uniform universe
107 of objects to the programmer.
108 The illusion breaks down once the programmer starts to examine the details
109 of the virtual-machine such as call frames, processes, methods, blocks
110 and bytecodes.
111 The innermost parts of a Self or SmallTalk system cease being data (objects),
112 and start being programs (processes).
113 The line between the two levels is quite sharply defined.
114 SmallTalk-like virtual machines are very similar to traditional sequential
115 stack-based computers, in that they have a stack and a small set of registers,
116 and in that any multiprocessing is a construction layered atop the basic
117 sequential machine.
118 Our language is intended to provide a replacement for the low-level virtual
119 machine part of a SmallTalk-like system that does well what SmallTalk virtual
120 machines do poorly - that is, integrate concurrent and distributed features
121 with traditional object-oriented and functional programming - and provides
122 a definition
123 \begin_inset Marginal
124 collapsed false
126 \layout Standard
128 a description?
129 \end_inset
131 of the lowest-level behaviour of the language that is amenable to various
132 kinds of formal analysis.
133 \layout Standard
135 While SmallTalk provides an almost uniform object-oriented universe at levels
136 above the virtual machine, our language is to provide a uniform process-oriente
137 d universe at the virtual machine level.
138 An object-oriented description of the system can then be built atop the
139 virtual machine in exactly the way current SmallTalk and Self systems build
140 on their virtual machines.
141 \layout Standard
143 We begin in section
144 \begin_inset LatexCommand \ref{sec:The-Blue-Calculus}
146 \end_inset
148 by briefly reviewing Boudol's blue calculus.
149 Section !!! alters the basic calculus to perform call-by-value evaluation.
150 Section !!! further extends the calculus to evaluate subexpressions of
151 a combination in parallel.
152 Section !!! adds a notion of location to the calculus.
153 Section !!! introduces a few small features essential to reflection, which
154 is finally introduced in section !!!.
155 Section
156 \begin_inset LatexCommand \ref{sec:Related-Work}
158 \end_inset
160 touches on related work, and section
161 \begin_inset LatexCommand \ref{sec:Conclusion}
163 \end_inset
165 concludes the paper.
166 \layout Section
168 The Blue Calculus
169 \layout Standard
172 \begin_inset LatexCommand \label{sec:The-Blue-Calculus}
174 \end_inset
176 Boudol's blue calculus (the
177 \begin_inset Formula $\pi^{*}$
178 \end_inset
180 -calculus)
181 \begin_inset LatexCommand \cite{boudol97picalculus}
183 \end_inset
185 allows a natural embedding of both the call-by-name
186 \begin_inset Formula $\lambda$
187 \end_inset
189 -calculus and Milner's
190 \begin_inset Formula $\pi$
191 \end_inset
193 -calculus.
194 It makes a good foundation for our language - it supports both functional
195 and process-oriented styles of computation, provides a syntactic distinction
196 avoiding the problem of full distributed input capability, and can be readily
197 extended with lexical reflection and with locations in the style of the
198 distributed join calculus.
199 \layout Section
201 Related Work
202 \layout Standard
205 \begin_inset LatexCommand \label{sec:Related-Work}
207 \end_inset
209 Several candidate systems besides the blue calculus were examined as potential
210 starting points for this work.
211 Cardelli's mobile ambients
212 \begin_inset LatexCommand \cite{CardelliGordon98:ambients}
214 \end_inset
216 provide a suitable notion of location that could be extended with reflective
217 capabilities, but the language leaves the routing of messages in the hands
218 of the programmer, which seems too low-level for simple efficient implementatio
219 n.
220 Cardelli's Obliq system
221 \begin_inset LatexCommand \cite{cardelli95language}
223 \end_inset
225 provides a high-level account of distributed object-oriented computation,
226 but does not map well to a simple implementation - it is too high-level.
227 Fournet's distributed join calculus
228 \begin_inset LatexCommand \cite{FournetGonthier96,join-tutorial,Fournet98:PhD}
230 \end_inset
232 provides a good treatment of message routing and process location while
233 also providing an Actor-like
234 \begin_inset LatexCommand \cite{agha86actors}
236 \end_inset
238 semantics, but ties together the notion of name definition and message
239 reception in a way that makes reflection difficult.
240 \layout Standard
242 [[Current work in the SmallTalk community
243 \begin_inset LatexCommand \cite{salzman04pmd,ingalls97squeak}
245 \end_inset
247 is based on traditional virtual machines.]] Even Slate, a
248 \begin_inset Quotes eld
249 \end_inset
251 clean-slate SmallTalk
252 \begin_inset Quotes erd
253 \end_inset
255 , is based around an ad-hoc byte-coded virtual machine, despite its stated
256 goals of integrated concurrent and distributed programming.
257 \begin_inset Marginal
258 collapsed false
260 \layout Standard
262 check the goals!
263 \end_inset
266 \layout Section
268 Conclusion
269 \layout Standard
272 \begin_inset LatexCommand \label{sec:Conclusion}
274 \end_inset
277 \layout Standard
280 \begin_inset LatexCommand \BibTeX[acm]{/Users/tonyg/Documents/tonyg}
282 \end_inset
285 \the_end
