Noweb – A Simple, Extensible Tool for Literate Programming

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • spiralweb

    Literate programming system with a Pandoc-extended Markdown backend.

  • Literate Programming is one of those ideas I keep coming to. There is an idea there that touches on something I find to be true about software development, namely that the communication of an idea to other humans is the most critical piece. There is a similar idea in Naur's paper "Programming as Theory Building."

    That said, I've never loved the LaTeX-centric nature of most tools. I don't like heavier markup systems while I am writing prose, which is why I wrote SpiralWeb (https://github.com/michaeljmcd/spiralweb) as a Pandoc/Markdown centric tool.

  • fw-utf8

    Modern fork of FunnelWeb (original written by Ross Williams)

  • I found Mr. Ross' funnelweb utility to have the best syntax. Unique and easy to read.

    http://ross.net/funnelweb/tutorial/index.html

    Unfortunately the only known implementation was last updated over two decades ago, and is written in pretty hard to understand C.

    I asked for permission and started a repository here: https://github.com/loa-in-/fw-utf8

    I currently have it unmodified there, except for disabled check for ASCII range. (this modification is included in initial commit, sorry, my bad). Otherwise code is the same.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Literate

    A literate programming tool for any language

  • verso

    A new approach to literate programming.

  • https://github.com/nickpascucci/verso works like this. There's a syntax for creating tags in source files, and exposition for tags lives in a separate file.

  • clojure-small-pieces

    Clojure in Small Pieces -- Literate Clojure - Created by Tim Daly

  • I've been writing literate programs for years

    Here is a video showing a literate form of Clojure:

    https://www.youtube.com/watch?v=mDlzE9yy1mk

    The literate program creates a new PDF and a working version of Clojure, including running a test suite. If you change the literate code and type 'make' it re-makes the PDF with the new changes and rebuilds/retests Clojure.

    and here is the source:

    https://github.com/robleyhall/clojure-small-pieces

  • ntangle.vim

    Literate programming in VIM

  • Here are a couple more projects that may or may not seem like Literate Programming, but are motivated squarely by its ethos: to order code for exposition, independent of what the compiler wants.

    * https://github.com/snaptoken, the engine behind https://viewsourcecode.org/snaptoken/kilo. The key new feature here seems to be that fragments are always shown in context that can be dynamically expanded by the reader.

    * https://github.com/jbyuki/ntangle.vim -- a literate system that tangles your code behind the scenes every time you :wq in Vim or Neovim.

    * My system of layers deemphasizes typesetting and is designed to work within a programmer's editor (though IDEs will find it confusing): http://akkartik.name/post/wart-layers. I don't have a single repo for it, mostly[1] because it's tiny enough to get bundled with each of my projects. Perhaps the most developed place to check out is the layered organization for a text editor I built in a statement-oriented language with built-in support for layers: https://github.com/akkartik/mu1/tree/master/edit#readme. It's also in my most recent project, though it's only used in a tiny bootstrapping shim before I wormhole solipsistically into my own universe: https://github.com/akkartik/mu/blob/main/tools/tangle.readme.... Maybe one day I'll have layers in this universe.

    [1] And also because I think example repos are under-explored compared to constant attempts at reusable components: http://akkartik.name/post/four-repos

  • dotfiles

    Yet another dotfile-repository (by skx)

  • I keep meaning to experiment with bable/tangle in Emacs.

    I setup a simple literate configuration of my init file via markdown, which worked out really well, but doing it "properly" in org-mode would be a nice evolution.

    With markdown I just search for code-blocks, write them all sequentially to a temporary buffer and evaluate once done. So it is very simplistic, but also being able to write and group things is useful:

    https://github.com/skx/dotfiles/blob/master/.emacs.d/init.md

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • knot

    A literate programming tool that uses Markdown. (by mqsoh)

  • Literate programming seems to becoming popular in the R community due to KnitR and Rmarkdown. This seems to have sparked a few similar-working tools with possibly broader scope and adoption. In my bookmarks I find:

    - knot [1]: tangles source code from a text file formatted using plain markdown syntax, can use any markdown converter for weaving into a printable document

    - snarl [2]: extends markdown code blocks with syntax used for tangling, its "weave" steps just removes the additional syntax and outputs plain markdown

    - pylit [3] [4]: a bidirectional converter: code to formatted text and back. Uses reST for formatting, and preserves line numbers which is useful when debugging. Not an LP tool strictly, as it doesn't define/rearrange code blocks so you have to write your script in the order the compiler wants it, not in the order that would make the best exposition.

    Both seem to preserve relative indentation of chunks, so would be useful for Python too.

    [1]: https://github.com/mqsoh/knot

  • portia

    ultimate literate programing preprocessor (by rixed)

  • For the record, I wrote portia[0], based on funnelweb and which accept a (mostly) compatible syntax, in a literate style. Its source/doc can be browsed [1].

    I still use it from time to time, especially for small, well defined projects, because I find it useful to have to argue with myself when designing a software. It's not so much about producing a nice documentation or a proper exposition of some idea, than it is about having to formulate all the reasoning, the alternatives, and the choices.

    [0]: https://github.com/rixed/portia

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Program to execute entire org-mode files

    2 projects | /r/emacs | 25 Feb 2022
  • Bikeshedding Friday: How do you organize your init file?

    7 projects | /r/emacs | 17 Sep 2021
  • What parts of your config do you like best?

    2 projects | /r/emacs | 17 Jan 2021
  • Multi-Lingual Literate Programming with Mdsh

    1 project | news.ycombinator.com | 15 Feb 2024
  • literate-calc-mode.el: 🧮 Literate programming for M-x calc

    1 project | /r/planetemacs | 4 Dec 2023