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.
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]
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]
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]
Example of projects or products of notebooks:
Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allows 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.
Maxima is a powerful software package for performing computer algebra calculations in mathematics and the physical sciences. It is written in Common Lisp and runs on all POSIX platforms such as macOS, Unix, BSD, and Linux, as well as under Microsoft Windows and Android. It is free software released under the terms of the GNU General Public License (GPL).
Macsyma is one of the oldest general-purpose computer algebra systems still in wide use. It was originally developed from 1968 to 1982 at MIT's Project MAC.
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.
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.
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.
Org Mode is a mode for document editing, formatting, and organizing within the free software text editor GNU Emacs and its derivatives, designed for notes, planning, and authoring. The name is used to encompass plain text files that include simple marks to indicate levels of a hierarchy, and an editor with functions that can read the markup and manipulate hierarchy elements.
Tensor software is a class of mathematical software designed for manipulation and calculation with tensors.
PyCharm is an integrated development environment (IDE) used for programming in Python. It provides code analysis, a graphical debugger, an integrated unit tester, integration with version control systems, and supports web development with Django. PyCharm is developed by the Czech company JetBrains and built on their IntelliJ platform.
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, as well as other open-source software. Created by Pierre Raybaut and released in 2009 under the MIT license, since 2012 Spyder has been maintained and continuously improved by Python developers and the community.
RStudio IDE 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.
The Wolfram Language is a proprietary, general-purpose, very 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.
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.
The following tables compare notable software frameworks, libraries, and computer programs for deep learning applications.
OpenModelica is a free and open source environment based on the Modelica modeling language for modeling, simulating, optimizing and analyzing complex dynamic systems. This software is actively developed by Open Source Modelica Consortium, a non-profit, non-governmental organization. The Open Source Modelica Consortium is run as a project of RISE SICS East AB in collaboration with Linköping University.
Project Jupyter is a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages.