Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Language Design for Program Manipulation

Published: 01 January 1992 Publication History

Abstract

The design of procedural and object-oriented programming languages is considered with respect to how easily programs written in those languages can be formally manipulated. Current procedural languages such as Pascal, Modula-2 and Ada; generally support such program manipulations, except for some annoying anomalies and special cases. Three main areas of language design are identified as being of concern from a manipulation viewpoint: the interface between concrete and abstract syntax; the relationship between the abstract syntax and static semantics naming, scoping and typing; and the ability to express basic transformations (folding and unfolding). Design principles are suggested so that the problems identified for current languages can be avoided in the future.

References

[1]
{1} D. E. Knuth, "Structured programming with GOTO statements," Comput. Surveys, vol. 6, pp. 261-301, Dec. 1974.
[2]
{2} H. Partsch and R. Steinbruggen, "Program transformation systems," Comput. Surveys, vol. 15, pp. 199-236, Sept. 1983.
[3]
{3} T. Teitelbaum and T. W. Reps, "The Cornell Program Synthesizer: a syntax-directed programming environment," Commun. ACM, vol. 24, pp. 563-573, Sept. 1981.
[4]
{4} R. Bahlke and G. Snelting, "The 4 system: from formal language definitions to interactive programming environments," ACM Trans. Program. Languages Syst., vol. 8, pp. 547-576, Oct. 1986.
[5]
{5} L. R. Dykes and R. D. Cameron, "Toward high-level editing in syntax-based editors," Software Eng. J., vol. 5, pp. 237-244, July 1990.
[6]
{6} J. Bentley, "Programming pearls--profilers," Commun. ACM, vol. 30, pp. 587-592, July 1987.
[7]
{7} J. Huang, "Program instrumentation and software testing," Computer, vol. 11, pp. 25-32, Apr. 1978.
[8]
{8} E. Bush, "The automatic restructuring of COBOL," in Proc. Conf. On Software Maintenance-1985. Los Alamitos, CA: IEEE Computer Soc., 1985, pp. 35-41.
[9]
{9} M. Weiser, "Program slicing," IEEE Trans. Software Eng., vol. SE-10, pp. 352-357, July 1984.
[10]
{10} R. A. Freak, "A Fortran to Pascal translator," Software Practice and Experience, vol. 11, pp. 717-732, July 1981.
[11]
{11} B. Krieg-Brückner, "Language comparison and source-to-source translation," in Program Transformation and Programming Environments, P. Pepper, Ed. New York: Springer-Verlag, 1984, pp. 299-304.
[12]
{12} R. D. Cameron, "Software reuse with metaprogramming systems," in Proc. 5th Ann. Pacific Northwest Software Quality Conf. 1987, Oct. 1987, pp. 223-232.
[13]
{13} B. W. Terry and R. D. Cameron, "Software maintenance using metaprogramming systems," in Proc. Conf. on Software Maintenance 1987. Los Alamitos, CA: IEEE Computer Soc., 1987, pp. 115-119.
[14]
{14} "Specification for computer programming language Pascal," Int. Standards Organization, ISO 7185, 1983.
[15]
{15} B. W. Kernighan and D. M. Ritchie, The C Programming Language. Englewood Cliffs, NJ: Prentice-Hall, 1978.
[16]
{16} N. Wirth, Programming in Modula-2 (Texts and Monographs in Computer Science), 3rd ed. Berlin: Springer-Verlag, 1985.
[17]
{17} "Reference manual for the Ada Programming Language," U.S. Dept. of Defense, ANSI/MIL-STD-1815A-1983, Feb. 1983.
[18]
{18} B. Meyer, Object-Oriented Software Construction (Series in Computer Science). Englewood Cliffs, NJ: Prentice-Hall, 1988.
[19]
{19} L. Cardelli et al., "Modula-3 report," Digital Equip. Corp. Syst. Res. Ctr., Palo Alto, CA, Aug. 1988.
[20]
{20} R. M. Burstall, D. B. MacQueen, and D. T. Sannella, "HOPE: an experimental applicative language," in Conf. Rec. 1980 Lisp Conf., Jan. 1980, pp. 136-143.
[21]
{21} D. A. Turner, "An overview of Miranda," SIGPLAN Not., vol. 21, pp. 158-166, Dec. 1986.
[22]
{22} R. M. Burstall and J. Darlington, "A transformation system for developing recursive programs," J. ACM, vol. 24, pp. 44-67, Jan. 1977.
[23]
{23} T. W. Reps and T. Teitelbaum, The Synthesizer Generator: A System for Constructing Language-Based Editors. New York: Springer-Verlag, 1989.
[24]
{24} A. V. Aho and J. D. Ullman, The Theory of Parsing, Translation and Compiling, vol. 1: Parsing (Series in Automatic Computation). Englewood Cliffs, NJ: Prentice-Hall, 1972.
[25]
{25} S. C. Johnson, "YACC: yet another compiler-compiler," Bell Labs., Murray Hill, NJ, Tech. Rep. 32, 1978.
[26]
{26} R. D. Cameron and M. R. Ito, "Grammar-based definition of metaprogramming systems," ACM Trans. Program. Languages Syst., vol. 6, pp. 20-54, Jan. 1984.
[27]
{27} O. L. Madsen and C. Norgaard, "An object-oriented metaprogramming system," in Proc. 21st Ann. Hawaii Int. Conf. on Software Track, B. Shriver, Ed. Los Alamitos, CA: IEEE Computer Soc., 1988, pp. 406-415.
[28]
{28} G. Goos, W. A. Wulf, A. Evans, Jr., and K. J. Butler, 28: An Intermediate Language for Ada (Lecture Notes in Computer Sci., vol. 161). Berlin: Springer-Verlag, 1983.
[29]
{29} T. Reps and T. Teitelbaum, "The Synthesizer generator," SIGPLAN Not., vol. 19, pp. 42-48, May 1984.
[30]
{30} E. A. T. Merks, "Acer: manipulation principles applied to language design," Ph.D. degree work in progress, School of Comput. Sci., Simon Fraser Univ., Burnaby, BC, Can.
[31]
{31} L. Cardelli, "Typeful programming," Digital Equip. Corp. Syst. Res. Ctr., Palo Alto, CA, Tech. Rep. 45, May 1989.
[32]
{32} P. Grogono, "32, assertions, and pragmas," SIGPLAN Not., vol. 24, pp. 79-84, Mar. 1989.
[33]
{33} M. J. Kaelbling, "Programming languages should not have comment statements," SIGPLAN Not., vol. 23, pp. 59-60, Oct. 1988.
[34]
{34} B. Stroustrup, The C++ Programming Language (Series in Computer Sci.). Reading, MA: Addison-Wesley, 1986.
[35]
{35} V. Donzeau-Gouge, G. Kahn, B. Lang, and B. Mélèse, "Document structure and modularity in Mentor," SIGPLAN Not., vol. 19, pp. 141-148, May 1984.
[36]
{36} D. E. Knuth, "Semantics of context-free languages," Math. Syst. Theory, vol. 2, no. 2, pp. 127-145, 1968.
[37]
{37} J. M. Dyck, "Syntactic manipulation systems for context-dependent languages," Master's thesis, School of Comput. Sci., Simon Fraser Univ., Burnaby, BC, Can., Aug. 1990.
[38]
{38} T. W. Reps, Generating Language-Based Environments (ACM Distinguished Dissertations). Cambridge, MA: MIT Press, 1984.
[39]
{39} B. Liskov et al., CLU Reference Manual (Lecture Notes in Computer Sci., vol. 114). Berlin: Springer-Verlag, 1981.
[40]
{40} L. Cardelli and P. Wegner, "On understanding types, data abstraction, and polymorphism," ACM Comput. Surveys, vol. 17, pp. 472-522, Dec. 1985.
[41]
{41} F. Bauer et al., Toward a Wide Spectrum Language to Support Program Specification and Program Development (Lecture Notes in Computer Sci.). Berlin: Springer-Verlag, 1979.
[42]
{42} E. A. T. Merks, "Compilation using multiple source-to-source stages," Master's thesis, School of Comp. Sci., Simon Fraser Univ., Burnaby, BC, Can., Apr. 1987.
[43]
{43} R. Kelsey and P. Hudak, "Realistic compilation by program transformation," in Proc. 16th Ann. ACM Symp. on Principles of Program. Languages, Jan. 1989, pp. 281-292.

Cited By

View all
  • (2020)Tailoring programs for static analysis via program transformationProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380343(824-834)Online publication date: 27-Jun-2020
  • (2019)Lightweight multi-language syntax transformation with parser parser combinatorsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314589(363-378)Online publication date: 8-Jun-2019
  • (2019)Towards s/engineer/botProceedings of the 1st International Workshop on Bots in Software Engineering10.1109/BotSE.2019.00019(43-47)Online publication date: 27-May-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering  Volume 18, Issue 1
January 1992
97 pages
ISSN:0098-5589
Issue’s Table of Contents

Publisher

IEEE Press

Publication History

Published: 01 January 1992

Author Tags

  1. Ada
  2. Modula-2
  3. Pascal
  4. abstract syntax
  5. high level languages
  6. language design
  7. naming
  8. object-oriented programming
  9. object-oriented programming languages
  10. procedural languages
  11. program manipulation
  12. program manipulations
  13. scoping
  14. software engineering
  15. static semantics
  16. typing
  17. unfolding

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 21 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Tailoring programs for static analysis via program transformationProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380343(824-834)Online publication date: 27-Jun-2020
  • (2019)Lightweight multi-language syntax transformation with parser parser combinatorsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314589(363-378)Online publication date: 8-Jun-2019
  • (2019)Towards s/engineer/botProceedings of the 1st International Workshop on Bots in Software Engineering10.1109/BotSE.2019.00019(43-47)Online publication date: 27-May-2019
  • (1994)Comments on "Language Design for Program Manipulation"IEEE Transactions on Software Engineering10.1109/32.26892420:3(218-219)Online publication date: 1-Mar-1994

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media