Making literate programming fun again.
HTML Common Lisp Racket Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This project is being rewritten in Common Lisp for better performance, maintenance and deployment.

Literate programming is a term coined by professor Donald E. Knuth in 1984, describing a new way of thinking and writing computer programs.

In literate programming, writing a program

  • is not writing code for computer to run,

  • but words for other human beings to understand.

To quote prof. Knuth:

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 human beings what we want a computer to do.

The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.

— Donald E. Knuth
Literate Programming (1984). CSLI, 1992, pg. 99.

In traditional way of programming, programmers write code and supply documentation. In literate programming, programmers write documents and supply code. Hence, it is not about generating beautiful documentation.

Why literate programming?

  • Perhaps you like Qt-style tutorials?

  • As it enforces developers to think and explain before writing code, programs are generally more well-constructed and easier to understand.

  • It encourages people to write high-quality programs. Every piece of thought ought to be expressed clearly, making design decisions obvious.

  • Literate programming is a great help in understanding, maintaining, and extending programs.

  • Bugs that start from designing and thinking process are easier to detect and fix.

Why not literate programming?

  • Harder to debug using traditional tools.

  • Not really suitable for rapid development.

  • When you hate writing documentation.

Why Ulquikit?

  • Making literate programming fun and productive again.

  • Using the excellent AsciiDoc as the default markup language.

  • APIs are designed for human being.

  • Easily hackable and extensible.

Communication channels



This project is distributed under the terms of the GNU General Public License v3. See COPYING for further information.


Special thanks to:

Copyright 2013-2016 © Ha-Duong Nguyen <cmpitg AT gmailDOTcom>