Everything about Metaprogramming
Programming paradigm
Metaprogramming is a computer 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. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time. It also allows programs more flexibility to efficiently handle new situations with no recompiling. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: MetaprogrammingA 5-minute orientation
- Skim a recent paper: Generating C: Heterogeneous metaprogramming system descriptionInfluential work since 2022
- Pick up a classic book: Metaprogramming GPUs with ShThe most-reprinted book on the subject
- Read the landmark paper: A metaprogramming framework for formal verificationCited 63 times
- Go sideways: List of programming languages by typeA closely related topic
- Go sideways: Domain-specific languageA closely related topic
📖 Definitions
Noun The writing of computer programs that write or manipulate other programs or themselves as their data, or that perform operations at runtime that would typically be done at compile time.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
A metaprogramming framework for formal verification
A Survey of Metaprogramming Languages
Multilevel models in model-driven engineering, product lines, and metaprogramming
Grammar-Based Definition of Metaprogramming Systems
Mœbius: metaprogramming using contextual types: the stage where system f can pattern match on itself
A metaprogramming method and its economic justification
Why untyped nonground metaprogramming is not (much of) a problem
Accelerating linear solvers for Stokes problems with C++ metaprogramming
🆕 Influential since 2022
Generating C: Heterogeneous metaprogramming system description
Modeling of functional language interpreter with metaprogramming
GenoMus: Representing Procedural Musical Structures with an Encoded Functional Grammar Optimized for Metaprogramming and Machine Learning
Using Metaprogramming Tools of the Common Lisp Language for the Development of Emulator Systems
Linear Contextual Metaprogramming and Session Types
📚 Books worth reading
Metaprogramming GPUs with ShMichael McCool, Stefanus DuToit · 2004
Programming and metaprogramming in the human biocomputerJohn Cunningham Lilly · 1967- 📕C++ Template Metaprogramming in PracticeWei Li · 2020
- 📕NlpShlomo Vaknin · 2020
C++ template metaprogrammingDavid Abrahams · 2005
Programming and metaprogramming in the human biocomputerJohn Cunningham Lilly · 1968
Metaprogramming In NetJason Bock · 2012- 📕Template Metaprogramming with C++Marius Bancila · 2022
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- List of programming languages by type The notable programming languages listed here are grouped by their notable language attribute. As a language can have multiple attributes, the same language…
- Domain-specific language A domain-specific language (DSL) is a programming language specialized to a specific application domain. This is in contrast to a general-purpose programming…
- Preprocessor In computer science, a preprocessor (or precompiler) is a program that processes its input data to produce output that is used as input in another program…
- Comparison of multi-paradigm programming languages Programming languages can be grouped by the number and types of paradigms supported. A concise reference for the programming paradigms listed in this article…
- Macro (computer science) In computer programming, a macro (short for "macro instruction"; from Greek μακρο- 'long, large') is a rule or pattern that specifies how a certain input…
- Compiler-compiler In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of…
- Extensible programming In computer science, extensible programming is a style of computer programming that focuses on mechanisms to extend the programming language, compiler…
- Template metaprogramming Template metaprogramming (TMP) is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged…