Lisp Programming Language: Difference between revisions

From GM-RKB
Jump to navigation Jump to search
(Created page with "A Lisp Programming Language is a programming language that approximates the Formal Language specified by John McCarthy in 1958 which specifies Program Statem...")
 
m (Text replacement - "QUOTE: " to "QUOTE: ")
 
(26 intermediate revisions by 3 users not shown)
Line 1: Line 1:
A [[Lisp Programming Language]] is a [[programming language]] that approximates the [[Formal Language]] specified by [[John McCarthy]] in 1958 which specifies [[Program Statement]]s as parenthesized lists (s-expressions).
A [[Lisp Programming Language]] is a [[programming language]] that approximates the [[Formal Language]] specified by [[John McCarthy]] in 1958 which specifies [[Program Statement]]s as parenthesized lists (s-expressions).
* <B>AKA:</B> [[LISP]], [[LISt Processing Language]].
* <B>AKA:</B> [[Lisp Programming Language|LISP]], [[Lisp Programming Language|LISt Processing Language]].
* <B>Example(s):</B>
* <B>Example(s):</B>
** [[Common Lisp Programming Language]].
** [[Common Lisp Programming Language]].
* <B>Counter-Exmaple(s):</B>
** …
* <B>Counter-Example(s):</B>
** [[Prolog]].
** [[Prolog]].
** [[Fortran]].
** [[Fortran]].
* <B>See:</B> [[Logic Programming]], [[Scheme Programming Language]], [[Polish Notation]], [[High-Level Programming Language]].
* <B>See:</B> [[Logic Programming]], [[Scheme Programming Language]], [[Polish Notation]], [[High-Level Programming Language]].
----
----
----
----
==References ==
 
== References ==
 
=== 2016 ===
* https://dev.to/ericnormand/the-idea-of-lisp
** QUOTE: [[McCarthy, 1960|He]] defines 5 [[primitive operation]]s (<code>[[atom operation|atom]], [[eq operation|eq]], [[cons operation|cons]], [[car operation|car]], and [[cdr operation|cdr]]</code>) along with a [[conditional expression]]. </s> [[Lisp Programming Language|It]] also assumes the ability to [[define software functions|define functions]]. </s> And then he uses those to define an entire [[programming language]], defined in itself. </s> Let me say that again: [[John McCarthy]] wrote 6 [[easy thing]]s in [[machine code]], then combined them to make a [[programming language]]. </s>


=== 2013 ===
=== 2013 ===
* (Wikipedia, 2013) &rArr; http://en.wikipedia.org/wiki/Lisp_(programming_language) Retrieved:2013-12-12.
* (Wikipedia, 2013) http://en.wikipedia.org/wiki/Lisp_(programming_language) Retrieved:2013-12-12.
** '''Lisp''' (historically, '''LISP''') is a family of [[computer]] [[programming language]]s with a long history and a distinctive, fully parenthesized [[Polish notation|Polish prefix]] notation.  Originally specified in 1958, Lisp is the second-oldest [[high-level programming language]] in widespread use today; only [[Fortran]] is older (by one year). Like Fortran, Lisp has changed a great deal since its early days, and a number of [[Programming language dialect|dialects]] have existed over its history. Today, the most widely known general-purpose Lisp dialects are [[Common Lisp]] and [[Scheme (programming language)|Scheme]]. Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of [[Alonzo Church]]'s [[lambda calculus]]. It quickly became the favored programming language for [[artificial intelligence]] (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree data structure]]s, [[Garbage collection (computer science)|automatic storage management]], [[dynamic typing]], [[Conditional (computer programming)|conditionals]], [[higher-order function]]s, [[recursion]], and the [[self-hosting]] [[compiler]].<ref name="GRAHAM">{{cite web| title=Revenge of the Nerds| author=Paul Graham | url=http://www.paulgraham.com/icad.html | accessdate=2013-03-14}} </ref> <P> The name ''LISP'' derives from "LISt Processing". [[Linked list]]s are one of Lisp language's major [[data structure]]s, and Lisp [[source code]] is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the [[Macro (computer science)|macro]] systems that allow programmers to create new syntax or even new [[domain-specific language]]s embedded in Lisp. <P> The interchangeability of code and data also gives Lisp its instantly recognizable syntax. All program code is written as ''[[s-expression]]s'', or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function f that takes three arguments might be called using .
** '''Lisp''' (historically, '''LISP</B>) is a family of [[computer]] [[programming language]]s with a long history and a distinctive, fully parenthesized [[Polish notation|Polish prefix]] notation.  Originally specified in 1958, Lisp is the second-oldest [[high-level programming language]] in widespread use today; only [[Fortran]] is older (by one year). Like Fortran, Lisp has changed a great deal since its early days, and a number of [[Programming language dialect|dialects]] have existed over its history. Today, the most widely known general-purpose Lisp dialects are [[Common Lisp]] and [[Scheme (programming language)|Scheme]]. Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of [[Alonzo Church]]'s [[lambda calculus]]. It quickly became the favored programming language for [[artificial intelligence]] (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree data structure]]s, [[Garbage collection (computer science)|automatic storage management]], [[dynamic typing]], [[Conditional (computer programming)|conditionals]], [[higher-order function]]s, [[recursion]], and the [[self-hosting]] [[compiler]].<ref name="GRAHAM">{{cite web| title=Revenge of the Nerds| author=Paul Graham | url=http://www.paulgraham.com/icad.html | accessdate=2013-03-14}} </ref>         <P>       The name ''LISP'' derives from "LISt Processing". [[Linked list]]s are one of Lisp language's major [[data structure]]s, and Lisp [[source code]] is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the [[Macro (computer science)|macro]] systems that allow [[programmer]]s to create new syntax or even new [[domain-specific language]]s embedded in Lisp.         <P>       The interchangeability of code and data also gives Lisp its instantly recognizable syntax. All program code is written as ''[[s-expression]]s'', or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function f that takes three arguments might be called using .
<references/>
<references/>
=== 1960 ===
* ([[McCarthy, 1960]]) ⇒ [[John McCarthy]]. (1960). “[http://www-formal.stanford.edu/jmc/recursive/recursive.html Recursive functions of symbolic expressions and their computation by machine, Part I]." Communications of the ACM, 3(4).
** QUOTE: A [[programming system]] called [[Lisp Programming Language|LISP (for LISt Processor)]] has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T. The system was designed to facilitate experiments with a proposed system called the Advice Taker, whereby a machine could be instructed to handle declarative as well as imperative sentences and could exhibit “common sense'' in carrying out its instructions. The original proposal [1] for the Advice Taker was made in November 1958. The main requirement was a programming system for manipulating expressions representing formalized declarative and imperative sentences so that the Advice Taker system could make deductions.        <P>        In the course of its development the LISP system went through several stages of simplification and eventually came to be based on a scheme for representing the partial recursive functions of a certain class of symbolic expressions. This representation is independent of the IBM 704 computer, or of any other electronic computer, and it now seems expedient to expound the system by starting with the class of expressions called S-expressions and the functions called S-functions.        <P>        In this article, we first describe a formalism for defining functions recursively. We believe this formalism has advantages both as a programming language and as a vehicle for developing a theory of computation. Next, we describe S-expressions and S-functions, give some examples, and then describe the universal S-function $apply$ which plays the theoretical role of a universal Turing machine and the practical role of an interpreter. Then we describe the representation of S-expressions in the memory of the IBM 704 by list structures similar to those used by Newell, Shaw and Simon [2], and the representation of S-functions by program. Then we mention the main features of the LISP programming system for the IBM 704. Next comes another way of describing computations with symbolic expressions, and finally we give a recursive function interpretation of flow charts.        <P>        We hope to describe some of the symbolic computations for which LISP has been used in another paper, and also to give elsewhere some applications of our recursive function formalism to mathematical logic and to the problem of mechanical theorem proving.


----
----
__NOTOC__
[[Category:Concept]]
[[Category:Concept]]
__NOTOC__

Latest revision as of 20:45, 29 December 2022

A Lisp Programming Language is a programming language that approximates the Formal Language specified by John McCarthy in 1958 which specifies Program Statements as parenthesized lists (s-expressions).



References

2016

2013

  1. Paul Graham. "Revenge of the Nerds". http://www.paulgraham.com/icad.html. Retrieved 2013-03-14. 

1960

  • (McCarthy, 1960) ⇒ John McCarthy. (1960). “Recursive functions of symbolic expressions and their computation by machine, Part I." Communications of the ACM, 3(4).
    • QUOTE: A programming system called LISP (for LISt Processor) has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T. The system was designed to facilitate experiments with a proposed system called the Advice Taker, whereby a machine could be instructed to handle declarative as well as imperative sentences and could exhibit “common sense in carrying out its instructions. The original proposal [1] for the Advice Taker was made in November 1958. The main requirement was a programming system for manipulating expressions representing formalized declarative and imperative sentences so that the Advice Taker system could make deductions.

      In the course of its development the LISP system went through several stages of simplification and eventually came to be based on a scheme for representing the partial recursive functions of a certain class of symbolic expressions. This representation is independent of the IBM 704 computer, or of any other electronic computer, and it now seems expedient to expound the system by starting with the class of expressions called S-expressions and the functions called S-functions.

      In this article, we first describe a formalism for defining functions recursively. We believe this formalism has advantages both as a programming language and as a vehicle for developing a theory of computation. Next, we describe S-expressions and S-functions, give some examples, and then describe the universal S-function $apply$ which plays the theoretical role of a universal Turing machine and the practical role of an interpreter. Then we describe the representation of S-expressions in the memory of the IBM 704 by list structures similar to those used by Newell, Shaw and Simon [2], and the representation of S-functions by program. Then we mention the main features of the LISP programming system for the IBM 704. Next comes another way of describing computations with symbolic expressions, and finally we give a recursive function interpretation of flow charts.

      We hope to describe some of the symbolic computations for which LISP has been used in another paper, and also to give elsewhere some applications of our recursive function formalism to mathematical logic and to the problem of mechanical theorem proving.