[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

implementation issues (was: types of people)



Date: Wed, 30 Aug 1995 01:31:59 -0300
From: "Jecel Mattos de Assumpcao Jr." <jecel@lsi.usp.br>
To: self-interest@self.sunlabs.com
Subject: implementation issues (was: types of people)

rainer@physik3.gwdg.de (Rainer Blome) mentioned a few ways in which Self
could become more scheme-like, including the tail-recursion optimization.
"ian (i.r.) woollard" <wolfe@bnr.ca> also mentioned this optimization in
another message.

While this optimization is invisible in a normal execution of a program,
if you get an exception and reflect on the activations ( call the
debugger, for example ) you will find that a large chunk of your stack
is missing. This small deviation from strict source semantics is
against the current Self philosophy.

I am including a more general "tail-call" optimization in tinySelf as
it reduces context allocation ( I use the heap rather than stacks :-( )
and enhances parallelism in my active object model. When I get some
numbers on this I will post them here.

lpd@aladdin.com (L. Peter Deutsch) didn't like the suggestion of
macros ( I don't either ) and talked about the Beta way. I have
just finished the Beta tutorial and found it really neat how it
doesn't need blocks. I wish objects could be used in the same way
in Self, but it is not possible. It only works because Beta is
a lexically scoped language, while Self is a dynamically scoped
one.

About non-LIFO blocks: Self doesn't need them as much as Smalltalk
as it is so easy to create unique inline objects with their own
methods and pass them around instead.

regards,
-- Jecel