Hacker News new | past | comments | ask | show | jobs | submit login

What's the predecessor with a notebook interface from before 1987? I'm not aware of one. Wolfram loves to claim he invented stuff but this one might actually be true.

The Wikipedia article suggests a contemporary in 1987 (MathCAD) but I'm not seeing a Mathematica/Jupyter-style notebook interface before that year. That would seem to have been the year of the notebook interface, and Mathematica 1.0 did come out that year with one. As far as Wolfram claims go, this one doesn't seem too offensive.




It's a fair claim if you make it for Wolfram Research rather than Stephen Wolfram personally (which is all he ever does).

Jupyter notebooks were inspired by Mathematica notebooks: that's widely known and has been explicitly said in blog posts and elsewhere by the creators of Jupyter. It's no secret… And as the designer and developer of Mathematica notebooks I am flattered and honored that my ideas are now so widely used, even if it is in a product other than the one I wrote myself.

Time for a trip down memory lane. There were several notebook-adjacent products around at that time (1987) but none of them implemented notebooks as we know them today.

At the time I was using Xcode, which had a terminal-like interface that was a plain text document in which you could put all the shell commands you needed to build your app. This could include calls to the compiler, linker, or just any generic shell commands. To evaluate a given command (which could be one or more lines long) you had to manually select the exact range of text you wanted to run, which was kind of irritating. Any output would be placed directly below the input line. Because the document was pure plain text, it had no way of knowing what was input and what was output, or distinguish new output from old. So all the outputs accumulated, and you had to manually select and delete them periodically. It was an improvement over a glass teletype terminal interface, but I thought I could do better for Mathematica (code name Omega at the time).

The solution I came up with was to create a text document that was annotated with “zones” delimited by vertical bars along the right side of the screen (where cell brackets are now). Initially I used different black and white texture patterns on 4 or 5 pixel wide vertical bars. One texture for input and another texture for output.

This immediately gave two huge advantages: first, you didn’t have to manually select the range of a multi-line input. Just putting the cursor anywhere within an input zone and evaluating would evaluate the whole input. Second, because the system was keeping track of what was output, old output could be deleted automatically and replaced with new output.

Initially I called these things zones, but Steve Jobs suggested I use large close-square-bracket symbols instead of patterned bars, and think of them more like cells in a spreadsheet than like zones in a text document. Once you have brackets instead of bars, it’s immediately obvious that you could have larger brackets that encompass two or more cells. So I created cell groups, initially just to group input/output pairs, but of course it’s not a big leap to also have sections and subsections, then different cell types, styles, graphics cells, etc.

These key defining features of notebooks did not exist in any other system at the time, and to the best of my knowledge were not independently developed by other people. All the current notebook systems that share these broad features, definitely including Jupyter notebooks, derive from the original Mathematica notebooks I developed in 1987-8. (There are other styles of user interface, including some used by Maple and Matlab around the same time, that are called notebooks, but they did not share the key features I’ve described. They were and are fine products that I’m sure have both advantages and disadvantages compared to our Notebooks, but unlike our Notebooks, they are not the precursors of Jupyter.)

So can Stephen Wolfram personally claim to have invented notebooks? No, and he doesn’t: he claims that Wolfram Research did, which is true, since I was one of the co-founders of that company, and I invented that form of notebook.

Theodore


(Got curious if it was officially credited, found it was)

Item #8 at https://www.wolfram.com/mathematica/scrapbook/

""""

1987: The Mathematica front end begins to take shape…

[screenshots]

(Theo Gray invents cells and groups… and other things still seen today…)

"""


Amazing, thank you for taking the time to share this! Big fan of notebooks in general and of Mathematica in particular.


Even if true it's unnecessary. I just can't read anything written by Wolfram without rolling my eyes


Likewise. Especially when it's liberally sprinkled with his catch phrase: "A new kind of..."

It's unfortunate as clearly he has a huge amount to contribute. Maybe with an LLM someone can build a de-Stepheniser that takes in his pompous, smug text and outputs something more mellow and reasonable whilst keeping all the facts, which is what we are there for after all.


A new kind of new kind


Not even typeclasses are safe from Wolfram!


Of course it's unnecessary, but I suspect there's at least some substance to this claim. If it were anyone else, a harmless plug like this would be accepted by most, might even be an interesting nugget a reader would appreciate. The issue is the style of claim (being the originator) is dropped far more than it should be.

I'm personally a fan of many ideas Wolfram pushes, just not a fan of the style they're pushed. I'd say I'm not in the minority, to the point it's a tired cliche.


"Only the great are permitted great faults."—La Rochefoucauld


The only reasonable response


I was always under the impression that Donald Knuth “invented” notebooks in 1984¹. Maybe Mathematica was the first to implement it, but that’s not the impression you get from the article.

¹ https://en.wikipedia.org/wiki/Literate_programming


AFAICT, literate programming does not imply interactive workflow. Also, Mathematica notebooks are extremely flexible thanks to its lisp-like language, and it's not really about writing docs and code. You can draw diagrams, format texts and paragraphs, and embed dynamic/interactive elements. It's indeed the first and the foremost in its direction.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: