9
Notebooks et literate programming
principes et historique
gt notebook
Hugues Pecout (CNRS, UMR Géographie-Cités)
Sébastien Rey-Coyrehourcq (université de Rouen Normandie, UMR IDEES)
Raphaëlle Krummeich (université de Rouen Normandie, UMR IDEES)
mercredi 25 juin 2025
La programmation lettrée et “le notebook” pour
Voyons ce qu’il en est, par exemple, d’un fichier Word :
Comment procéder avec un shell Unix ?
Comment est “fabriqué” le fichier .docx ?
Que contient cette archive ?
data/docx:
total 20K
4.0K [Content_Types].xml
4.0K customXml
4.0K docProps
4.0K _rels
4.0K word
data/docx/customXml:
total 12K
4.0K item1.xml
4.0K itemProps1.xml
4.0K _rels
data/docx/customXml/_rels:
total 4.0K
4.0K item1.xml.rels
data/docx/docProps:
total 8.0K
4.0K app.xml
4.0K core.xml
data/docx/_rels:
total 0
data/docx/word:
total 456K
204K document.xml
4.0K endnotes.xml
4.0K fontTable.xml
4.0K footer1.xml
8.0K footer2.xml
4.0K footer3.xml
4.0K footnotes.xml
4.0K header1.xml
8.0K header2.xml
4.0K header3.xml
4.0K media
104K numbering.xml
4.0K _rels
16K settings.xml
52K styles.xml
4.0K theme
24K webSettings.xml
data/docx/word/media:
total 112K
112K image1.jpg
data/docx/word/_rels:
total 12K
4.0K document.xml.rels
4.0K footer2.xml.rels
4.0K header2.xml.rels
data/docx/word/theme:
total 8.0K
8.0K theme1.xml
Visualiser le document “mis en forme” et…
… comment la machine le voit
Le contenu figure sur 1 seule ligne qui contient plus de 200 000 caractères
… et comment une forge peut être utilisée
langage structuré ou pivot au sein de formats de documents
langage et éciture partagée
code
vs le literate programmingTim Daly’s Axiom Website
The first reaction is that this is a new, painful form of documentation
.
It is not.
Documentation
is a how
construct. It is a way of explaining how
a program works or how
an application interface should be used.
Literate programming is about why.[…]
The why becomes important when you have to maintain and modify a program. You can perfectly understand how a subroutine, module, or class works. You can explain its input and outputs. What you don’t understand is why it exists. Nobody writes that down. […]
Écrire du texte, décrire l’écriture du code, pourquoi ?
Architecture.md
en plus du Readme.md
au sein de la forgeLa pensée ne peut être abstraite, Marcello Vitali-Rosati, novembre 2023
.ipynb
(format json peu lisible).md
(Markdown).qmd
( Sans Literate programming
Avec Literate programming
Les premiers “notebooks”
Émergence du Literate Programming
Le concept de programmation lettrée est conçu et opérationnalisé (Web, Tex) par Donald Knuth en 1977-78.
Ce paradigme de programmation met en avant non plus l’ordonnancement imposé par l’ordinateur mais autorise l’utilisation d’un ordre propre à la logique et au fil de la pensée.
« Nous devons changer notre attitude traditionnelle envers la construction des programmes : au lieu de considérer que notre tâche principale est de dire à un ordinateur ce qu’il doit faire, appliquons-nous plutôt à expliquer à des êtres humains ce que nous voulons que l’ordinateur fasse (…)» Knuth (1984)
« Programs must be written for people to read, and only incidentally for machines to execute. » Abelson et al. (1985)
Literate programming “BONUS”
Notebook de type documentation, i.e. "How"
: lire le fil linéaire du programme
Notebook en programmation lettrée, i.e. “Why” & "How"
: reconstruire le fil du récit d’écriture du code
Literate Programming et Knitr/RMarkdown
Literate Programming et Knitr/RMarkdown
Literate Programming et Knitr/RMarkdown
You can write arbitrary incomplete code in code chunks, and compose code chunks freely. This, I believe, is the true spirit of literate programming, but is often overlooked by software authors who implement software products using the idea of literate programming. Literate programming is a programming technique. It does not simply mean mixing code and text in a linear order. « The First Notebook War - Yihui Xie 谢益辉 » (s. d.)
Émergence de la recherche reproductible computationnelle
Jon Claerbout est l’un des premiers chercheurs à exprimer le fait que les méthodes de calcul menacent la reproductibilité de la recherche si l’on ne donne pas un accès libre aux données et aux logiciels qui la sous-tendent.
En 1976, il publie un ouvrage référence en traitement de signal Claerbout (1985). Cette 1ère version - non-reproductible - sera le début d’une recherche sur la reproductibilité qui démarre en 1985
… Via des “Active documents and reproducible results”,Claerbout J.J. Sep 67
A revolution in education and technology transfer will follow from the marriage of word processing and software command scripts. In this marriage, here being called an active document (a-doc), an author attaches to every figure caption a pushbutton or a name tag usable to recalculate the figure from from all its data, parameters, and programs. An a-doc provides a concrete definition of reproducibility in computational oriented research.
Reproductibilité, répétabilité, réplicabilité ?
Notre focus est la reproductibilité computationelle
Reproductibilité, répétabilité, réplicabilité ?
Reproductibilité, répétabilité, réplicabilité ?
Convergence et harmonisation de définition (non exhaustive)
Reproducibility (Different team, same experimental setup): The measurement can be obtained with stated precision by a different team using the same measurement procedure, the same measuring system, under the same operating conditions, in the same or a different location on multiple trials. For computational experiments, this means that an independent group can obtain the same result using the author’s own artifacts.
Replicability (Different team, different experimental setup): The measurement can be obtained with stated precision by a different team, a different measuring system, in a different location on multiple trials. For computational experiments, this means that an independent group can obtain the same result using artifacts which they develop completely independently.
Repeatability (Same team, same experimental setup): The measurement can be obtained with stated precision by the same team using the same measurement procedure, the same measuring system, under the same operating conditions, in the same location on multiple trials. For computational experiments, this means that a researcher can reliably repeat his own computation.
Dans notre cadre, on retiendra les termes Reproductibles et Répétables comme interchangeable, car pour obtenir la Reproductibilité, il est évident que la Répétabilité est nécessaire.
Articuler les 3 problématiques : enjeux de la première couche logicielle
Le notebook
n’est pas synonyme de programmation lettrée, contrairement à ce que l’on lit souvent
ne garantit pas la reproductibilité computationnelle
Pratiques & interprétations disciplinaires
Du FAIR(E) d’un objet technique proteïforme, halshs-04019870
Réflexivité(s) & SHS
La lunette de vue & position critique
Balisage léger & langage informatique
Les revues en SHS
Rzine, collection sur la pratique de R en SHS
Computo, revue de statistique de la SFdS
Programming Historian, tutoriels méthodes & outils
Notebooks Now!, initiative communautaire financée
Écosystèmes
Nombreuses fonctionnalités
Différents type de publication
=> mauvais élève pour la reproductibilité.
=> Quarto supporte les moteurs knitr
et jupyter
, quid de l’inverse ?
=> son écosystème peut être plus intégré
=> ses qualités sont inégales dans les fonctionalités proposées (thèmes, diversités de formats, documentation, etc.)
Yihui Xie
Recall : Why do we use Markdown ? for Simplicity.
What was Markdown invented for ? HTML
Make Markdown Html Again, do one thing and do it well.
Définir le document computationnel ?
Ré-écriture WC Knuth avec noweb qui ajoute du html
Il s’agit d’une autre forme de LP (utilisant les liens hypertextes) pour rendre la lecture du code intelligible.
Retour sur le literate programming
Une culture ? L’exemple de la commande shell Unix word count wc
Knuth : came from algorithms
McIlroy : came from Unix.
Quelques exemples : entre récits dominants et marginaux
Cultures scientifiques : humanités numériques, data sciences et méthodes en SHS etc.
Pour du logiciel :
Pour du Notebook :
École Thématique CNRS SO-SHS - juin 2025