Literate Programming

A concept coined by Donald Knuth.

Literate Programming combines programming language with documentation language by embedding code blocks in the documentation. The embedded code blocks as tangled, or compiled, into a file the target programming language understands.

Most developers write the documentation as comments (usually after the code has been written) in the source code. Literate Programming flips the paradigm so that the documentation informs the code. The documentation becomes the source of truth that leads to the code.

As a trivial example, I write my css for my Obsidian Styles in a Markdown file (it's the Obsidian Styles source file!) and use a Python executable called md-tangle to generate a css file.

Here's an example gif of how that looks in practice.

In this gif, I demonstrate...

  • There's no file called "minimal-plus.css" in my Obsidian dotfiles directory
  • I show my Obsidian Styles Markdown note
  • I then run a command with md-tangle to generate minimal-plus.css from the Obsidian Styles note

Published on 2022-10-28

Note Explorer