Lisp is generally considered a 3rd Generation Language (3GL), as it is
a general purpose, text based language comparable to Smalltalk, Ada, C/C++,
Such distinctions are often confusing, however. For example, assembly languages are considered to be 2GL, in that they allow mnemonic programming at the machine level. By this description, C can be thought of as a 2GL for register architectures, and Lisp, Forth and Postscript can be considered a 2GL for stack architectures.
Recall that Lisp decouples the representation of program structure from the reading of textual programs. Thus, although the ANSI Common Lisp language specification includes a specification of the standard syntax for reading text based programs, it also includes mechanisms for manipulating programs as data, and compiling such in-memory definitions without the use of text source files. While other 3GL are limited to the traditional text-editor-separate-compiler environment, Lisp, Smalltalk, and other 4GLs use these capabilities to provide sophisticated Computer Aided Software (CASE) environments. The macro and metaobject protocol facilities support the creation of new, application-specific languages embedded in Lisp. In addition, the dynamic capabilities of Lisp allow the environment to be customized, modified or reprogrammed in Lisp as it is running.
A 5GL is sometimes considered to be a 4GL with a knowledge-based system built in. The ANSI Common Lisp standard does not define any knowledge-based system extensions, but many are freely available for Lisp. Because these work by extending the language, rather than replacing it, it is difficult to classify such extended Lisps as 3GL, 4GL or 5GL.