Lisp was one of the earliest programming languages, developed in the 1950s. It was based on mathematical functions and widely adopted for artificial intelligence programming due to its support for symbolic computing, list processing, and recursion. Early Lisp lacked local variables, iterative control structures, and compilers. Over time, various Lisp dialects were developed that added these features. Common Lisp was later standardized to combine the best attributes of different Lisps. Lisp code and data both use S-expressions (lists) and all variables are pointers, making it easy to manipulate and generate code.