Notebook interface

From HandWiki
Short description: Programming tool blending code and documents
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.

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

  • SMath Studio – Freeware, not libre: licensed under Creative Commons Attribution-No Derivatives

Proprietary notebooks

References

  1. Standage, Daniel (2015-03-13). "Literate programming, RStudio, and IPython Notebook". BioWize. Wordpress. https://biowize.wordpress.com/2015/03/13/literate-programming-rstudio-and-ipython-notebook/. 
  2. Jupyter, Project (20 February 2018). "JupyterLab is Ready for Users". https://blog.jupyter.org/jupyterlab-is-ready-for-users-5a6f039b8906. 
  3. Ramsey, N. (September 1994). "Literate programming simplified". IEEE Software 11 (5): 97–105. doi:10.1109/52.311070. ISSN 0740-7459. https://ieeexplore.ieee.org/document/311070. 
  4. 4.0 4.1 "How to Teach Computational Thinking—Stephen Wolfram". http://blog.stephenwolfram.com/2016/09/how-to-teach-computational-thinking/. 
  5. "The Jupyter Notebook — Jupyter Notebook 6.2.0 documentation". https://jupyter-notebook.readthedocs.io/en/stable/notebook.html#introduction. 
  6. Dennis S. Arnon, ed., "Workshop on Environments for Computational Mathematics (July 1987)", Computer Graphics 22: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 Computation 25:2:127-159 (February 1998), doi:10.1006/jsco.1997.0170
  11. The ReDiscovered Future (2016-04-04), Macintosh + Mathematica = Infinity - April 1989, https://www.youtube.com/watch?v=3A5moyhfaQo, retrieved 2016-11-23 
  12. Hayes, Brian (1990). "Thoughts on Mathematica". PIXEL January/February 1990: 28–35. http://bit-player.org/wp-content/extras/bph-publications/Pixel-1990-01-Hayes-Mathematica.pdf. 
  13. "Launching Wolfram Player for iOS—Wolfram". http://blog.wolfram.com/2016/11/16/launching-wolfram-player-for-ios/. 
  14. "Maple V Release 2 - Maple Help". https://www.maplesoft.com/support/help/Maple/view.aspx?path=updates/v52. 
  15. "Macsyma 2.0", Design News, April 24, 1995
  16. 16.0 16.1 16.2 16.3 Osipov, Matt (2016-05-04). "The Rise of Data Science Notebooks". Tabor Communications. https://www.datanami.com/2016/05/04/rise-data-science-notebooks/. 
  17. 17.0 17.1 "The IPython notebook: a historical retrospective". http://blog.fperez.org/2012/01/ipython-notebook-historical.html. 
  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. 
  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, https://www.youtube.com/watch?v=NR1MYg_7oSg, retrieved 2016-11-23 
  21. Frazier, Cat (2018-04-17). "Announcing Wolfram Presenter Tools". http://blog.wolfram.com/2018/04/17/announcing-wolfram-presenter-tools/. 
  22. Andrews, Ian (2016-03-30). "Delivering information in context". O'Reilly Media. https://www.oreilly.com/ideas/delivering-information-in-context. 
  23. "jupyter-incubator/dashboards". https://github.com/jupyter-incubator/dashboards. 
  24. Sharma, Shad. "Business Intelligence with Mathematica and CDF". https://www.wolfram.com/broadcast/video.php?c=88&v=109. 
  25. "Zeppelin". Apache. https://zeppelin.apache.org/. 
  26. "Spark Notebook". http://spark-notebook.io/. 
  27. Jupyter Development Team (2015-04-22). "Licensing terms". Jupyter Notebook. GitHub. https://github.com/jupyter/notebook/blob/master/COPYING.md. 
  28. "a Jupyter notebook environment that requires no setup to use". https://colab.research.google.com/notebooks/intro.ipynb. 
  29. "LICENSE". Project Jupyter Contributors. 2018-07-19. https://github.com/jupyterlab/jupyterlab/blob/master/LICENSE. 
  30. "Iodide". https://github.com/iodide-project/iodide. 
  31. "R Markdown". R Studio. https://rmarkdown.rstudio.com/. 
  32. "Licene". Readme. GitHub. 2018-12-07. https://github.com/rstudio/rmarkdown/blob/master/README.md. 
  33. "Welcome to GNU TeXmacs". https://www.texmacs.org/tmweb/home/welcome.en.html. 
  34. "Noteable". Noteable, Inc.. https://noteable.io. 
  35. "Noteable - Computational Notebook Platform for Education". https://noteable.edina.ac.uk/. 
  36. "Deepnote". Deepnote, Inc.. https://deepnote.com. 
  37. "Carbide Alpha | Buggy But Live!". Try Carbide. https://trycarbide.com/. 
  38. "Graphext". Graphext. https://graphext.com. 
  39. "Databricks Unified Analytics Platform". San Francisco, CA: Databricks Inc.. 2018. https://databricks.com/product/unified-analytics-platform. 
  40. "Datalore". JetBrains s.r.o.. https://datalore.io. 
  41. "Nextjournal". Nextjournal GmbH. 2018. https://nextjournal.com. 
  42. "Observable". Observable HQ. https://observablehq.com/. 
  43. Observable (2018-12-15). "Repositories". San Francisco, California: Observable via GitHub. https://github.com/observablehq/runtime. 
  44. "Terms of Service". Observable. 2018. https://observablehq.com/terms-of-service. 
  45. "WolframAlpha Notebook Edition". https://www.wolfram.com/wolfram-alpha-notebook-edition/.