This Article 
 Bibliographic References 
 Add to: 
A New Architecture for Transformation-Based Generators
December 2004 (vol. 30 no. 12)
pp. 1036-1054
A challenge of many transformation-based generators is that they are trying to achieve three mutually antagonistic goals simultaneously: 1) deeply factored operators and operands to gain the combinatorial programming leverage provided by composition, 2) high-performance code in the generated program, and 3) small (i.e., practical) generation search spaces. The Anticipatory Optimization Generator (AOG) has been built to explore architectures and strategies that address this challenge. The fundamental principle underlying all of AOG's strategies is to solve separate, narrow, and specialized generation problems by strategies that are narrowly tailored to specific problems rather than a single, universal strategy aimed at all problems. A second fundamental notion is the preservation and use of domain-specific information as a way to gain extra leverage on generation problems. This paper will focus on two specific mechanisms: 1) Localization: the generation and merging of implicit control structures and 2) Tag-Directed Transformations: a new control structure for transformation-based optimization that allows differing kinds of retained domain knowledge (e.g., optimization knowledge) to be anticipated, affixed to the component parts in the reuse library, and triggered when the time is right for its use.

[1] D.F. Bacon, S.L. Graham, and O.J. Sharp, “Compiler Transformations for High-Performance Computing,” ACM Surveys, vol. 26, no. 4, Dec. 1994.
[2] D. Batory, V. Singhal, M. Sirkin, and J. Thomas, “Scalable Software Libraries,” Proc. Symp. Foundations of Software Eng., 1993.
[3] D. Batory, M. Sirkin, and J. Thomas, “Reengineering a Complex Application Using a Scalable Data Structure Compiler,” Proc. ACM Sigsoft Int'l Symp. Foundations of Software Eng. (FSE), pp. 110-120, 1994.
[4] I.D. Baxter, C. Pidgeon, and M. Mehlich, “DMS: Program Transformations for Practical Scalable Software Evolution,” Proc. Int'l Conf. Software Eng., 2004.
[5] T.J. Biggerstaff, “The Library Scaling Problem and the Limits of Concrete Component Reuse,” Proc. Int'l Conf. Software Reuse, Nov. 1994.
[6] T.J. Biggerstaff, A Perspective of Generative Reuse, Annals of Software Engineering. O. Balci, ed., The Netherlands: Baltzer Science Publishers, AE Bussum, 1998.
[7] T.J. Biggerstaff, “Anticipatory Optimization in Domain Specific Translation,” Proc. Int'l Conf. Software Reuse, pp. 124-133, 1998.
[8] T.J. Biggerstaff, “Composite Folding in Anticipatory Optimization,” Microsoft Research Technical Report MSR-TR-98-22, 1998.
[9] T.J. Biggerstaff, “Pattern Matching for Program Generation: A User Manual,” Microsoft Research Technical Report MSR-TR-98-55, 1998.
[10] T.J. Biggerstaff, “Fixing Some Transformation Problems,” Proc. Automated Software Eng. Conf., 1999.
[11] T.J. Biggerstaff, “A New Control Structure for Transformation-Based Generators,” Software Reuse: Advances in Software Reusability, June 2000.
[12] T.J. Biggerstaff, “Control Localization in Domain Specific Translation,” Proc. Int'l Conf. Software Reuse, 2002.
[13] J.M. Boyle, “Abstract Programming and Program Transformation — An Approach to Reusing Programs,” Software Reusability, T. Biggerstaff and A. Perlis, eds., pp. 361-413, 1989.
[14] W.F. Clocksin and C.S. Mellish, Programming in Prolog. Springer-Verlag, 1987.
[15] J.R. Cordy, T.R. Dean, A.J. Malton, and K.A. Schneider, “Source Transformation in Software Engineering Using the TXL Transformation System,” J. Information and Software Technology, vol. 44, no. 13, pp. 827-837, Oct. 2002.
[16] R.F. Crew, “ASTLOG: A Language for Examining Abstract Syntax Trees,” Proc. USENIX Conf. Domain-Specific Languages, 1997.
[17] K. Czarnecki and U.W. Eisenecker, Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000.
[18] “Special Issue on Aspect-Oriented Programming,” Comm. ACM, T. Elrad et al., eds., vol. 44, no. 10, pp. 28-97, 2001.
[19] M. Feather, “A Survey and Classification of Some Program Transformation Approaches and Techniques,” Program Specification and Transformation, 1987.
[20] S.F. Fickas, “Automating the Transformational Development of Software,” IEEE Trans. Software Eng., vol. 11, no. 11, pp. 1268-1277, Nov. 1985.
[21] S. Fitzpatrick, T.J. Harmer, A. Stewart, M. Clint, and J.M. Boyle, “The Automated Transformation of Abstract Specifications of Numerical Algorithms into Efficient Array Processor Implementations,” Science of Computer Programming, vol. 28, no. 1, pp. 1-41, 1997.
[22] L.J. Guibas and D.K. Wyatt, “Compilation and Delayed Evaluation in APL,” Proc. Fifth Ann. ACM Symp. Principles of Programming Languages, pp. 1-8, 1978.
[23] P. Graham, On Lisp: Advanced Techniques for Common Lisp. Prentice Hall, 1994.
[24] P. Graham, The ANSI Common Lisp. Prentice Hall, 1996.
[25] N.D. Jones, “An Introduction to Partial Evaluation,” ACM Computing Surveys, vol. 28, no. 3 1996.
[26] E. Kant, “Synthesis of Mathematical Modeling Software,” IEEE Software, May 1993.
[27] M.D. Katz and D. Volper, “Constraint Propagation in Software Libraries of Transformation Systems,” Proc. Int'l J. Software Eng. and Knowledge Eng., vol. 2, no. 3, 1992.
[28] S.E. Keene, Object Oriented Programming in Common Lisp: A Programmers Guide to the Common Lisp Object System. Addison-Wesley, 1989.
[29] G. Kiczales, J. Lamping, A. Mendhekar, C. Maede, C. Lopes, J.-M. Loingtier, and J. Irwin, “Aspect Oriented Programming,” Technical Report SPL97-08 P9710042, Xerox PARC, 1997.
[30] G.B. Kotik, A.J. Rockmore, and D.R. Smith, “Use of Refine for Knowledge-Based Software Development,” Proc. Western Conf. Knowledge-Based Eng. and Expert Systems, 1986.
[31] J. Malpas, Prolog: A Relational Language and Its Applications. Prentice-Hall, 1987.
[32] J.M. Neighbors, “Software Construction Using Components,” PhD dissertation, Univ. of California at Irvine, 1980.
[33] J.M. Neighbors, “The Draco Approach to Constructing Software From Reusable Components,” IEEE Trans. Software Eng., vol. 10, no. 5, pp. 564-573, Sept. 1984.
[34] J.M. Neighbors, “Draco: A Method for Engineering Reusable Software Systems,” Software Reusability, T. Biggerstaff and A. Perlis, eds., pp. 295-319, 1989.
[35] H.A. Partsch, Specification and Transformation of Programs. Springer-Verlag, 1990.
[36] G.X. Ritter and J.N. Wilson, Handbook of Computer Vision Algorithms in the Image Algebra. CRC Press, 1996.
[37] T. Sheard, “Accomplishments and Research Challenges in Meta-Programming,” Proc. Second Int'l Workshop Semantics, Applications, and Implementation of Program Generation, Sept. 2001.
[38] D.R. Smith, “KIDS-A Knowledge-Based Software Development System,” Automating Software Design, M. Lowry and R. McCartney, eds., pp. 483-514, 1991.
[39] Y.V. Srinivas, “Refinement of Parameterized Algebraic Specifications,” Proc. Workshop Algorithmic Languages and Calculii, R. Bird and L. Meertens, eds., pp. 164-186, 1997.
[40] G.L. Steele Jr., Common Lisp: The Language, second ed. Digital Press, 1990.
[41] M.G.J. VanDenBrand, J. Heering, P. Klint, and P.A. Olivier, “Compiling Language Definitions: The ASF+SDF Compiler,” ACM Trans. Programming Languages and Systems, vol. 24, no. 4, pp. 334-368, July 2002.
[42] M.G.J. VanDenBrand, P. Klint, and J.J. Vinju, “Term Rewriting with Traversal Functions,” ACM Trans. Software Eng. Methodology, vol. 12, no. 2, pp. 152-190, Apr. 2003.
[43] E. Visser, “Strategic Pattern Matching. In: Rewriting Techniques and Applications,” Proc. Int'l Conf. Rewriting Techniques and Applications, July 1999.
[44] E. Visser, “A Survey of Strategies in Program Transformation Systems,” Proc. Workshop Reduction Strategies in Rewriting and Programming (WRS '01), B. Gramlich and S.L. Alba, eds., May 2001.
[45] P. Wadler, “Deforestation: Transforming Programs to Eliminate Trees,” J. Theoretical Computer Science, vol. 73, pp. 231-248, 1990.
[46] D.S. Wile, “Popart: Producer of Parsers and Related Tools,” USC/Information Sciences Inst. technical report, Marina del Rey, Calif., 1994, .
[47] D.S. Wile, “Toward a Calculus for Abstract Syntax Trees,” Proc. Workshop Algorithmic Languages and Calculii, R. Bird and L. Meertens, eds., pp. 324-352, 1997.

Index Terms:
Domain-specific architectures, image processing, inference engines, logic programming, optimization, partial evaluation, pattern matching, program synthesis, reusable software, search, program transformations.
Ted J. Biggerstaff, "A New Architecture for Transformation-Based Generators," IEEE Transactions on Software Engineering, vol. 30, no. 12, pp. 1036-1054, Dec. 2004, doi:10.1109/TSE.2004.89
Usage of this product signifies your acceptance of the Terms of Use.