Metalinguistic abstraction
In
computer science,
metalinguistic abstraction is the process of solving complex problems by creating a new language or vocabulary to better understand the problem space. It is a recurring theme in the seminal
MIT textbook, the
Structure and Interpretation of Computer Programs, which uses
Scheme as a framework for constructing new languages.
For example, consider modelling an airport inside a computer. A
procedural (e.g.
C) programmer would create data structures to represent the elements of an airport and functions to operate on those data structures. An
object-oriented (e.g.
C++) programmer would create
objects to represent the elements of the airport with
methods which represent their behaviors. A
functional (e.g. Scheme) programmer would create functions representing both elements and behaviors of the airport. A metalinguistic programmer would abstract the problem by creating a new language for modelling an airport with its own primitives and operations. The language could then encompass any or all of the above techniques as required by the problem at hand.
Because the creation of functional metalinguistic abstractions in non-functional languages can be cumbersome and also because of the syntactic flexibility of functional
macros, metalinguistic programming is most often performed on a functional base.