Lisp (programming language): Difference between revisions

Content deleted Content added
Skyvine (talk | contribs)
History: Merge statement about IPL into the first paragraph. This flows better because the structure of the text now more accurately parallels the chronology.
m ref name
Line 99:
{{Multiple image |direction=vertical |image1=John McCarthy Stanford.jpg |image2=Steve Russell.jpg |footer=[[John McCarthy (computer scientist)|John McCarthy]] (top) and [[Steve Russell (computer scientist)|Steve Russell]]}}
 
[[John McCarthy (computer scientist)|John McCarthy]] began developing Lisp in 1958 while he was at the [[Massachusetts Institute of Technology]] (MIT). He was motivated by a desire to create an AI programming language that would work on the IBM 704, as he believed that "IBM looked like a good bet to pursue Artificial Intelligence research vigorously."<ref name="wexelblat-history-programming-languages">{{cite book |title=History of programming languages |last1=McCarthy |first1=John |last2=Wexelblat |first2=Richard L. |year=1978 |isbn=0127450408 |publisher=Association for Computing Machinery |pagepages=173-183173–183}}</ref> He was inspired by [[Information Processing Language]], which was also based on list processing, but did not use it because it was designed for different hardware and he found an algebraic language more appealing.<ref name="wexelblat-history-programming-languages" />. Due to these factors, he consulted on the design of the [[Fortran]] List Processing Language, which was implemented as a Fortran library. However, he was dissatisfied with it because it did not support [[Recursion (computer science)|recursion]] or a modern [[Conditional (computer programming)#If–then(–else)|if-then-else]] statement (which was a new concept when lisp was first introduced) {{NoteTag|At the time, Fortran had an if-then-else construct that accepted line numbers as jump targets, in the manner of a [[Goto]] statement, rather than accepting arbitrary expression in "then" and "else" blocks}}.<ref name="wexelblat-history-programming-languages" />.
 
McCarthy's original notation used bracketed "[[M-expression]]s" that would be translated into [[S-expression]]s. As an example, the M-expression {{Lisp2|car[cons[A,B]]}} is equivalent to the S-expression {{Lisp2|(car (cons A B))}}. Once Lisp was implemented, programmers rapidly chose to use S-expressions, and M-expressions were abandoned .<ref name="wexelblat-history-programming-languages "/>. M-expressions surfaced again with short-lived attempts of [[MLisp]]<ref name="Smith">{{cite book |last=Smith |first=David Canfield |title=MLISP Users Manual |url=http://www.softwarepreservation.org/projects/LISP/stanford/Smith-MLISP-AIM-84.pdf |access-date=2006-10-13}}</ref> by Horace Enea and [[CGOL]] by [[Vaughan Pratt]].
 
Lisp was first implemented by [[Steve Russell (computer scientist)|Steve Russell]] on an [[IBM 704]] computer using [[punched card]]s.<ref name="4VwQq">{{Cite web |url=http://jmc.stanford.edu/articles/lisp/lisp.pdf |title=History of Lisp: Artificial Intelligence Laboratory |last=McCarthy |first=John |date=12 February 1979}}</ref> Russell was working for McCarthy's at the time and realized (to McCarthy's surprise) that the Lisp ''[[eval]]'' function could be implemented in [[machine code]].
Line 491:
Several [[operating system]]s, including [[language-based system]]s, are based on Lisp (use Lisp features, conventions, methods, data structures, etc.), or are written in Lisp,<ref>{{Cite news |last=Proven |first=Liam |date=29 March 2022 |url=https://www.theregister.com/2022/03/29/non_c_operating_systems/ |title=The wild world of non-C operating systems |work=[[The Register]] |access-date=2024-04-04}}</ref> including:
 
[[Genera (operating system)|Genera]], renamed Open Genera,<ref>{{Cite web |author=<!-- Unstated --> |date=7 January 2020 |url=https://archive.org/details/OpenGenera |title=Symbolics Open Genera 2.0 |website=[[GitHub]] Internet Archive |access-date=2022-02-02}}</ref> by [[Symbolics]]; Medley, written in Interlisp, originally a family of graphical operating systems that ran on [[Xerox]]'s later [[Xerox Star|Star]] [[workstation]]s;<ref>{{Cite web |author=<!-- Unstated --> |date=15 March 2022 |url=https://interlisp.org/ |title=Interlisp.org Project |website=Interlisp.org |access-date=2022-02-02}}</ref><ref>{{Cite web |author=<!-- Unstated --> |date=March 2022 |url=https://github.com/Interlisp/medley |title=Interlisp Medley |website=[[GitHub]] |access-date=2022-02-02}}</ref> Mezzano;<ref>{{Cite web |author=froggey |date=1 August 2021 |url=https://github.com/froggey/Mezzano |title=Mezzano |website=[[GitHub]] |access-date=2022-02-02}}</ref> Interim;<ref>{{Cite web |last=Hartmann |first=Lukas F. |date=10 September 2015 |url=http://interim-os.com/ |title=Interim |website=Interim-os |access-date=2022-02-02}}</ref><ref>{{Cite web |last=Hartmann |first=Lukas F. |date=11 June 2021 |url=https://github.com/mntmn/interim |title=Interim |website=[[GitHub]] |access-date=2022-02-02}}</ref> ChrysaLisp,<ref>{{Cite web |last=Hinsley |first=Chris |date=23 February 2022 |url=https://github.com/vygr/ChrysaLisp |title=ChrysaLisp |website=[[GitHub]] |access-date=2022-02-02}}</ref> by developers of Tao Systems' TAOS,<ref>{{Cite web |last=Smith |first=Tony |date=21 August 2013 |url=https://www.theregister.com/2013/08/21/unsung_heroes_dr_chris_shelton/?page=5 |title=UK micro pioneer Chris Shelton: The mind behind the Nascom 1 |website=[[The Register]] |access-date=2022-02-02}}</ref> and also the [[GNU_GuixGNU Guix#Guix_System_Guix System (operating_systemoperating system)|Guix System]] for GNU/Linux.
 
==See also==