Reimagining literate programming

James D Palmer, Eddie Hillenbrand

Research output: Chapter in Book/Report/Conference proceedingConference contribution

4 Citations (Scopus)

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.

Original languageEnglish (US)
Title of host publicationProceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA
Pages1007-1014
Number of pages8
DOIs
StatePublished - 2009
EventOOPSLA 2009 Companion - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009 - Orlando, FL, United States
Duration: Oct 25 2009Oct 29 2009

Other

OtherOOPSLA 2009 Companion - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009
CountryUnited States
CityOrlando, FL
Period10/25/0910/29/09

Fingerprint

Computer programming
Computer program listings
Computer systems programming
Glues
Computer programming languages

Keywords

  • Ginger
  • Literate programming
  • Program comprehension

ASJC Scopus subject areas

  • Software

Cite this

Palmer, J. D., & Hillenbrand, E. (2009). Reimagining literate programming. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA (pp. 1007-1014) https://doi.org/10.1145/1639950.1640072

Reimagining literate programming. / Palmer, James D; Hillenbrand, Eddie.

Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA. 2009. p. 1007-1014.

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Palmer, JD & Hillenbrand, E 2009, Reimagining literate programming. in Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA. pp. 1007-1014, OOPSLA 2009 Companion - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009, Orlando, FL, United States, 10/25/09. https://doi.org/10.1145/1639950.1640072
Palmer JD, Hillenbrand E. Reimagining literate programming. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA. 2009. p. 1007-1014 https://doi.org/10.1145/1639950.1640072
Palmer, James D ; Hillenbrand, Eddie. / Reimagining literate programming. Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA. 2009. pp. 1007-1014
@inproceedings{62bfda84e5c740a0917d036acdfcd8e7,
title = "Reimagining literate programming",
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.",
keywords = "Ginger, Literate programming, Program comprehension",
author = "Palmer, {James D} and Eddie Hillenbrand",
year = "2009",
doi = "10.1145/1639950.1640072",
language = "English (US)",
isbn = "9781605587660",
pages = "1007--1014",
booktitle = "Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA",

}

TY - GEN

T1 - Reimagining literate programming

AU - Palmer, James D

AU - Hillenbrand, Eddie

PY - 2009

Y1 - 2009

N2 - 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.

AB - 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.

KW - Ginger

KW - Literate programming

KW - Program comprehension

UR - http://www.scopus.com/inward/record.url?scp=72249097353&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=72249097353&partnerID=8YFLogxK

U2 - 10.1145/1639950.1640072

DO - 10.1145/1639950.1640072

M3 - Conference contribution

AN - SCOPUS:72249097353

SN - 9781605587660

SP - 1007

EP - 1014

BT - Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA

ER -