"The Roots of Lisp" - Personnal comments
The article
‘The Roots of Lisp’ was written by Paul Graham and treats about the beginning
of the language Lisp. He translates how John McCarthy created the language in
1960.
The first
discovery he made is that he would need to define some operators based on
mathematic expressions and the main data structure: list. He started by defining
what an expression is. It can either be an atom (sequence of letter) or a list.
From this he defined seven primitive operators: quote, atom, eq, acr, cdr, cons
and cond.
Then he
defines a notation for describing functions and functions calls. In this part
he explains how expressions are computed, in which order parameters or operators
are evaluated. Something that I have learned is that we can abbreviate some
expressions when we use function composition. For example we can write (car
(cdr e)) this way : (cadr e). All these functions use mostly one type of data
structure : lists.
Besides
performing operations on lists, some functions can also evaluate the value of a
function. In the article, the example used is with the function eval. The
function is based on a cond condition with four clauses. The four clauses only
use the seven primitive operators defined at the beginning.
Finally,
the author explains what was missing to the language Lisp at its early ages
when McCarthy designed it. It had no side-effects, no sequential execution, no
practical numbers or dynamic scope. These features were added afterwards by two
researchers Steele and Sussman.
To conclude
I found this article interesting but a bit complicated. I didn’t understand all
the clauses of the eval function. And I don’t understand how this model will be
the computation model of the future. In any case I am glad to know a little bit
of how Lisp was first designed and the way of thinking of its creator. Now I am
quite curious to learn about other language creators especially for the
language C.
Commentaires
Enregistrer un commentaire