Generative Programming: Past, present, and future
description
Transcript of Generative Programming: Past, present, and future
Generative Programming: Past, present, and future
A panel at GPCE 2004
Vancouver, BC
October 27, 2004
Jeff Gray, University of Alabama at Birmingham
“How to teach it?” …to my motherAssist in automating tasks that are mundane and manual, such that
error prone nature is removed and productivity is improved.
Context: Real Estate Legal Forms
• 15 different documents
• 6 different participants with specific contact information
• Numerous places within each document where parts of contact information is to be inserted
Note: Some internal generator living within word processor…
“How to teach it?” … to my father-in-law
- Reducing all images to common sizes, producing thumbnails, providing a general index, linking all pictures in a slide show…- Many hours to do manually – about 20 seconds in “Web Picture Creator”
Assist in mitigating effects of accidental complexities.
“How to teach it?” … to my grad students The previous were somewhat embarrassingly simple
examples, but perhaps offers insight into essential characteristics of GP that could be understood by laypersons A key is relating experiences “with” and “without” the availability of
certain tools For Grad students:
Provide a 5k SLOC sample application Traditional Adaptation: Ask them to perform an adaptation using
“traditional” development (e.g., plain Java in Eclipse) Metaprogramming and reflection: Introduce core literature and related
tools; request students to perform same changes using OpenJava, Javassist, JMangler, etc
AOSD: introduce core literature in AOSD and tools; request students to perform same changes using AspectJ
Metamodeling: introduce core literature and GME; request students to perform generative tasks on domain-specific models
More info: http://www.cis.uab.edu/gray/Pubs/scicop-2004.pdf
“What do we do next?”
Key challenge managing the syntactic mismatch between abstraction
layers Examples
Debugging and testing a DSL program (e.g., debugging YACC output) It would be desirable to do this at the abstraction of the
conceptual artifact Version control of models/visualization
Forced to view differences as flat text files (perhaps in XML!), rather than the abstraction provided by the modeling tool