Title: Generative Programming: Past, present, and future
1Generative Programming Past, present, and future
- A panel at GPCE 2004
- Vancouver, BC
- October 27, 2004
Jeff Gray, University of Alabama at Birmingham
2How 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
3How 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
4How 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
5What 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