Lisp was one of the earliest programming languages, developed in the 1950s. It was based on mathematical functions and list processing. Early Lisp had no local variables, loops, or compiler. It used dynamic scoping and was interpreted, making it easy to build large systems. Over time, various Lisp dialects were developed to address inefficiencies and usability issues. Common Lisp was later standardized to combine the best features while ensuring consistency, expressiveness, efficiency and portability. Common Lisp is very powerful but also complex, with many functions and capabilities. It remains useful for AI and other domains due to its flexibility and support for functional programming concepts like recursion.