Notebook interface

Last updated
Jupyter Notebook, an example of a notebook interface Paws notebook showing how to load wikidata item dictionary.png
Jupyter Notebook, an example of a notebook interface

A notebook interface or computational notebook is a virtual notebook environment used for literate programming, a method of writing computer programs. [1] Some notebooks are WYSIWYG environments including executable calculations embedded in formatted documents; others separate calculations and text into separate sections. Notebooks share some goals and features with spreadsheets and word processors but go beyond their limited data models.

Contents

Modular notebooks may connect to a variety of computational back ends, called "kernels". Notebook interfaces are widely used for statistics, data science, machine learning, and computer algebra. [2]

At the notebook core is the idea of literate programming tools which "let you arrange the parts of a program in any order and extract documentation and code from the same source file." [3] , the notebook takes this approach to a new level extending it with some graphic functionality and a focus on interactivity. According to Stephen Wolfram: "The idea of a notebook is to have an interactive document that freely mixes code, results, graphics, text and everything else." [4] , and according to the Jupyter Project Documentation: "The notebook extends the console-based approach to interactive computing in a qualitatively new direction, providing a web-based application suitable for capturing the whole computation process: developing, documenting, and executing code, as well as communicating the results. The Jupyter notebook combines two components". [5]

History

VisiCalc, the first spreadsheet for personal computers, was published in 1979. Its idea of visual calculations is still widely used today but limited to documents that fit into a table.

Research on WYSIWYG mathematical systems supporting mixed text and calculations with a document metaphor begin to be published in 1987: [6] Ron Avitzur's Milo, [7] William Schelter's INFOR, Xerox PARC's Tioga [8] and CaminoReal. [9]

The earliest commercial system using the document metaphor was MathCAD , which also came out in 1987. [10] Wolfram Mathematica 1.0 followed in 1988. [11] [12] [13] Later came Maple 5.2 (1992) [14] and Macsyma 2.0 (1995). [15]

As the notebook interface increased in popularity over the next two decades, notebooks for various computational back ends ("kernels") have been introduced, including MATLAB, Python, Julia, R, Scala, Elixir, SQL, and others. [16] [17]

The variety of notebook interface has since been extended and new forms are still evolving. [18]

Use

Notebooks are traditionally used in the sciences as electronic lab notebooks to document research procedures, data, calculations, and findings. Notebooks track methodology to make it easier to reproduce results and calculations with different data sets. [16] [17] In education, the notebook interface provides a digital learning environment, particularly for the teaching of computational thinking. [19] [4] Their utility for combining text with code makes them unique in the realm of education. Digital notebooks are sometimes used for presentations as an alternative to PowerPoint and other presentation software, as they allow for the execution of code inside the notebook environment. [20] [21] Due to their ability to display data visually and retrieve data from different sources by modifying code, notebooks are also entering the realm of business intelligence software. [16] [22] [23] [24]

Notable examples

Example of projects or products of notebooks:

Free/open-source notebooks

Partial copyleft

Proprietary notebooks

Related Research Articles

<span class="mw-page-title-main">Wolfram Mathematica</span> Computational software program

Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimization, plotting functions and various types of data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other programming languages. It was conceived by Stephen Wolfram, and is developed by Wolfram Research of Champaign, Illinois. The Wolfram Language is the programming language used in Mathematica. Mathematica 1.0 was released on June 23, 1988 in Champaign, Illinois and Santa Clara, California.

<span class="mw-page-title-main">Wolfram Research</span> American multinational company

Wolfram Research, Inc. is an American multinational company that creates computational technology. Wolfram's flagship product is the technical computing program Wolfram Mathematica, first released on June 23, 1988. Other products include WolframAlpha, Wolfram SystemModeler, Wolfram Workbench, gridMathematica, Wolfram Finance Platform, webMathematica, the Wolfram Cloud, and the Wolfram Programming Lab. Wolfram Research founder Stephen Wolfram is the CEO. The company is headquartered in Champaign, Illinois, United States.

<span class="mw-page-title-main">Mathcad</span> Computer system for mathematical calculation

Mathcad is computer software for the verification, validation, documentation and re-use of mathematical calculations in engineering and science, notably mechanical, chemical, electrical, and civil engineering. Released in 1986 on DOS, it introduced live editing (WYSIWYG) of typeset mathematical notation in an interactive notebook, combined with automatic computations. It was originally developed by Mathsoft, and since 2006 has been a product of Parametric Technology Corporation.

GenePattern is a freely available computational biology open-source software package originally created and developed at the Broad Institute for the analysis of genomic data. Designed to enable researchers to develop, capture, and reproduce genomic analysis methodologies, GenePattern was first released in 2004. GenePattern is currently developed at the University of California, San Diego.

<span class="mw-page-title-main">IPython</span> Advanced interactive shell for Python

IPython is a command shell for interactive computing in multiple programming languages, originally developed for the Python programming language, that offers introspection, rich media, shell syntax, tab completion, and history. IPython provides the following features:

License proliferation is the phenomenon of an abundance of already existing and the continued creation of new software licenses for software and software packages in the FOSS ecosystem. License proliferation affects the whole FOSS ecosystem negatively by the burden of increasingly complex license selection, license interaction, and license compatibility considerations.

<span class="mw-page-title-main">Spyder (software)</span> IDE for scientific programming in Python

Spyder is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, including NumPy, SciPy, Matplotlib, pandas, IPython, SymPy and Cython, as well as other open-source software. It is released under the MIT license.

<span class="mw-page-title-main">RStudio</span> Integrated development environment for R

RStudio is an integrated development environment for R, a programming language for statistical computing and graphics. It is available in two formats: RStudio Desktop is a regular desktop application while RStudio Server runs on a remote server and allows accessing RStudio using a web browser. The RStudio IDE is a product of Posit PBC.

<span class="mw-page-title-main">Julia (programming language)</span> Dynamic programming language

Julia is a high-level, general-purpose dynamic programming language, most commonly used for numerical analysis and computational science. Distinctive aspects of Julia's design include a type system with parametric polymorphism and the use of multiple dispatch as a core programming paradigm, efficient garbage collection, and a just-in-time (JIT) compiler.

<span class="mw-page-title-main">Wolfram Language</span> Programming language and environment developed by Wolfram Research

The Wolfram Language is a proprietary, general high-level multi-paradigm programming language developed by Wolfram Research. It emphasizes symbolic computation, functional programming, and rule-based programming and can employ arbitrary structures and data. It is the programming language of the mathematical symbolic computation program Mathematica.

<span class="mw-page-title-main">Plotly</span> Canadian computing company

Plotly is a technical computing company headquartered in Montreal, Quebec, that develops online data analytics and visualization tools. Plotly provides online graphing, analytics, and statistics tools for individuals and collaboration, as well as scientific graphing libraries for Python, R, MATLAB, Perl, Julia, Arduino, JavaScript and REST.

<span class="mw-page-title-main">Apache Spark</span> Open-source data analytics cluster computing framework

Apache Spark is an open-source unified analytics engine for large-scale data processing. Spark provides an interface for programming clusters with implicit data parallelism and fault tolerance. Originally developed at the University of California, Berkeley's AMPLab, the Spark codebase was later donated to the Apache Software Foundation, which has maintained it since.

The following table compares notable software frameworks, libraries and computer programs for deep learning.

<span class="mw-page-title-main">SimpleITK</span> Open-source interface for the ITK framework

SimpleITK is a simplified, open-source interface to the Insight Segmentation and Registration Toolkit (ITK). The SimpleITK image analysis library is available in multiple programming languages including C++, Python, R, Java, C#, Lua, Ruby and Tcl. Binary distributions are available for all three major operating systems.

<span class="mw-page-title-main">Project Jupyter</span> Open source data science software

Project Jupyter is a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages.

<span class="mw-page-title-main">Qiskit</span> Open-source software development kit

Qiskit is an open-source software development kit (SDK) for working with quantum computers at the level of circuits, pulses, and algorithms. It provides tools for creating and manipulating quantum programs and running them on prototype quantum devices on IBM Quantum Platform or on simulators on a local computer. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware that follows this model.

References

  1. Standage, Daniel (2015-03-13). "Literate programming, RStudio, and IPython Notebook". BioWize. Wordpress. Retrieved 2016-12-01.
  2. Jupyter, Project (20 February 2018). "JupyterLab is Ready for Users" . Retrieved 30 May 2018.
  3. Ramsey, N. (September 1994). "Literate programming simplified". IEEE Software. 11 (5): 97–105. doi:10.1109/52.311070. ISSN   0740-7459. S2CID   18593796.
  4. 1 2 "How to Teach Computational Thinking—Stephen Wolfram". blog.stephenwolfram.com. Retrieved 2016-11-23.
  5. "The Jupyter Notebook — Jupyter Notebook 6.2.0 documentation". jupyter-notebook.readthedocs.io. Retrieved 2021-05-03.
  6. Dennis S. Arnon, ed., "Workshop on Environments for Computational Mathematics (July 1987)", Computer Graphics22:1 (February 1988)
  7. Richard J. Fateman, "Computer Systems for the Representation and Manipulation of Mathematical Knowledge", Final report, August 1987 (DTIC AD-A193 547)
  8. Butler W. Lampson, "Personal Distributed Computing: The Alto and Ethernet Software", A history of personal workstations, 1988, ISBN   0201112590, p. 318.
  9. Dennis Arnon, Richard Beach, Kevin McIsaac, "CaminoReal: An Interactive Mathematical Notebook", in J.C. van Vliet, ed., Document Manipulation and Typography, Proceedings of the International Conference on Electronic Publishing, Document Manipulation and Typography, Nice, April 20–22, 1988, ISBN   0521362946, p. 2.
  10. N. Kajler, N. Soiffer, "A Survey of User Interfaces for Computer Algebra Systems", Journal of Symbolic Computation25:2:127-159 (February 1998), doi : 10.1006/jsco.1997.0170
  11. The ReDiscovered Future (2016-04-04), Macintosh + Mathematica = Infinity - April 1989 , retrieved 2016-11-23
  12. Hayes, Brian (1990). "Thoughts on Mathematica" (PDF). PIXEL. January/February 1990: 28–35.
  13. "Launching Wolfram Player for iOS—Wolfram" . Retrieved 2016-11-23.
  14. "Maple V Release 2 - Maple Help". www.maplesoft.com. Retrieved 2023-01-18.
  15. "Macsyma 2.0", Design News, April 24, 1995
  16. 1 2 3 4 Osipov, Matt (2016-05-04). "The Rise of Data Science Notebooks". Datanami. Tabor Communications. Retrieved 2016-12-20.
  17. 1 2 "The IPython notebook: a historical retrospective". blog.fperez.org. Retrieved 2016-11-23.
  18. Lau, Sam; Drosos, Ian; Markel, Julia M.; Guo, Philip J. (August 2020). "The Design Space of Computational Notebooks: An Analysis of 60 Systems in Academia and Industry". 2020 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). pp. 1–11. doi:10.1109/VL/HCC50065.2020.9127201. ISBN   978-1-7281-6901-9. S2CID   219572399.
  19. Barr, Valerie; Stephenson, Chris (2011). "Bringing computational thinking to K-12: what is involved and what is the role of the computer science education community?".
  20. Databricks (2015-07-06), Spark Summit 2015 demo: Creating an end-to-end machine learning data pipeline with Databricks , retrieved 2016-11-23
  21. Frazier, Cat (2018-04-17). "Announcing Wolfram Presenter Tools" . Retrieved 2018-11-27.
  22. Andrews, Ian (2016-03-30). "Delivering information in context". O'Reilly Media. Retrieved 2016-11-23.
  23. "jupyter-incubator/dashboards". GitHub. Retrieved 2016-11-23.
  24. Sharma, Shad. "Business Intelligence with Mathematica and CDF" . Retrieved 2018-11-27.
  25. "Zeppelin". Apache. Retrieved 2018-12-20.
  26. "Spark Notebook". Archived from the original on 2018-10-01. Retrieved 2018-09-30.
  27. Jupyter Development Team (2015-04-22). "Licensing terms". Jupyter Notebook. GitHub. Retrieved 2018-12-20.
  28. "a Jupyter notebook environment that requires no setup to use" . Retrieved 2020-12-29.
  29. "LICENSE". Project Jupyter Contributors. 2018-07-19. Retrieved 2018-12-20.
  30. "Iodide". GitHub . Retrieved 2018-12-20.
  31. "R Markdown". R Studio. Retrieved 2018-09-30.
  32. "Licene". Readme. GitHub. 2018-12-07. Retrieved 2018-12-20.
  33. "Welcome to GNU TeXmacs" . Retrieved 2020-11-28.
  34. "Noteable". noteable.io. Noteable, Inc. Retrieved 2021-05-21.
  35. "Noteable - Computational Notebook Platform for Education". noteable.edina.ac.uk. Retrieved 2021-08-12.
  36. "Deepnote". deepnote.com. Deepnote, Inc. Retrieved 2020-12-30.
  37. "Carbide Alpha | Buggy But Live!". Try Carbide. Retrieved 2018-12-20.
  38. "Graphext". graphext.com. Graphext. Retrieved 2020-12-30.
  39. "Databricks Unified Analytics Platform". San Francisco, CA: Databricks Inc. 2018. Retrieved 2018-12-20.
  40. "Datalore". JetBrains s.r.o. Retrieved 2019-08-08.
  41. "Nextjournal". nextjournal.com. Nextjournal GmbH. 2018. Retrieved 2018-12-20.
  42. "Observable". Observable HQ. Retrieved 2018-09-30.
  43. Observable (2018-12-15). "Repositories". San Francisco, California: Observable via GitHub. Retrieved 2018-09-30.
  44. "Terms of Service". Observable. 2018. Retrieved 2018-01-12.
  45. "WolframAlpha Notebook Edition" . Retrieved 2021-01-12.