Software:Comparison of Literate and Interactive Programming Tools
From HandWiki
Short description: Literate & Notebook tools
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 | |||
Knitr | R | LaTeX, PDF, LyX, HTML, Markdown, AsciiDoc, and reStructuredText | ||
Codebraid | Pandoc, Rust, Julia, Python, R, Bash | Markdown | No | Yes |
Pweave | Python | 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 |
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
- ↑ "Babel: Introduction". https://orgmode.org/worg/org-contrib/babel/intro.html.
- ↑ "Babel Languages: redirect". https://orgmode.org/worg/org-contrib/babel/languages.html#langs.
- ↑ "Babel: Introduction". https://orgmode.org/worg/org-contrib/babel/intro.html#literate-programming.
- ↑ Ashkenas, Jeremy. "Literate CoffeeScript". https://coffeescript.org/#literate.
- ↑ Milestones in Computer Science and Information Technology by Edwin D. Reilly, p. 157.
- ↑ "Wolfram Notebooks". https://www.wolfram.com/notebooks/.
- ↑ "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.
- ↑ "Literate Agda". http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.LiterateAgda.
- ↑ "Eve and Literate Progamming". http://docs.witheve.com/handbook/literate-programming/.
- ↑ 10.0 10.1 , Wikidata Q76441281
- ↑ 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.
- ↑ 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.
- ↑ Xie, Yihui (2015). Dynamic Documents with R and knitr, 2nd Edition. Chapman & Hall/CRC. ISBN 9781498716963. http://www.crcpress.com/product/isbn/9781498716963.
- ↑ Xie, Yihui. "knitr: A General-Purpose Tool for Dynamic Report Generation in R". https://github.com/yihui/knitr/releases/download/doc/knitr-manual.pdf.
- ↑ "ganelson/inweb: A modern system for literate programming". 17 June 2022. https://github.com/ganelson/inweb.
Original source: https://en.wikipedia.org/wiki/Comparison of Literate and Interactive Programming Tools.
Read more |