Thank you for the reply.


Regarding Lisp in Small Pieces .. The didactic approach appeals to me. and I will need LISP to integrate Squeak with Emacs via LSP (?)  
Thanks for the heads up.

I also noticed that the bottom of the OOPSLA has a bibliography, but that LISP book looks very good.

Regarding definitions...

"But if the language provides
reification of execution, activation records are perennial objects, i.e.
they can outlive the activation."

There is a lot to unpack there at the basic definition level.


Just guessing, but the "reification of execution" ARE the execution of a method, but stored as Objects in something called an activation record (activation record is distinct from the stack?)


Some assumptions I currently have...

1. there is one stack in Squeak. (I heard Tim complaining about a method call having to go all the way up the stack to be executed...that is the source of that assumption)
2. The activation records are "a table" containing "pointers" to the "perennial objects". 
3. I have no idea what an activation is. (the activation records are "chunks of a stack" that can be put on the one stack ?)


Interesting stuff, thank you.









---- On Sun, 24 Sep 2023 12:48:56 -0400 Boris Shingarov <boris@shingarov.com> wrote ---


I think the confusion results from believing random pages on the Internet:

> states that they are synonymous with stack-frames
If ALL the guy has seen is Algol-68 (which I mean inclusively, i.e.
counting dialects like BCPL, C, etc) then yes, because *in those
languages* there is no need to be conscious about the difference between
activation records and stack frames.  But if the language provides
reification of execution, activation records are perennial objects, i.e.
they can outlive the activation. Therefore they can't be stack frames --
otherwise at the end of the activation they are garbage.  So, very old
Smalltalks allocated activation records on the heap, these are called
"Contexts"; but this is much slower than stack frames.  OOPSLA99 talks
exactly about how to [internally] represent contexts on the stack but
still enjoy them behave correctly as perennial objects.

So, OOPSLA99 is correct.

> pointers for more basic reading on this stuff would be helpful
Hmmm... good books on higher-order programming languages count in the
hundreds, so I guess it depends on what you are into.  Still, one
excellent book is "LISP in Small Pieces" by Christian Queinnec.  Also
the paper "The Essence of Algol" by John C. Reynolds immediately comes
to mind.