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.
Similar content being viewed by others
References
Appel, A. 1992. Compiling With Continuations. The Pitt Building, Trumpington Street, Cambridge CB2 1RP: Cambridge University Press.
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.
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.
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.
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.
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.
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.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/B:AUSE.0000038936.09009.69