Lisp is a functional programming language where the basic data structure is linked lists and atoms. It was one of the earliest programming languages developed in 1958. Lisp programs are run by interacting with an interpreter like Clisp. Key aspects of Lisp include its use of prefix notation, treating all code as nested lists, defining functions using defun, and its emphasis on recursion and higher-order functions. Common control structures include cond for conditional evaluation and looping constructs like loop. Lisp fell out of widespread use due to performance issues with interpretation and low interoperability with other languages.