Software:Comparison of Literate and Interactive Programming Tools

From HandWiki
Short description: Literate & Notebook tools


Properties of Literate and Notebook environments
Name Supported Languages Markup Language Macros & Custom Order Cellular Execution
WEB Pascal TeX Yes No
CWEB C++ and C TeX Yes No
NoWEB Any LaTeX, TeX, HTML and troff Yes No
Literate Any Markdown Yes No
FunnelWeb Any HTML and TeX Yes?
NuWEB Any LaTeX
pyWeb Any ReStructuredText Yes
Molly Any HTML
Codnar
Emacs org-mode Any Plain text
CoffeeScript CoffeeScript Markdown
Maple worksheets Maple XML
Wolfram Notebooks Wolfram Language Wolfram Language
Playgrounds Swift (programming language)
Jupyter Notebook, formerly IPython Notebook Python and any with a Jupyter Kernel JSON format Specification for ipynb No Yes
Jupytext plugin for Jupyter Many Languages Markdown in comments No Yes
nbdev Python and Jupyter Notebook nbdev is a library that allows you to develop a python library in Jupyter Notebooks, putting all your code, tests and documentation in one place.
Julia (programming language) Pluto.jl is a reactive notebook environment allowing custom order. But web-like macros aren't supported. Yes
Agda (programming language)
Eve programming language
R Markdown Notebooks (or R Notebooks) R, Python, Julia and SQL PDF, Microsoft Word, LibreOffice and presentation or slide show formats plus interactive formats like HTML widgets No Yes
Quarto R, Python, Julia and Observable PDF, Microsoft Word, LibreOffice and presentation or slide show formats plus interactive formats like HTML widgets No Yes
Sweave R PDF
Knitr R LaTeX, PDF, LyX, HTML, Markdown, AsciiDoc, and reStructuredText
Codebraid Pandoc, Rust, Julia, Python, R, Bash Markdown No Yes
Pweave Python PDF No
MATLAB Live Editor MATLAB Markdown No Yes
Inweb C, C++, Inform 6, Inform 7 TeX, HTML Yes?
Mercury Python JSON format specification for ipynb
Observable JavaScript TeX(KaTeX), HTML
Ganesha JavaScript, TypeScript Markdown
JWEB C, C++, JavaScript, TypeScript Markdown Yes No
Maintenance Properties of Literate and Notebook environments
Name Latest stable version License Written in Comments
WEB Pascal The first published literate programming environment.
CWEB C Is WEB adapted for C and C++.
NoWEB C, AWK, and Icon It is well known for its simplicity and it allows for text formatting in HTML rather than going through the TeX system.
Literate D Supports TeX equations. Compatible with Vim (literate.vim)
FunnelWeb C It has more complicated markup, but has many more flexible options
NuWEB C++ It can translate a single LP source into any number of code files. It does it in a single invocation; it does not have separate weave and tangle commands. It does not have the extensibility of noweb
pyWeb Python Respects indentation which makes usable for the languages like Python, though you can use it for any programming language.
Molly Perl Aims to modernize and scale it with "folding HTML" and "virtual views" on code. It uses "noweb" markup for the literate source files.
Codnar Ruby It is an inverse literate programming tool available as a Ruby Gem. Instead of the machine-readable source code being extracted out of the literate documentation sources, the literate documentation is extracted out of the normal machine-readable source code files.
Emacs org-mode Emacs Lisp Requires Babel,[1] which allows embedding blocks of source code from multiple programming languages[2] within a single text document. Blocks of code can share data with each other, display images inline, or be parsed into pure source code using the noweb reference syntax.[3]
CoffeeScript CoffeeScript, JavaScript CoffeeScript supports a "literate" mode, which enables programs to be compiled from a source document written in Markdown with indented blocks of code.[4]
Maple worksheets Maple worksheets are a platform-agnostic literate programming environment that combines text and graphics with live code for symbolic computation."Maple Worksheets". https://www.maplesoft.com/support/help/Maple/view.aspx?path=Worksheet. 
Wolfram Notebooks Wolfram notebooks are a platform-agnostic literate programming method that combines text and graphics with live code.[5][6]
Playgrounds Provides an interactive programming environment that evaluates each statement and displays live results as the code is edited. Playgrounds also allow the user to add Markup language along with the code that provide headers, inline formatting and images.[7]
Jupyter Notebook, formerly IPython Notebook Works in the format of notebooks, which combine headings, text (including LaTeX), plots, etc. with the written code.
Jupytext plugin for Jupyter Python
nbdev
Julia (programming language) Supports the iJulia mode of development which was inspired by iPython.
Agda (programming language) Supports a limited form of literate programming out of the box.[8]
Eve programming language Programs are primarily prose.[9] Eve combines variants of Datalog and Markdown with a live graphical development environment
R Markdown Notebooks (or R Notebooks) [10]
Quarto [10]
Sweave [11][12]
Knitr [13][14]
Codebraid Python
Pweave
MATLAB Live Editor
Inweb C, CWEB Used to write the Inform Programming Language since 2004.[15]
Mercury Python, TypeScript Mercury turns Jupyter Notebook into interactive computational documents. They can be published as web application, dashboards, reports, REST API, or slides. The executed document can be exported as standalone HTML or PDF file. Documents can be scheduled for automatic execution. The document presence and widgets are controlled with YAML header in the first cell of the notebook.
Observable JavaScript, TypeScript Stored on the cloud with web interface. Contents are publishable as websites. Version controlled; the platform defines its own version control operations. Code cells can be organized out-of-order; observable notebooks will construct the execution graph (a DAG) automatically. A rich standard library implemented with modern features of JavaScript. Cells from different observable notebooks can reference each other. Npm libraries can be imported on the fly.
Ganesha JavaScript Enables Node.js to load literate modules, represented by Markdown files containing JavaScript or TypeScript code interspersed with richly formatted prose. Supports bundling literate modules for browsers when using the Rollup or Vite frontend module bundlers.
JWEB JavaScript



References

  1. "Babel: Introduction". https://orgmode.org/worg/org-contrib/babel/intro.html. 
  2. "Babel Languages: redirect". https://orgmode.org/worg/org-contrib/babel/languages.html#langs. 
  3. "Babel: Introduction". https://orgmode.org/worg/org-contrib/babel/intro.html#literate-programming. 
  4. Ashkenas, Jeremy. "Literate CoffeeScript". https://coffeescript.org/#literate. 
  5. Milestones in Computer Science and Information Technology by Edwin D. Reilly, p. 157.
  6. "Wolfram Notebooks". https://www.wolfram.com/notebooks/. 
  7. "Markup Formatting Reference: Markup Overview". https://developer.apple.com/library/ios/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html#//apple_ref/doc/uid/TP40016497-CH2-SW1. 
  8. "Literate Agda". http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.LiterateAgda. 
  9. "Eve and Literate Progamming". http://docs.witheve.com/handbook/literate-programming/. 
  10. 10.0 10.1  , Wikidata Q76441281
  11. Leisch, Friedrich (2002). "Sweave, Part I: Mixing R and LaTeX: A short introduction to the Sweave file format and corresponding R functions". pp. 28–31. https://cran.r-project.org/doc/Rnews/Rnews_2002-3.pdf. 
  12. Pineda-Krch, Mario (17 January 2011). "The Joy of Sweave – A Beginner's Guide to Reproducible Research with Sweave". http://www.math.ualberta.ca/~mlewis/links/the_joy_of_sweave_v1.pdf. 
  13. Xie, Yihui (2015). Dynamic Documents with R and knitr, 2nd Edition. Chapman & Hall/CRC. ISBN 9781498716963. http://www.crcpress.com/product/isbn/9781498716963. 
  14. Xie, Yihui. "knitr: A General-Purpose Tool for Dynamic Report Generation in R". https://github.com/yihui/knitr/releases/download/doc/knitr-manual.pdf. 
  15. "ganelson/inweb: A modern system for literate programming". 17 June 2022. https://github.com/ganelson/inweb.