![](https://article-imgs.scribdassets.com/42iuziwz0gb2v2w7/images/file158Q0OOO.jpg)
Credit: www.gnu.org/software/gcl/
In the previous instalment in our series on classic programming languages, we examined I ALGOL, and this month we’re delving into another archaic language, LISP. However, the fact they both date back to the 1950s is about the only thing the two have in common; in most other respects they couldn’t be more different. In all probability, virtually all languages you’ve ever used are of the type referred to as imperative languages. LISP, on the other hand, is a declarative language. To put it simply, programming in an imperative language involves defining a set of operations that, when executed sequentially, provide the desired functionality. The fact that there’s an alternative might be surprising, but in a declarative language, the end result is defined, leaving the system to figure out how to achieve the goal.
The two approaches have been likened to the instructions provided with a piece of self-assembly furniture. In the imperative approach, the instructions comprise a detailed list of instructions; with the declarative method, you’re just shown a picture of the assembled furniture. In fact, this isn’t our first foray into declarative programming in recent months. In LXF293,we learned about Prolog, the language that almost vanished into obscurity in the 1980s before making a recent come-back, fuelled by the AI revolution.
![](https://article-imgs.scribdassets.com/42iuziwz0gb2v2w7/images/fileJKL5WVZC.jpg)
A declaration for LISP
We need to define LISP more accurately by saying that it’s not devoid of imperative