(Aside: In answer to Andrew’s poll at the top, I personally use Mathematica all the time in my work, although mostly to check my integrals and export them as LaTeX for my knitr/pweave documents where the actual data analysis happens.)

]]>Notebooks combine markdown, code and results. The notebooks for different languages can have different features, but that’s just a matter of saying anything produced can have different features and they can be added if there is motivation or demand to do so. I guess there is a matter of taste about if you prefer to have everything you might ever need available all the time or if you are fine with loading what you need.

]]>They do not fit well with a versioning system.

Exporting and sharing information isn’t great at all.

Wolfram has missed the boat.

]]>The best reason he proposes for Mathematica’s advantage here is that it is a very-high level language, and has an integrated knowledge base. For example you can write a computational essay on Roman history and trivially grab and compute on populations of cities over time. As a question, “What computational environment is most friendly and usable by high-schoolers, in both science and math, but also in literature, social studies, and history?”

So, he is not addressing the concept primarily toward STEM researchers, but toward as broad a populace as possible.

]]>The point was that I don’t develop the code for those knitr presentations in knitr. I develop it standalone, then when it’s working, put it into knitr.

]]>“Should I use Mathematica to solve my problem?” The answer to this question is the same as JP Morgan’s answer about how much it cost to run a yacht: If you have to ask, you can’t afford it….Mathematica is a huge system of remarkable capabilities cloaked in a stupefying variety of commands. But after six months of frequent experimentation, I still find that three-quarters of my time goes into trying to discover why I got an error message instead of the answer I was expecting.

]]>Jupyter and Mathematica notebooks are interactive environments, but knitr, if I understand it, is a frozen format, good for putting things into final form but not really how one goes about doing the work. Once converted into, say, PDF, they all look similar, of course.

Also, an important technical point of terminology: markdown is a formatting language for text, originally created by John Gruber of http://daringfireball.net for writing blog posts. I don’t think “a markdown” is a thing, and in any case certainly shouldn’t apply to things written in other formats.

]]>Wolfram is making a case that Computational Essays are a new format of communication enabled by Wolfram Notebooks. Reading his essay, I believe he would agree that you can write a Computational Essay in R Markdown or Jupyter Notebooks.

All these technologies, though, can be used for other formats, such as pure computation, pure writing, long research papers, application interfaces, etc.

Historically, the Mathematica Notebook has been around since 1988. Jupyter Notebooks came about a quarter century later, largely inspired by them.

The claim that the Mathematica Notebook is the best format for Computational Essays is, in my opinion, very much a secondary claim that stands independently of the Computational Essay concept.

]]>Jupyter (formerly IPython notebooks) is great for creating presentations about the REPL (read/evaluate/print-loop) process itself. knitr is nice for creating more traditional presentations with statistical content that are runnable.

This notebook notion is slightly different than literate programming,

… a programming paradigm introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated. (From the Wikipedia.)

It’s really all about the workflow:

Implementing literate programming consists of two steps:

1. Weaving: Generating comprehensive document about program and its maintenance.

2. Tangling: Generating machine executable code

Weaving and Tangling are done on the same source so that they are consistent with each other.

This is where the notion of “weave” came from that led to sweave and knitr. The original focus of literate programming was more inward looking—the documentation being woven was that for the program, not for an external presentation. This makes more sense to me than developing code in a knitr or Jupyter environment, but the tooling still isn’t there for me to use this everyday other than things like doxygen and Javadoc, which let me lightly annotate code with structured doc.

]]>That’s a pretty strange claim, given that Mathematica (sorry, I guess I mean “Wolfram language”) specifically allows for external “packages” (like the Stan interface Ben Goodrich mentions). I guess the idea is that no one would ever want to write a “mathematical essay” on a topic that wasn’t part of the official Mathematic distribution…

]]>The term “essay” implies a completed work of wordcraft—something a writer produces for others to read and maybe even for publication.

Very different connotation. Wolfram’s right here—the notebook analogy is clearly wrong for something being prepared for presentation.

The term “case study” implies a work created for learning. Something someone will walk through from beginning to end. That’s probably why I liked it better than “notebook” for the Stan case studies.

Andrew—you should be familiar with trying to introduce more appropriate terminology. It all reminds me of your preference for “warmup” over “burnin” because the electrical component burnin analogy is wrong.

]]>But if Mathematica notebooks came first, and now these are called Wolfram, not Mathematica, then shouldn’t they be called Wolfram notebooks? I don’t see the point of changing the name from “notebook” to “computational essay.”

]]>There is a Mathematica interface to Stan now ( http://mc-stan.org/users/interfaces/mathematica-stan.html ).

]]>ttps://paulromer.net/jupyter-mathematica-and-the-future-of-the-research-paper/

]]>We should adopt tools that enable reproducibility (e.g. containers) but doesn’t lock everyone into a centralized language and set of libraries.

]]>