Today I started the project 'Design of a Lisp Interpreter with a web front end'. I doing this project as the part of my post graduation. In this post I want to discuss about the history and basics of Lisp.
what is Lisp? Lisp is a family of computer programming languages with a long history. Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT) . The following figure shows the Lisp machine in the MIT museum.
McCarthy published its design in a paper on 1960.
Lisp was first implemented by Steve Russell on an IBM 704 computer. Russell had read McCarthy's paper, and realized that the Lisp eval function could be implemented in machine code. The result was a working Lisp interpreter which could be used to run Lisp programs, or more properly, 'evaluate Lisp expressions.'
Lisp is the second oldest high-level programming language in widespread use today; Fortran is the first oldest high-level programming language. Today, the most widely known general-purpose Lisp dialects are Common Lisp, Scheme, and Clojure. Other dialects are Emacs Lisp, AutoLISP, Newlisp, Arc, SKILL,Racket, Logo, Clojure, ISLISP.
The first complete Lisp compiler, written in Lisp, was implemented in 1962 by Tim Hart and Mike Levin at MIT.
I am sure, now you must think that 'lisp is an oldest programming language, then today what is the relevance of this language?' I have a good answer for this question. I agree that lisp is an oldest programming language, also it is still widely used in Artificial intelligence. Hence it is not an useless language.
As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, and the self-hosting compiler.
The name LISP derives from "LISt Processing". Linked lists are one of Lisp language's major data structures, and Lisp source code is itself made up of lists.
Lisp was closely connected with the artificial intelligence research community, especially on PDP-10 systems. Lisp was used as the implementation of the programming language Micro Planner which was used in the famous AI system SHRDLU.
Lisp is an expression-oriented language. Unlike most other languages, no distinction is made between "expressions" and "statements"; all code and data are written as expressions. When an expression is evaluated, it produces a value which then can be embedded into other expressions. Each value can be any data type.
McCarthy's 1958 paper introduced two types of syntax: S-expressions (Symbolic expressions, also called "sexps"), which mirror the internal representation of code and data; and M-expressions (Meta Expressions), which express functions of S-expressions. M-expressions never found favor, and almost all Lisps today use S-expressions to manipulate both code and data.
In Lisp all program code is written as s-expressions (symbolic expressions), 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
(f arg1 arg2 arg3).
These are the basic concepts of Lisp. I will explain more about Lisp in the next post.