Download - Generative Programming: Past, present, and future

Transcript
Page 1: 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

Page 2: Generative Programming: Past, present, and future

“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…

Page 3: Generative Programming: Past, present, and future

“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.

Page 4: Generative Programming: Past, present, and future

“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

Page 5: Generative Programming: Past, present, and future

“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