The Roots of Lisp

After reading Paul Graham "The Roots of Lisp", I realized that there is a lot of information and knowledge that I still have to learn. Starting with John McCarthy's paper showing that with some simple operators and notation for functions you can create a programming language, which he named LISP (List Processing), I must say that I had no idea of the origin of the name, but thanks to the reading I understood that this name is because it uses a simple data structure (list) for code and data. 

McCarthy's discovery changed the way the programming languages were created, with Lisp created, now there were two models of programming: C model and Lips model. The evolution in computer's performance and hardware has made that the new programming languages move to the Lisp model. 

Graham explains some important terms that McCarthy created, starting with an expression which is also an atom and made by a sequence of letters or a list of zero or more expressions separated by whitespace and enclosed by parentheses. These expressions go together with 7 different operators which are the base for Lisp programs, these operators are: quote, atom, eq, car, cdr, cons and cond. 

Graham also talks about how Lisp functions' origin and how they are expressed. Functions in Lisp are expressed as lambda with parameters and an expression, functions are evaluated through a function call and with this, the expressions are evaluated. There are different types of functions that are created with the 7 operators. Functions can also concatenate lists, substitute expressions, etc. but the main thing is that there are functions that take any Lisp expression as an argument and return the value. 

I can say that I've enjoyed this reading, finding out about Lisp origins and how the functions, expressions, and operands were created too and their importance with Lisp performance. I can say that McCarthy's purpose of creating a language that describes algorithms was successful. There is something more important than just learning mathematical terms or theorems, the thing is to learn where do programming languages are heading with these inventions and creations for new programming languages. 
References: 

- P. Graham (2002). The Roots of Lisp. Available at: http://webcem01.cem.itesm.mx:8005/s201813/tc2006/roots_of_lisp.pdf

Comments

Popular posts from this blog

Rich Hickey on Clojure

The Promises of Functional Programming