Share to: share facebook share twitter share wa share telegram print page
Available for Advertising

History of the Scheme programming language

The history of the programming language Scheme begins with the development of earlier members of the Lisp family of languages during the second half of the twentieth century. During the design and development period of Scheme, language designers Guy L. Steele and Gerald Jay Sussman released an influential series of Massachusetts Institute of Technology (MIT) AI Memos known as the Lambda Papers (1975–1980). This resulted in the growth of popularity in the language and the era of standardization from 1990 onward. Much of the history of Scheme has been documented by the developers themselves.[1]

Prehistory

The development of Scheme was heavily influenced by two predecessors that were quite different from one another: Lisp provided its general semantics and syntax, and ALGOL provided its lexical scope and block structure. Scheme is a dialect of Lisp but Lisp has evolved; the Lisp dialects from which Scheme evolved—although they were in the mainstream at the time—are quite different from any modern Lisp.

Lisp

Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT). McCarthy published its design in a paper in Communications of the ACM in 1960, entitled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"[2] (Part II was never published). He showed that with a few simple operators and a notation for functions, one can build a Turing-complete language for algorithms.

The use of s-expressions which characterize the syntax of Lisp was initially intended to be an interim measure pending the development of a language employing what McCarthy called "m-expressions". As an example, the m-expression car[cons[A,B]] is equivalent to the s-expression (car (cons A B)). S-expressions proved popular, however, and the many attempts to implement m-expressions failed to catch on.

The first implementation of Lisp was on an IBM 704 by Steve Russell, who read McCarthy's paper and coded the eval function he described in machine code. The familiar (but puzzling to newcomers) names CAR and CDR used in Lisp to describe the head element of a list and its tail, evolved from two IBM 704 assembly language commands: Contents of Address Register and Contents of Decrement Register, each of which returned the contents of a 15-bit register corresponding to segments of a 36-bit IBM 704 instruction word.

The first complete Lisp compiler, written in Lisp, was implemented in 1962 by Tim Hart and Mike Levin at MIT.[3] This compiler introduced the Lisp model of incremental compilation, in which compiled and interpreted functions can intermix freely.

The two variants of Lisp most significant in the development of Scheme were both developed at MIT: LISP 1.5[4] developed by McCarthy and others, and Maclisp[5] – developed for MIT's Project MAC, a direct descendant of LISP 1.5. which ran on the PDP-10 and Multics systems.

Since its inception, Lisp was closely connected with the artificial intelligence (AI) research community, especially on PDP-10. The 36-bit word size of the PDP-6 and PDP-10 was influenced by the usefulness of having two Lisp 18-bit pointers in one word.[6]

ALGOL

ALGOL 58, originally to be called IAL for "International Algorithmic Language", was developed jointly by a committee of European and American computer scientists in a meeting in 1958 at ETH Zurich. ALGOL 60, a later revision developed at the ALGOL 60 meeting in Paris and now commonly named ALGOL, became the standard for the publication of algorithms and had a profound effect on future language development, despite the language's lack of commercial success and its limitations. Tony Hoare has remarked: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors."[7]

ALGOL introduced the use of block structure and lexical scope. It was also notorious for its difficult call by name default parameter passing mechanism, which was defined so as to require textual substitution of the expression representing the working parameter in place of the formal parameter during execution of a procedure or function, causing it to be re-evaluated each time it is referenced during execution. ALGOL implementors developed a mechanism they called a thunk, which captured the context of the working parameter, enabling it to be evaluated during execution of the procedure or function.

Carl Hewitt, the Actor model, and the birth of Scheme

In 1971 Sussman, Drew McDermott, and Eugene Charniak had developed a system called Micro-Planner which was a partial and somewhat unsatisfactory implementation of Carl Hewitt's ambitious Planner project. Sussman and Hewitt worked together along with others on Muddle, later renamed MDL, an extended Lisp which formed a component of Hewitt's project. Drew McDermott, and Sussman in 1972 developed the Lisp-based language Conniver, which revised the use of automatic backtracking in Planner which they thought was unproductive. Hewitt was dubious that the "hairy control structure" in Conniver was a solution to the problems with Planner. Pat Hayes remarked: "Their [Sussman and McDermott] solution, to give the user access to the implementation primitives of Planner, is however, something of a retrograde step (what are Conniver's semantics?)"[8]

In November 1972, Hewitt and his students invented the Actor model of computation as a solution to the problems with Planner.[9] A partial implementation of Actors was developed called Planner-73 (later called PLASMA). Steele, then a graduate student at MIT, had been following these developments, and he and Sussman decided to implement a version of the Actor model in their own "tiny Lisp" developed on Maclisp, to understand the model better. Using this basis they then began to develop mechanisms for creating actors and sending messages.[10]

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 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[11][12] and considered primitives (e.g., START!PROCESS, STOP!PROCESS, and EVALUATE!UNINTERRUPTIBLY) 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."[10]

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.[13]

The Lambda Papers

Between 1975 and 1980 Sussman and Steele worked on developing their ideas about using the lambda calculus, continuations and other advanced programming concepts such as optimization of tail recursion, and published them in a series of AI Memos which have become collectively termed the Lambda Papers.[14]

List of papers

  • 1975: Scheme: An Interpreter for Extended Lambda Calculus
  • 1976: Lambda: The Ultimate Imperative
  • 1976: Lambda: The Ultimate Declarative
  • 1977: Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO
  • 1978: The Art of the Interpreter or, the Modularity Complex (Parts Zero, One, and Two)
  • 1978: RABBIT: A Compiler for SCHEME
  • 1979: Design of LISP-based Processors, or SCHEME: A Dialect of LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode
  • 1980: Compiler Optimization Based on Viewing LAMBDA as RENAME + GOTO
  • 1980: Design of a Lisp-based Processor

Influence

Scheme was the first dialect of Lisp to choose lexical scope. It was also one of the first programming languages after Reynold's Definitional Language[15] to support first-class continuations. It had a large impact on the effort that led to the development of its sister-language, Common Lisp, to which Guy Steele was a contributor.[16]

Standardization

The Scheme language is standardized in the official Institute of Electrical and Electronics Engineers (IEEE) standard,[17] and a de facto standard called the Revisedn Report on the Algorithmic Language Scheme (RnRS). The most widely implemented standard is R5RS (1998),[18] and a new standard, R6RS,[19] was ratified in 2007.[20] Besides the RnRS standards there are also Scheme Requests for Implementation documents, that contain additional libraries that may be added by Scheme implementations.

Timeline

1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1, 1.5, LISP 2(abandoned)
 Maclisp
 Interlisp
 MDL
 Lisp Machine Lisp
 Scheme  R5RS  R6RS  R7RS small
 NIL
 ZIL (Zork Implementation Language)
 Franz Lisp
 Common Lisp  ANSI standard
 Le Lisp
 MIT Scheme
 XLISP
 T
 Chez Scheme
 Emacs Lisp
 AutoLISP
 PicoLisp
 Gambit
 EuLisp
 ISLISP
 OpenLisp
 PLT Scheme  Racket
 newLISP
 GNU Guile
 Visual LISP
 Clojure
 Arc
 LFE
 Hy
 Chialisp

References

  1. ^ Steele, Guy (2006). "History of Scheme" (PDF). Sun Microsystems Laboratories. Archived from the original on 2023-03-02. Retrieved 2023-04-05.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  2. ^ McCarthy, John. "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I". Archived from the original on 2013-10-04. Retrieved 2006-10-13.
  3. ^ Hart, Tim; Levin, Mike. "AI Memo 39, The New Compiler" (PDF). Archived from the original (PDF) on 2020-12-13. Retrieved 2006-10-13.
  4. ^ McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, Timothy P.; Levin, Michael I. (1985). LISP 1.5 Programmer's Manual. MIT Press. ISBN 978-0-262-13011-0.
  5. ^ "Maclisp Reference Manual". March 3, 1979. Archived from the original on 2007-12-14.
  6. ^ Hurley, Peter J. (18 October 1990). "The History of TOPS or Life in the Fast ACs". Newsgroupalt.folklore.computers. Usenet: 84950@tut.cis.ohio-state.edu. The PDP-6 project started in early 1963, as a 24-bit machine. It grew to 36 bits for LISP, a design goal.
  7. ^ Hoare, Tony (December 1973). Hints on Programming Language Design (PDF). p. 27. (This statement is sometimes erroneously attributed to Edsger W. Dijkstra, also involved in implementing the first ALGOL 60 compiler.)
  8. ^ Hayes, Pat (1974). "Some Problems and Non-Problems in Representation Theory". Society for the Study of Artificial Intelligence and the Simulation of Behaviour (AISB).
  9. ^ Hewitt, Carl; Bishop, Peter; Steiger, Richard (1973). "A Universal Modular Actor Formalism for Artificial Intelligence". IJCAI. {{cite journal}}: Cite journal requires |journal= (help)
  10. ^ a b Sussman, Gerald Jay; Steele Jr., Guy L. (December 1998). "The First Report on Scheme Revisited" (PDF). Higher-Order and Symbolic Computation. 11 (4): 399–404. doi:10.1023/A:1010079421970. ISSN 1388-3690. S2CID 7704398. Archived from the original (PDF) on 2006-06-15. Retrieved 2006-06-19.
  11. ^ Hewitt, Carl (December 1976). "Viewing Control Structures as Patterns of Passing Messages". AI Memo 410.
  12. ^ Hewitt, Carl (June 1977). "Viewing Control Structures as Patterns of Passing Messages". Journal of Artificial Intelligence. 8 (3): 323–364. doi:10.1016/0004-3702(77)90033-9. hdl:1721.1/6272.
  13. ^ Hewitt, Carl (2009). "ActorScript: Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing". arXiv:0907.3330 [cs.PL].
  14. ^ "Online version of the Lambda Papers". Archived from the original (PDF) on 2018-06-25.
  15. ^ Reynolds, John (1972). "Definitional interpreters for higher order programming languages". ACM Conference Proceedings. Association for Computing Machinery.
  16. ^ "Common Lisp Hyperspec – 1.1.2 History". LispWorks. 2005. Retrieved 2018-12-02.
  17. ^ 1178-1990 (R1995) IEEE Standard for the Scheme Programming Language
  18. ^ Kelsey, Richard; Clinger, William; Rees, Jonathan; et al. (August 1998). "Revised5 Report on the Algorithmic Language Scheme". Higher-Order and Symbolic Computation. 11 (1): 7–105. doi:10.1023/A:1010051815785.
  19. ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; Findler, Robby; Matthews, Jacob (August 2009). "Revised6 Report on the Algorithmic Language Scheme". Journal of Functional Programming. 19 (S1): 1–301. CiteSeerX 10.1.1.154.5197. doi:10.1017/S0956796809990074. S2CID 62724224.
  20. ^ "R6RS ratification-voting results".

Read other articles:

Чемпіонат Австрії з футболу 2007—2008 Деталі турніру Дата проведення 10 липня 2007 — 26 квітня 2008 Кількість учасників 10Призери Переможець Рапід (Відень) (32-й титул) 2-е місце Ред Булл (Зальцбург) 3-є місце Аустрія (Відень)Путівки в континентальні кубки Ліга чемпіонів Рапід (Віде...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (ديسمبر 2020) جيمس إم. كلارك (بالإنجليزية: James M. Clarke)‏    معلومات شخصية الميلاد 12 يونيو 1917  مانشستر  الوفاة 13 أبريل 1999 (81 سنة)   فيرفيو (كارولاينا الشمالية)  مو...

Fortaleza de São José de MacapáMacapá, Amapá in BrazilView of the fort at nightFortaleza de São JoséLocation of Fortaleza de São José in BrazilShow map of BrazilFortaleza de São JoséFortaleza de São José (Amapá)Show map of AmapáCoordinates0°01′52″N 51°02′57″W / 0.031058°N 51.049133°W / 0.031058; -51.049133TypeFortSite informationOpen tothe publicYesConditionGood Fortaleza de São José de Macapá is a fort located in Macapá, A...

LigneQing-Zang Ligne de Golmud à Lhassa Tracé de la nouvelle ligne de chemin de fer de Xining à Lhassa. Pays Chine Historique Mise en service 2006 Caractéristiques techniques Longueur 1 142 km Écartement standard (1,435 m) Électrification Non électrifiée Nombre de voies Voie unique Schéma de la ligne Légende modifier  La ligne ferroviaire Qing-Zang (Qing pour Qinghai, Zang pour Tibet)[1], ou ligne ferroviaire Qinghai-Tibet, est une ligne de chemin de fer inaugur...

Any node-based binary search tree that automatically keeps its height the same This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Self-balancing binary search tree – news · newspapers · books · scholar · JSTOR (November 2010) (Learn how and when to remove this template message) An example of an unbalanced tree;...

UK adaptation of a Canadian TV series Just for LaughsLogoGenreComedyDeveloped byWild Rover ProductionsDirected byPascal CarretteJett LoeStarringKeith LawKirsteen O'SullivanSonia Butterworth[1]Opening themeJust For Laughs ThemeEnding themeJust For Laughs ThemeCountry of originUnited KingdomOriginal languageEnglishNo. of series5No. of episodes50+ProductionExecutive producersMike EdgarPierre GirardProducerPhilip MorrowProduction locationsBelfast, LeedsCamera setupMulti - CameraRunning ti...

العلاقات السورينامية القطرية سورينام قطر   سورينام   قطر تعديل مصدري - تعديل   العلاقات السورينامية القطرية هي العلاقات الثنائية التي تجمع بين سورينام وقطر.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة سورينا...

Kaiserslautern University of Applied SciencesHochschule KaiserslauternTypePublic University of Applied SciencesEstablished1971PresidentHans-Joachim SchmidtAdministrative staff482,5WS 2015/16[1]Students6.202 WS 2016/17[2]LocationKaiserslauternPirmasens and Zweibrücken, Rhineland-Palatinate, GermanyWebsitehttp://www.hs-kl.de The Kaiserslautern University of Applied Sciences (German: Hochschule Kaiserslautern, HS Kaiserslautern) is a Hochschule (University of Applied Sciences) w...

1986 Indian filmOru Iniya UdhayamPosterDirected byR. SelvamStory byB. JayaseelanProduced byG. PanduStarringVijayakanthAmalaV. K. RamasamyVijayakumarCinematographyDinesh BabuEdited byR. DevarajanMusic byManoj–GyanProductioncompanyPandu Cine ArtsRelease date 13 December 1986 (1986-12-13) Running time128 minutesCountryIndiaLanguageTamil Oru Iniya Udhayam (transl. A Good Morning) is a 1986 Indian Tamil-language romantic action film, directed by R. Selvam. The film stars Vij...

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Public Citizen Litigation Group – news · newspapers · books · scholar · JSTOR (July 2020) (Learn how and when to remove this template message) Public Citizen Litigation Group is a public interest law firm in the United States.The group is the litigation arm of the non-profit consumer advocacy organization ...

United States Executive Order limiting refugees from Muslim-majority countries See also: Trump travel ban Executive Order 13769Protecting the Nation from Foreign Terrorist Entry into the United StatesU.S. President Donald Trump signing the order at the Pentagon, with Vice President Mike Pence (left) and Secretary of Defense Jim MattisExecutive Order 13769 in the Federal RegisterTypeExecutive orderExecutive Order number13769Signed byDonald Trump on January 27, 2017 (20...

2002 British television play This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: The Falklands Play – news · newspapers · books · scholar · JSTOR (October 2012) (Learn how and when to remove this template message) The Falklands PlayBBC DVD CoverGenreDocudramaWritten byIan CurteisDirected byMichael SamuelsStarrin...

Сухопутные войска Тунисаараб. جيش البر التونسي‎ Годы существования С 1956 Страна  Тунис Подчинение Министерство обороны Туниса Входит в Вооружённые силы Туниса Численность 27000 человек (включая 22000 срочной службы) Участие в Бизертинский кризисВойна Судного дняБитва ...

4-та легка дивізія (Третій Рейх)4. Leichte-Division Колона німецької бронетехніки висувається для вторгнення на територією Польщі. На передньому плані легкі танки Panzer I та Panzer II і бронетранспортер зв'язку Sd. Kfz.251/3. Польська кампанія. Вересень 1939На службі 1 квітня 1938 — 3 січня 1940Кр...

神田カルチェ・ラタン闘争に入る前には、中央大学中庭で集会が催された 中大中庭から駿河台の明大通りに進出したブントの学生たち 神田カルチェ・ラタン闘争(かんだカルチェ・ラタンとうそう)は、1968年6月21日に社会主義学生同盟(社学同。共産主義者同盟の学生組織)が東京神田駿河台の学生街で起こした解放区闘争。駿河台の明大通り2か所にバリケードを築...

Former railway station on the North Wales and Liverpool Railway in Cheshire, England Burton PointBurton Point railway station in 1961, six years after closureGeneral informationLocationBurton, Wirral Peninsula, Cheshire West and ChesterEnglandCoordinates53°15′48″N 3°02′45″W / 53.2634°N 3.0459°W / 53.2634; -3.0459Grid referenceSJ303745Platforms2Other informationStatusDisusedHistoryOriginal companyNorth Wales and Liverpool RailwayPre-groupingGreat Central Rai...

2022 single by Saweetie featuring H.E.R. CloserSingle by Saweetie featuring H.E.R.from the album Pretty Bitch Music ReleasedFebruary 11, 2022GenreDisco-popLength2:49Label Warner Artistry Songwriter(s) Diamonte Harper Gabriella Wilson Ryan Ogren Samuel Ahana Alyssa Cantu Bradley Powell Randall Hammers Producer(s) Ogren DJ Swish Mike Crook Kaine Saweetie singles chronology Handstand (2021) Closer (2022) Baby Boo (2022) H.E.R. singles chronology Blessed & Free(2021) Closer(2022) Play...

Former Indonesian police general (born 1973) Ferdy SamboSambo in 2022Head of the Profession and Security Division of the Indonesian National PoliceIn office16 November 2020 – 4 August 2022[1]PresidentJoko WidodoPreceded byIgnatius Sigit WidiatmonoSucceeded bySyahar Diantono Personal detailsBorn (1973-02-09) 9 February 1973 (age 50)Barru, South Sulawesi, IndonesiaSpouse Putri Candrawati ​(m. 2000)​Children4Alma materPolice Academy (1994)Occu...

Genji Monogatari Emaki, sebuah gulungan ilustrasi dari Kisah Genji, abad ke-12 Istilah Pusaka Nasional telah dipakai di Jepang untuk menandakan properti-properti kebudayaan sejak 1897.[1] Pengartian dan kriteria berubah sejak pembentukan istilah tersebut. Lukisan-lukisan tersebut mengikuti pengartian saat ini, dan diangkat menjadi pusaka nasional saat Hukum Perlindungan Properti Kebudayaan diimplementasikan pada 9 Juni 1951. Karena itu, mereka dibatasi dalam perpindahan dan tidak bole...

Bangladeshi film director Matin Rahmanমতিন রহমানBorn (1952-03-18) 18 March 1952 (age 71)Naogaon District, BangladeshNationalityBangladeshiOccupation(s)Film director, teacherYears active1973–presentNotable workLal KajolSpouseNasima KhanomChildren3AwardsNational Film Awards Matin Rahman (Bengali: মতিন রহমান) is a Bangladeshi film director.[1][2] He is also known for being a film writer and actor.[1] His debut film was L...

Kembali kehalaman sebelumnya