LISP: Back to the Future (a Tribute to 60th Anniversary)

Yana Arbuzova
Sigma Software
Published in
3 min readJun 15, 2018

Exactly 60 years ago a new language was born, which on its own may be considered the greatest finding in the computer science since the invention of the first computer. This language was LISP, the most innovative and creative language ever designed and unfortunately undeservingly abandoned by mainstream programming community today. In this article, Nickolay Mozgovoy tells about the history of this language and what makes it different.

Why language is ever important? It may be not so obvious if you are experienced in mainstream languages only, such as Java, C#, JavaScript, or Python. Generally, there is no significant difference between these languages, since they all belong to one family and learning even one of them allows you to understand and learn other ones easily. In fact, a language is highly important because it determines what you can say, while being used to, it will determine your way of thinking.

ORIGINS

The story of LISP started in 1958 although some key ideas were developed earlier through 1956 and 1957. The language itself targeted relevant Artificial Intelligence problems and was funded as a part of the project called Advice Taker. Development was carried out by Artificial Intelligence group at M.I.T. The key person in this research and development was John McCarthy famous for being the author of the term Artificial Intelligence itself. Another not less famous figure in his team was AI pioneer and futurist Marvin Minsky. The first interpreter was implemented by Steve Russell known as the author of one of the earliest video games called Spacewar!

A distinguishable idea was to represent processing information in a form of lists, which seems still relevant today, and the same idea gave the language the name LISP (for List Processing). To represent such lists, McCarthy came up with a quite simple notation named s-expressions (for “symbolic expression”) consisting of ( · ) and an infinite set of atomic symbols:

AB

(A · B)

((AB · C) · D)

(A·((B ·(C · NIL)) ·(D · NIL)))

The last S-expression corresponds to the list structure represented on image 1.

Image 1. List structure corresponding to s-expression A·((B ·(C · NIL)) ·(D · NIL)))

Initially, S-expressions were supposed to be used for data representation only and expected to be manipulated by another Fortran-inspired notation called M-expressions:

car[x]

car[cons[(A · B);x]]

Very soon it appeared that there was no need in a separate notation for program logic, and S-expressions could serve that goal well if assumed that the very first element of the S-expression stood for a function applied to the rest of the list elements. Therefore, there is no significant difference in LISP between data and code, they are just interchangeable. This simple syntax unintentionally made LISP a very powerful language, having no analogous until today.

(print (string-join (list “Hello” “LISP”)))

INNOVATIONS

Even though homoiconic syntax was the key innovation that still distinguishes LISP from all other languages, it featured even more astonishing features we cannot imagine modern programming without and some exotic ones as well.

Continue reading about the innovations introduced by LISP: https://sigma.software/about/media/lisp-back-future-tribute-60th-anniversary#utm_source=medium&utm_medium=repost&utm_campaign=article_lisp

--

--

Yana Arbuzova
Sigma Software

Content Manager at Sigma Software. Every word we share may influence other people. More words here: https://sigma.software/about/media