Literate Programming
Created:
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to humans what we want the computer to do. – Donald E. Knuth, Literate Programming, 1984
Examples of literate programming
- ulix a literate, teaching operating system.
- knitr Elegant, flexible and fast dynamic report generation with R
- stich – is a small python library for writing reproducible reports in markdown. It’s heavily inspired by (read: a python clone of) knitr and RMarkdown.
- ferret.org the entire source of Ferret programming language as an emacs org file.
Tools
Literate – A modern literate programming system written in D
brew tap zyedidia/literate
brew install --HEAD zyedidia/literate/literate
In addition to those of CWEB:
- Markdown based – very easy to read and write Literate source.
- Generates readable and commented code in the target language (the generated code is usable by others)
- Reports syntax errors back from the compiler to the right line in the literate source
- Supports any language including syntax highlighting and pretty printing in HTML
- Compatible with Vim (literate.vim)
- Highly customizable (you can add your own HTML or CSS)
- Runs fast – wc.lit compiled for me in 7ms for both code and HTML output
- Supports TeX equations with
$
notation.
Inspired from CWEB:
- Automatically generates hyperlinks between code sections
- Formatted output similar to CWEB
I wrote lua4py page using Literate.
See also the Nimib project by Nim programmers.