Literate Programming

A brief overview of literate programming: the combination of a programming language where the code is embedded in the documentation.

thumbnail for 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

Was this page helpful?

Subscribe to my Newsletter

Every other week I publish the Curiously Crafted newsletter.

In it, I explore the intersection of curiosity and craft: the people who make stuff, what they make and the way they pursue the craft of making.

The curious logo of Chase Adams: glasses and a bow tie.stay curious.