# Notebook (programmation)

En programmation informatique, un notebook, aussi fréquemment appelé calepin électronique, voire simplement calepin$^,$$^,$ est une interface de programmation interactive (en) permettant de combiner des sections en langage naturel et des sections en langage informatique. Les notebooks sont notamment utilisés en science des données pour explorer et analyser des données. Les notebooks peuvent ensuite être enregistrés sous forme de document. C'est un exemple de programmation lettrée.
L'usage des notebooks en science permet de faciliter le partage et la reproductibilité des résultats.

## Histoire

Historiquement, une des premières mises en œuvre d'un livre électronique dont les exemples de calculs et les graphiques sont recalculables à la volée, interactivement dit-on désormais, via les sources des programmes présents de façon sous-jacente, accessibles et modifiables, remonte à 1976 quand le sismologue Jon Claerbout (en), conscient de cet enjeu de reproductibilité des calculs numériques complexes, écrit et sort la première version de son ouvrage Fundamentals of Geophysical Data Processing, livre devenu un grand classique en géophysique et en traitement du signal.
Début des années 1990, le développement d'une architecture de type client-serveur, aussi inspirée du système de fenêtrage X-window apparue entre-temps sous Unix, pour organiser le logiciel Mathematica en un frontal de présentation des résultats et un noyau qui réalise les calculs, permet à la société Wolfram Research de proposer une approche du travail en calcul scientifique intégrée, du développement même de la formulation mathématique à la rédaction finale et présentation des résultats notamment sous forme graphique : la concrétisation sous forme de document à l'écran et de fichier de sauvegarde est les notebooks Mathematica. Ces fichiers sont ensuite consultables via une version du seul frontal comme lecteur, mis à disposition par « Wolfram Research ». L'idée et la concrétisation de ce développement, furent de Theodore Gray (en).
En 2001, Fernando Pérez a repris le concept de notebook pour développer IPython. À la différence de Mathematica, qui est un logiciel propriétaire, IPython permet de programmer de manière interactive en Python, un langage de programmation libre.
En 2014, le projet IPython notebook est devenu Jupyter et permet de programmer dans pratiquement n'importe quel langage de programmation.

## Implémentations

Quelques implémentations connues, outre celle de Mathematica, sont :
* Le logiciel iPython permet de développer des notebooks. Ce logiciel, initialement uniquement destiné au langage Python, a été étendu aux langages Julia et R avec le développement du logiciel Jupyter (nom issu de la contraction de "Julia", "Python" et "R"). Très rapidement, la frontalisation par Jupyter a intégré d'autres langages de programmation, et de fait potentiellement tout langage gérant une boucle "REPL" (en). Un notebook Jupyter combine des sections en langage naturel mises en forme avec la syntaxe "Markdown" et des sections en code Python, Julia, R ou autres langages. Ces documents peuvent être sauvegardés au format JSON avec l'extension ".ipynb". Ils peuvent être convertis en page web ou en "présentation HTML5" grâce à des utilitaires comme "nbconvert" ;
* L'environnement de développement intégré RStudio permet aussi d'utiliser des notebooks. Les notebooks RStudio sont enregistrés au format "Rmarkdown" ;
* Apache Zeppelin propose également une interface de type notebook afin d'analyser et mettre en forme simplement, de manière visuelle et interactive, de gros volumes de données avant de les traiter par d'autres logiciels ;
* Mathcad, logiciel propriétaire, est essentiellement un système de calcul formel doté d'une interface de type "calepin électronique".