ABSTRACT
In this paper we describe Ginger, a new language with first class support for literate programming. Literate programming is a philosophy that argues computer programs should be written as literature with human readability and understanding of paramount importance. While the intent of literate programming is to make understanding computer programs simpler, most literate programming systems are quite complex and consist of three different languages corresponding to 1) an implementation language, 2) a documentation language, and 3) a literate programming glue language. In Knuth's original implementation these were Pascal, TeX, and WEB respectively. Antithetical to the goals that literate programming espouses, this three language paradigm creates a truly challenging environment for new programmers. In this paper we reimagine literate programming as a core programming language feature and describe a novel system for literate programming based on G-expression transformations. We show that Ginger code can be used to naturally represent code, prose, and literate connections, which in turn unifies, simplifies and significantly extends the literate programming experience.
- K. Beck. A theory of programming. Dr. Dobb's Journal, Nov. 2007.Google Scholar
- A. Binstock. Interview with Donald Knuth. InformIT, Apr. 2008.Google Scholar
- M.-J. Dominus. POD is not literate programming. http://www.perl.com/pub/a/tchrist/litprog.html, Mar. 2000.Google Scholar
- R. Fjeldstad and W. Hamlen. Application program maintenance study: Report to our respondents. Tutorial on Software Maintenance, 1982.Google Scholar
- P. Grubb and A. A. Takang. Software Maintenance: Concepts and Practice. World Scientific Publishing Company, Sept. 2003.Google Scholar
Cross Ref
- P. Hudak, J. Hughes, S. P. Jones, and P. Wadler. A history of Haskell: being lazy with class. In Proceedings of the third ACM SIGPLAN conference on the history of programming languages. ACM, 2007. Google Scholar
Digital Library
- A. L. Johnson and B. C. Johnson. Literate programming using noweb. The Linux Journal, Oct. 1997. Google Scholar
Digital Library
- D. E. Knuth. Literate programming. The Computer Journal, 27(2):97--111, 1984. Google Scholar
Digital Library
- D. E. Knuth. Literate programming. Center for the Study of Language and Information, Stanford, CA, USA, 1992. Google Scholar
Digital Library
- M. W. Mengel and P. Briggs. Nuweb home page. http://nuweb.sourceforge.net/.Google Scholar
- G. Milde. PyLit home page. http://pylit.berlios.de/.Google Scholar
- J. D. Palmer. Ginger: Implementing a new lisp family syntax. In Proceedings of the 47th Annual Southeast Regional Conference. ACM, Mar. 2009. Google Scholar
Digital Library
- D. L. Parnas and P. C. Clements. A rational design process: How and why to fake it. IEEE Transactions on Software Engineering, 12(2):251--257, 1986. Google Scholar
Digital Library
- V. Pieterse, D. G. Kourie, and A. Boake. Literate programming to enhance agile methods. In J. Eckstein and H. Baumeister, editors, XP, volume 3092 of Lecture Notes in Computer Science, pages 250--253. Springer, 2004.Google Scholar
- N. Ramsey. Literate programming simplified. IEEE Software, 11(5):97--105, 1994. Google Scholar
Digital Library
- J. Raskin. Comments are more important than code. ACM Queue, 3(2):64--ff, 2005. Google Scholar
Digital Library
- E. Ream. Leo home page. http://webpages.charter.net/edreamleo/front.html.Google Scholar
- J. Sametinger. Object-oriented documentation. ACM SIGDOC Asterisk Journal of Computer Documentation, 18(1):3--14, 1994. Google Scholar
Digital Library
- J. Sametinger and A. Stritzinger. A documentation scheme for object-oriented software systems. ACM SIGPLAN OOPS Messenger, 4(3):6--17, 1993. Google Scholar
Digital Library
- D. D. Smith. Designing Maintainable Software. Springer, May 1999. Google Scholar
Digital Library
- T. A. Standish. An essay on software reuse. IEEE Transactions on Software Engineering, 10(5):494--497, September 1984. Special Issue on Software Reusability.Google Scholar
Digital Library
- R. Williams. FunnelWeb home page. http://www.ross.net/funnelweb/.Google Scholar
Index Terms
Reimagining literate programming
Recommendations
A case for contemporary literate programming
SAICSIT '04: Proceedings of the 2004 annual research conference of the South African institute of computer scientists and information technologists on IT research in developing countriesIn this paper we discuss the characteristics of Literate Programming and the development of programming environments to support Literate Programming in the past two decades. We argue that recent technological developments allow Literate Programming to ...
Literate Smalltalk Programming Using Hypertext
The problem examined in this paper is: How and to what extent can hypertext support literate programming in Smalltalk? In order to examine this question we have created a hypertext system which allows us to write Smalltalk code and documentation, and to ...
Elucidative programming
In this paper we introduce Elucidative Programming as a variant of Literate Programming. Literate Programming represents the idea of organizing a source program in an essay that documents the program understanding. An elucidative program connects ...






Comments