50 likes | 147 Views
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
E N D
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 Assist in mitigating effects of accidental complexities. - 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”
“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