Skip to main content
Log in

Automatically Restructuring Programs for the Web

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

This paper explains how to automatically transform a batch program into a standard CGI program. The transformation preserves the program's behavior even if consumers use the back button or the window-cloning facilities of their Web browsers. The paper demonstrates the workings of the transformation for both Scheme and C programs and discusses how it applies to any full-fledged programming language.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Appel, A. 1992. Compiling With Continuations. The Pitt Building, Trumpington Street, Cambridge CB2 1RP: Cambridge University Press.

    Google Scholar 

  • Atkins, D.L., Ball, T., Bruns, G., and Cox, K.C. 1999. Mawl: A domain-specific language for form-based services. Software Engineering, 25(3):334–346.

    Google Scholar 

  • Baker, H.G. 1994. CONS should not CONS its arguments, Part II: Cheney on the M.T.A. comp.lang.scheme.c newsgroup.

  • Bakken, S.S., Aulbach, A., Schmid, E. Winstead, J. Wilson, L.T. Lerdorf R., Zmievski, A., and Ahto, J. 2002. http://www.php.net/manual/.

  • Borland Software Corporation. http://www.borland.com/jbuilder/.

  • Brabrand, C., MØller, A., Sandholm, A., and Schwartzbach, M.I. 1999. A runtime system for interactive web services. In Journal of Computer Networks.

  • Clements, J., Flatt, M. and Felleisen, M. 2001. Modeling an algebraic stepper. In European Symposium on Programming.

  • Clinger, W.D. 1998. Proper tail recursion and space efficiency. In Proceedings of ACMSIGPLAN Conference on Programming Language Design and Implementation, pp. 174–185.

  • Coward, D. 2000. Java Servlet Specification Version 2.3. http://java.sun.com/products/servlet/.

  • Daemen, J. and Rijmen, V. Advanced Encryption Standard. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.

  • Felleisen, M. and Hieb, R. 1992. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 102:235–271. Original version in: Technical Report 89-100, Rice University, June 1989.

    Google Scholar 

  • Fielding, R., Gettys, J., Mogul, H. Frystyk, L. Masinter, P.L., and Berners-Lee, T. 1999. Hypertext transfer protocol-HTTP/1.1. Internet Request for Comments 2616.

  • Findler, R.B., Clements, J. Flanagan, C., Flatt, M., Krishnamurthi, S., Steckler, P., and Felleisen, M. 2002. DrScheme: A programming environment for Scheme. Journal of Functional Programming, 12(2):159–182. A preliminary version of this paper appeared in PLILP 1997, LNCS vol. 1292, pp. 369-388.

    Google Scholar 

  • Findler, R.B. and Flatt, M. 1998. Modular object-oriented programming with units and mixins. In Proceedings of ACMSIGPLAN International Conference on Functional Programming, pp. 94–104.

  • Flanagan, C., Sabry, A., Duba, B.F., and Felleisen, M. 1993. The essence of compiling with continuations. In Proceedings ACM SIGPLAN 1993 Conf. on Programming Language Design and Implementation, PLDI'93, Albuquerque, NM, USA, 23-25 June 1993, vol. 28(6), New York: ACM Press, pp. 237–247.

    Google Scholar 

  • Flatt, M. 1997. PLT MzScheme: language manual. Technical Report TR97-280, Rice University. http://www.pltscheme. org/software/mzscheme/.

  • Flatt, M. 2002. Composable and compilable macros: You want it when?. In Proceedings of ACM SIGPLAN International Conference on Functional Programming.

  • Flatt, M. and Felleisen, M. 1998. Units: Cool modules for HOT languages. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 236–248.

  • Flatt, M., Findler, R.B., Krishnamurthi, S., and Felleisen, M. 1999. Programming languages as operating systems (or Revenge of the son of the lisp machine). In Proceedings of ACM SIGPLAN International Conference on Functional Programming, pp. 138–147.

  • Flatt, M., Krishnamurthi, S., and Felleisen, M. 1998. Classes and mixins. In Proceedings of the ACM Conference Principles of Programming Languages.

  • Friedman, D.P., Wand, M., and Haynes, C.T. 1992. Essentials of Programming Languages Cambridge. MA: The MIT Press.

    Google Scholar 

  • Graham, P., Lisp in web-based applications. http://www.paulgraham.com/lib/paulgraham/bbnexcerpts.txt.

  • Graunke, P., Krishnamurthi, S., van der Hoeven, S., and Felleisen, M. 2001. Programming the web with high-level programming languages. In European Symposium on Programming.

  • Hughes, J. 2000. Generalising monads to arrows. Science of Computer Programming, 37(1-3):67–111.

    Google Scholar 

  • International Business Machines, Inc. http://www.ibm.com/websphere.

  • Jackson, M.A. 1975. Principles of Program Design. Academic Press.

  • Johnsson, T. 1985. Lambda lifting:Transforming programs to recursive equations. In Proceedings of the Conference on Functional Programming Languages and Computer Architecture. Nancy, France.

  • Kelsey, R., Clinger, W., and, J.R. (eds.). 1998, Revised5 report of the algorithmic language scheme. ACMSIGPLAN Notices, 33(9):26–76.

  • Kristol, D. and Montulli, L. 1997. RFC 2109: Proposed Standard for HTTP state management mechanism. http://www.ietf.org/rfc/rfc2109.txt.

  • NCSA, The Common Gateway Interface. http://hoohoo.ncsa.uiuc.edu/cgi/.

  • Open Market, Inc., FastCGI specification. http://www.fastcgi.com/

  • Queinnec, C. 2000. The influence of browsers on evaluators or, continuations to program Web servers'. In ACM SIGPLAN International Conference on Functional Programming.

  • Reed, D.P. 1983. Implementing atomic actions on decentralized data. In ACMTransactions on Computer Systems. pp. 234–254.

  • Rees, J.A., Adams, N.I., and Meehan, J.R. 1988. The T manual.

  • Reynolds, J. 1972. Definitional interpreters for higher-order programming languages. In Proceedings of the 25th ACM National Conference, pp. 717–740.

  • Roth, M. and Pelegrí-Llopart, E. 2002. JavaServer Pages Specification. http://java.sun.com/products/ jsp/.

  • Strachey, C. and Wadsworth, C.P. 1974. Continuations: A mathematical semantics for handling full jumps, technical monograph PRG-11. Technical report, Oxford University Computing Laboratory, Programming Research Group.

  • Sun Microsystems, Inc. http://java.sun.com/products/jpda/.

  • Sun Microsystems, Inc., Forte Tools. http://www.sun.com/forte/.

  • Thiemann, P. 2002. WASH/CGI: Server-side web scripting with sessions and typed, compositional forms. In Practical Applications of Declarative Languages.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Matthews, J., Findler, R.B., Graunke, P. et al. Automatically Restructuring Programs for the Web. Automated Software Engineering 11, 337–364 (2004). https://doi.org/10.1023/B:AUSE.0000038936.09009.69

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:AUSE.0000038936.09009.69

Navigation