This blog is no longer updated. Please check my new blog here.

Julien Sobczak

Literate Programming

Donald Ervin Knuth

Un sujet intriguant, présenté par un grand monsieur de l'informatique, sans forcément être très pertinent de nos jours.

General

Paperback 0937073806 384 pages

Review

Difficile de savoir exactement ce qui se cache derrière le titre de cet ouvrage. Voici une citation de Donald Knuth (1992) pour nous aider :

*"I believe that the time is ripe for significantly better documentation of programs, and that we can best achieve this by considering programs to be works of literature. Hence, my title: "Literate Programming."*

Literate Programming (LP) est une approche qui présente un programme sous la forme de texte rédigé en langage naturel (Anglais, Français, …), entremêlé de code source (Pascal, C, …). Le programme suit un ordre logique qui facilite la compréhension du code source par un humain. Par exemple, on commencera par présenter l’objectif du programme, suivi de l’algorithme général. Les parties nécessitant davantage de précisions sont remplacées par un label pour être décrit plus bas dans le document. Cela permet d’introduire progressivement les notions, plutôt que d’être contraint par un ordre dicté par l’ordinateur chargé de l’exécution du programme. La compilation d’un programme LP produit à la fois un code source exécutable (Pascal, C) et une documentation consultable (ex TeX, PDF).

Cette approche originale est particulièrement séduisante pour décrire un algorithme (le sujet de prédilection de Donald Knuth). Toutefois, cette approche n’a pas percé dans le monde de l’entreprise. Plusieurs raisons peuvent expliquer cela :

Les programmes ne cessent d’être de plus en plus imposant par leur taille.

On écrit rarement des algorithmes comme le Quick Sort au quotidien.

Les langages de haut niveau permettent une expressivité telle qu’une documentation supplémentaire fait souvent doublon.

Contrairement aux autres livres du même auteur (The Art of Programming), Literate Programming est facilement abordable et ne demande pas de solides notions en mathématiques. Le livre est composé d’une série d’essais.