Generative Programming - JacquesCarette/Drasil GitHub Wiki
Warning: Wiki should not be edited directly. Edit the files in the ./wiki/ folder instead and make a PR.
This following list provides readings for generative programming (in relative decreasing order of importance) and was migrated from this issue on GitLab.
- A Survey of Metaprogramming Languages (Lilis and Savidis 2019)
- Overview of Generative Software Development (Czarnecki 2005)
- Structured Program Generation Techniques (Smaragdakis, Biboudis, Fourtounis 2017)
- Taxonomy of Fundamental Concepts of Meta-Programming (Damasevicius and Stuikys 2008)
- When And How To Develop Domain-Specific Languages (Mernik, Heering, Sloane 2003)
- Typed Tagless Final Interpreters (Kiselyov 2012)
- Finally Tagless, Partially Evaluated: Tagless Staged Interpreters for Simpler Typed Languages (Carette, Kiselyov, Shan 2007)
- Multi-stage programming with functors and monads: Eliminating abstraction overhead from generic code (Carette and Kiselyov 2011)
- Mechanizing the Development of Software (Smith 1999)
- Partially-Static Data as Free Extension of Algebras (Yallop, Von Glehn, Kammar 2018)
- The Three Projections of Doctor Futamura (Sigfpe 2009)
- Is there a fourth Futamura projection? (Glück 2009)
This topic list for Generative programming is good:
- Generators
- Interpreters
- Staging
- DSLs
- Quasi-quotations
- Templates
- AST transformations
- Compile-time reflection
- Traits
- Class composition
- Rewrite systems
- Partial evaluation
- Nameless de Bruijn binding constructs
- Lightweight codular staging
- Class morphing
- Splicing binders
- AOP techniques to achieve separation of concerns
- Parameterizing over types (generic programming)
- Feature modeling - domain engineering
- Composition vs. transformation generation