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 mother Assist 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:
“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