3 ms·
It's probably even more humorous if you understand that Scheme was created because Gerald Jay Sussman and Guy Steele wanted a way to experiment with Carl Hewitt
by deckard1 4y ago
It's probably even more humorous if you understand that Scheme was created because Gerald Jay Sussman and Guy Steele wanted a way to experiment with Carl Hewitt's actor model, which is based on message passing. Which, itself, was based on Simula, Smalltalk, etc.
Sussman and Steele came up with a way to do lexical scoping in a LISP, thus closures in LISP were born. They then acknowledged that actors and closures are essentially the same concept (I'm assuming with mutation, i.e. Scheme's "set!" and friends because otherwise message passing to update independent actors would be meaningless).
And to put the cherry on the top, what do Java, Common Lisp, and Scheme all have in common? Guy L. Steele worked on the language specs of all of those. Which makes the dig against Java a bit hilarious, though understandable.
http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03237.html http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...
> [...] And by such examples one may be led into the
functional style of programming, which is possible
within Lisp/Scheme, though not required.
- cutler 4y agoWasn't it specifically garbage collection that he contributed?
- deckard1 4y agonope. GC is thanks to John McCarthy, himself, when he invented LISP around 1959.
- bsaul 4y ago"actors and closure are the same concept": Do you have a good article explaining this ? To me actors is mainly a pattern for dealing with concurrency, and closures seem completely unrelated. But i assume i'm missing something...
- drnewman 4y agoThe Actor model is interesting because it wasn't originally a model for concurrency. It expresses concurrency semantics naturally, which is why it's been used that way. But, believe it or not, originally it was a mathematical theory of computing comparable to the Lambda Calculus. If you'd like to explore this space look up the original papers by Carl Hewitt. He's also written some more recent papers on the subject. Also the "Lambda Papers" by Sussman and Steele are instructive. They deal with implementing various control structures and computational patterns with lambdas. Unfortunately there isn't a "Lambda the Ultimate Object" which could be written. I'm guessing they didn't go there because at the time OOP hadn't taken off and may have seemed obvious to the people who where involved in Lisp/OOP at the time. In his essay "Objects Have not Failed" Guy Steele addresses the history that deckard1 mentions. [1] "Viewing Control Structures as Patterns of Passing Messages" - Carl Hewitt [2] "Actor Model of Computation: Scalable Robust Information Systems" - Carl Hewitt [3] The Lambda Papers - https://research.scheme.org/lambda-papers/ https://research.scheme.org/lambda-papers/ [4] "Objects Have Not Failed" - Guy Steele, https://www.dreamsongs.com/ObjectsHaveNotFailedNarr.html https://www.dreamsongs.com/ObjectsHaveNotFailedNarr.html