This article is about the computer programming technique. For the management technique, see Charles Simonyi.
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Metaprogramming" – news · newspapers · books · scholar · JSTOR(August 2011) (Learn how and when to remove this message)
This article's tone or style may not reflect the encyclopedic tone used on Wikipedia. See Wikipedia's guide to writing better articles for suggestions.(February 2017) (Learn how and when to remove this message)
(Learn how and when to remove this message)
Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyse or transform other programs, and even modify itself while running.[1][2] In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time.[3] It also allows programs a greater flexibility to efficiently handle new situations without recompilation.
Metaprogramming can be used to move computations from run-time to compile-time, to generate code using compile time computations, and to enable self-modifying code. The ability of a programming language to be its own metalanguage is called reflection.[4] Reflection is a valuable language feature to facilitate metaprogramming.
Metaprogramming was popular in the 1970s and 1980s using list processing languages such as LISP. LISP hardware machines were popular in the 1980s and enabled applications that could process code. They were frequently used for artificial intelligence applications.
^Harald Sondergaard. "Course on Program Analysis and Transformation". Retrieved 18 September 2014.
^Czarnecki, Krzysztof; Eisenecker, Ulrich W. (2000). Generative Programming. ISBN 0-201-30977-7.
^Walker, Max. "The Art of Metaprogrmming in Java". New Circle. Retrieved 28 January 2014.
^Krauss, Aaron. "Programming Concepts: Type Introspection and Reflection". The Societa. Retrieved 14 September 2014.
reflection. Reflection is a valuable language feature to facilitate metaprogramming. Metaprogramming was popular in the 1970s and 1980s using list processing languages...
Template metaprogramming (TMP) is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged...
layout and styles used to configure word processing software Template metaprogramming, a programming technique used by a compiler to generate temporary source...
MC6800 and the assembled form Paradigm Imperative, unstructured, often metaprogramming (through macros), certain assemblers are structured or object-oriented...
country code top-level domain (ccTLD) of Saint Helena Lib Sh, a graphics metaprogramming library for C++ Unix shell, a general command-line shell for Unix Bourne...
Programming and Metaprogramming in the Human Biocomputer: Theory and Experiments is a 1968 book by John C. Lilly. In the book, "the doctor imagines the...
concept of metaprogramming at Microsoft, turning it into what people sometimes referred to as a software factory, but the metaprogramming concept "did...
of programming languages are often known as programming paradigms. Metaprogramming is the generation of higher-order programs which, when executed, produce...
Expression templates are a C++ template metaprogramming technique that builds structures representing a computation at compile time, where expressions...
flotation tanks and isolation. It also examines Lilly's notion of self-metaprogramming as a means to shape and direct certain experiences and gain autonomy...