The Computer Journal
A rational design process: How and why to fake it
IEEE Transactions on Software Engineering
Literate programming
A documentation scheme for object-oriented software systems
ACM SIGPLAN OOPS Messenger
ACM SIGDOC Asterisk Journal of Computer Documentation
Literate Programming Using Noweb
Linux Journal
Designing Maintainable Software
Designing Maintainable Software
Literate Programming Simplified
IEEE Software
Comments are More Important than Code
Queue - Patching and Deployment
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Ginger: implementing a new Lisp family syntax
Proceedings of the 47th Annual Southeast Regional Conference
Writing software to be understood: an exercise in Ginger using literate programming
Journal of Computing Sciences in Colleges
Ficticious: MicroLanguages for interactive fiction
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Hi-index | 0.00 |
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.