Compiler construction: Craftsmanship or engineering?

  • William M. Waite
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1060)


Engineering is defined as the application of scientific principles to practical purposes, as the design, construction and operation of efficient and economical structures, equipment and systems. Computer science is concerned with efficient and economical systems, but what are the “scientific principles” that we apply in their design, construction and operation? Compiler construction was one of the first areas of computer science to be treated formally, and is often used as a touchstone for application of scientific principles in our field, but does formalization imply scientific principles? The issues of craftsmanship and engineering in compiler construction are bound up with the set of problems that compilers must solve and the ways in which people solve problems by computer; our positions on these issues determine our approach to compiler research.


Problem solving formal methods complexity modularity reusability 


  1. 1.
    Aho, A. V., Ganapathi, M. & Tjiang, S. W. K., “Code Generation Using Tree Pattern Matching and Dynamic Programming,” ACM Transactions on Programming Languages and Systems 11 (October 1989), 491–516.Google Scholar
  2. 2.
    Ammann, U., “The Method of Structured Programming Applied to the Development of a Compiler,” in Proceedings of the International Computing Symposium 1973, North-Holland, Amsterdam, 1974, 94–99.Google Scholar
  3. 3.
    Ammann, U., “Die Entwicklung eines PASCAL-Compilers nach der Methode des Strukturierten Programmierens,” Eidgenössischen Technischen Hochschule Zürich, Ph.D. Thesis, Zürich, 1975.Google Scholar
  4. 4.
    Ammann, U., “On Code Generation in a PASCAL Compiler,” Software — Practice & Experience 7 (1977), 391–423.Google Scholar
  5. 5.
    Boehm, H-J. & Weiser, M., “Garbage Collection in an Uncooperative Environment,” Software — Practice & Experience 18 (September 1988), 807–820.Google Scholar
  6. 6.
    Buxton, J. N. & Randell, B., eds., Software Engineering Techniques, NATO Science Committee, April 1970.Google Scholar
  7. 7.
    Dencker, P., Dürre, K. & Heuft, J., “Optimization of Parser Tables for Portable Compilers,” ACM Transactions on Programming Languages and Systems 6 (October 1984), 546–572.Google Scholar
  8. 8.
    Dijkstra, E. W., On the Teaching of Programming, i.e. On the Teaching of Thinking, International Summer School on Language Hierarchies and Interfaces, Munich, 1975.Google Scholar
  9. 9.
    Fischer, G. & Nakakoji, K., “Empowering Designers with Integrated Design Environments,” in Artificial Intelligence in Design '91, J. Gero, ed., Butterworth-Heinemann Ltd., Oxford, 1991, 191–209.Google Scholar
  10. 10.
    Gray, R. W., “A Generator for Lexical Analyzers That Programmers Can Use,” Proceedings USENIX Conference (June 1988).Google Scholar
  11. 11.
    Gray, R. W., Heuring, V. P., Levi, S. P., Sloane, A. M. & Waite, W. M., “Eli: A Complete, Flexible Compiler Construction System,” Communications of the ACM 35 (February 1992), 121–131.Google Scholar
  12. 12.
    Hext, J. B., “Compile-Time Type Matching,” The Computer Journal 9 (February 1967), 365–369.Google Scholar
  13. 13.
    Jeffries, R., Turner, A. T., Polson, P. G. & Atwood, M. E., “The Processes Involved in Software Design,” in Acquisition of Cognitive Skills, J. R. Anderson, ed., Lawrence Erlbaum Associates, Hillsdale, NJ, 1981, 254–284.Google Scholar
  14. 14.
    Johnson, S. C., “Yacc — Yet Another Compiler-Compiler,” Bell Telephone Laboratories, Computer Science Technical Report 32, Murray Hill, NJ, July 1975.Google Scholar
  15. 15.
    Kastens, U., “LIGA: A Language Independent Generator for Attribute Evaluators,” Universität-GH Paderborn, Bericht der Reihe Informatik Nr. 63, Paderborn, FRG, 1989.Google Scholar
  16. 16.
    Kleene, S. C., Introduction to Metamathematics, D. Van Nostrand Company, NYC, 1952.Google Scholar
  17. 17.
    Krueger, C. W., “Software Reuse,” ACM Computing Surveys 24 (June 1992), 131–184.Google Scholar
  18. 18.
    Ĺesk, M. E., “LEX — A Lexical Analyzer Generator,” Bell Telephone Laboratories, Computing Science Technical Report 39, Murray Hill, NJ, 1975.Google Scholar
  19. 19.
    Levy, L. S., “A Metaprogramming Method and its Economic Justification,” IEEE Transactions on Software Engineering SE-12 (February 1986), 272–277.Google Scholar
  20. 20.
    Naur, P. & Randell, B., eds., Software Engineering, NATO Science Committee, January 1969.Google Scholar
  21. 21.
    Prieto-Díaz, R'en, “Status Report: Software Reusability,” IEEE Software 10 (May 1993), 61–66.Google Scholar
  22. 22.
    Proebsting, T. A., “Simple and Efficient BURS Table Generation,” SIGPLAN Notices 27 (July 1992), 331–340.Google Scholar
  23. 23.
    Shaw, M., “Larger Scale Systems Require Higher-Level Abstractions,” in Proceedings Fifth INTL Workshop on Software Specification and Design, IEEE Computer Society, 1989, 143–146.Google Scholar
  24. 24.
    Sheridan, P. B., “The FORTRAN Arithmetic-Compiler of the IBM FORTRAN Automatic Coding System,” Communications of the ACM 2 (February 1959), 9–.Google Scholar
  25. 25.
    Sloane, A. M., “An Evaluation of an Automatically Generated Compiler,” ACM Transactions on Programming Languages and Systems 17 (September 1995), 691–703.Google Scholar
  26. 26.
    Stone, H. S., Discrete Mathematical Structures and Their Applications, Science Research Associates, Chicago, 1973.Google Scholar
  27. 27.
    Waite, W. M., Heuring, V. P. & Kastens, U., “Configuration Control in Compiler Construction,” in Proceedings of the International Workshop on Software Version and Configuration Control, Teubner, Stuttgart, FRG, 1988.Google Scholar
  28. 28.
    Zimmermann, E., Kastens, U. & Hutt, B., GAG: A Practical Compiler Generator, Lecture Notes in Computer Science #141, Springer Verlag, Heidelberg, 1982.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • William M. Waite
    • 1
  1. 1.University of ColoradoBoulderUSA

Personalised recommendations