History of the Scheme programming language: Difference between revisions

Content deleted Content added
Mgskil (talk | contribs)
Mgskil (talk | contribs)
Line 47:
PLASMA's use of lexical scope was similar to the lambda calculus. Sussman and Steele decided to try to model Actors in the lambda calculus. They called their modeling system Schemer, eventually changing it to Scheme to fit the six-character limit on the [[Incompatible_Timesharing_System|ITS]] file system on their DEC [[PDP-10]]. They soon concluded Actors were essentially closures that never return but instead invoke a [[continuation]], and thus they decided that the closure and the Actor were, for the purposes of their investigation, essentially identical concepts. They eliminated what they regarded as redundant code and, at that point, discovered that they had written a very small and capable dialect of Lisp. Hewitt remained critical of the "hairy control structure" in Scheme<ref>Carl Hewitt. "Viewing Control Structures as Patterns of Passing Messages" AI Memo 410. December 1976. Journal of Artificial Intelligence. June 1977.</ref> and considered primitives (e.g., <code>START!PROCESS</code>, <code>STOP!PROCESS</code> and <code>EVALUATE!UNINTERRUPTIBLY</code>) used in the Scheme implementation to be a backward step.
 
25 years later, in 1998, Sussman and Steele reflected that the minimalism of Scheme was not a conscious design goal, but rather the unintended outcome of the design process. "We were actually trying to build something complicated and discovered, serendipitously, that we had accidentally designed something that met all our goals but was much simpler than we had intended.... we realized that the lambda calculus—a small, simple formalism—could serve as the core of a powerful and expressive programming language." <ref name="revisited"/>
 
On the other hand, Hewitt remained critical of the lambda calculus as a foundation for computation writing "The actual situation is that the λ-calculus is capable of expressing some kinds of sequential and parallel control structures but, in general, not the concurrency expressed in the Actor model. On the other hand, the Actor model is capable of expressing everything in the λ-calculus and more." He has also been critical of aspects of Scheme that derive from the lambda calculus such as reliance on continuation functions and the lack of exceptions.<ref>Carl Hewitt [http://arxiv.org/abs/0907.3330 ActorScriptTM: Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing] ArXiv 0907.3330</ref>