Message Boards Message Boards

Amazing continuity of Mathematica software

Posted 2 years ago

I just went through some of my old Mathematica notebooks and was amazed that they all still work.

Here's a screenshot of a notebook made in very old version....maybe back in the 90s? A few years later I re-used that notebook to make this blogpost about loss functions used in Machine Learning.

enter image description here

This kind of support for continuity over decades is amazing, and unprecedented in the open-source world. There's a new hot graphics library every few years, and the old ones get abandoned, so the old code does not work anymore.

This gives me faith to keep important ideas in notebook form, knowing that I can come back to them decades later, maybe when I get bored of software engineering and decide to teach.

Good job Wolfram Research, please keep up the good work!

POSTED BY: Yaroslav Bulatov
4 Replies

This was one of my main reason to adopt Mathematica.

POSTED BY: Jack I Houng

No need to make a "N00b" joke here, there's plenty of archival code available online. If you are a young aspiring student hoping to join Wolfram Physics Project someday, perhaps you could start with Bill Burke's Symbolic Forms Calculator? This project goes back to 1995, the year before Bill Burke died in a tragic car accident. Other developments have happened since then. Meanwhile symplectic geometry and other forms of mixing calculus and geometry did not just go away. Instead, as far as I can tell, calculus and geometry have grown together and are becoming increasingly well understood through new symbolic algorithms. Here's what you would want to do on day 1:

Get the source code and save it into the AddOns directory, which is buried somewhere on the file tree. Next, make a change to the user kernel init file such as line two of the following:

(** User Mathematica initialization file **)
AppendTo[$Path, "/Applications/Mathematica.app/Contents/AddOns/riscergosum-1.1.4"]
AppendTo[$Path, "/Applications/Mathematica.app/Contents/AddOns/BurkeArchive"]

(See also: this thread on stack exchange. If you're using a Mac, you also need to figure out their convention for hiding important directories. )

Now, the operating system knows where to look up the unit tests, so all you need to do is type in two lines, per instructions from the original documentation.

These notes describe a calculator implemented in Mathematica to simplify expressions involving differential forms. As the name implies, the intent was to make a minimal implementation, with little attention paid to efficient input or pretty output. . . .

There is a file of test expressions that has been used to validate the system, and that should be used if you modify the rules to ensure that you have not broken anything. The file is called trip.m and will run when you load it after forms.m.

--Bill Burke, Simple Forms Instructions manual

<< forms`

   --   Simple Forms Calculator   -- William L. Burke
$Header: d:/math/bb/forms/forms.m%v 0.4.8 1995/02/20 

<< trip`

   --  Test Suite for Tiny Forms Calculator   -- 



$Header: d:/math/bb/forms/trip.m%v 1.9 1995/02/11 10:38:52 bill Exp bill $

   --   Euclidean 3-Space Basis Forms   -- 

$Header: d:/math/bb/forms/euclid3.m%v 1.4 1995/02/07 14:08:28 bill Exp bill $

Testing TestIt, should fail and list {1}

  failure

{1}

Euclid3.m Forms

  correct

Linearity of Forms

  correct

FSimp on Forms

  correct

Angle on Forms

  correct

Wedge on Forms

  correct

Exterior Differentiation of Forms

  correct

Vector Commutators

  correct

Lie Derivatives of Forms

  correct

Euclid3.m Twisted Forms

  failure

{tx-TForm[x],ty-TForm[y],tz-TForm[z],txty-TForm[x,y],tytz-TForm[y,z],tztx+TForm[x,z],txtytz-TForm[x,y,z],0}

Linearity of Twisted Forms

  correct

FSimp on Twisted Forms

  correct

Angle on Twisted Forms

  failure

{angle[Vector[x],tx],angle[Vector[y],ty],txty+angle[Vector[x],ty],-txty-angle[Vector[x],ty],-txty+angle[Vector[x],-ty],-tztx+angle[Vector[x],tz],angle[Vector[x],txty],-txtytz+angle[Vector[x],tytz],0,angle[Vector[x],txtytz],-tx+TForm[x],-ty+TForm[y],txty-tztx+angle[Vector[x],tx]+angle[Vector[x],ty]+angle[Vector[x],tz],-txtytz+angle[Vector[x],txty]+angle[Vector[x],tytz]+angle[Vector[x],tztx],angle[Vector[x],2 txtytz],-txty+angle[Vector[x],tx]+angle[Vector[y],tx],angle[Vector[x],tx]+angle[Vector[x],ty]+angle[Vector[y],tx]+angle[Vector[y],ty],angle[Vector[x],txty]+angle[Vector[y],txty],-3 txtytz+3 angle[Vector[x],tytz],0,0,angle[Vector[x],tx],angle[Vector[x],txtytz],0}

Wedge of Form and Twisted Form 

  failure

{Form[x] TForm[],Form[x,y] TForm[],0,0,0,-TForm[]+Form[x] TForm[x],TForm[]-Form[x] TForm[x],TForm[]-Form[x] TForm[x],-TForm[y]+Form[x] TForm[y,x],-TForm[z,y]+Form[x] TForm[z,y,x],TForm[y]+Form[x] TForm[x,y],-TForm[y,z]+Form[x] TForm[x,y,z],Form[y] TForm[x],Form[z] TForm[y,x],Form[w] TForm[z,y,x],-TForm[]+Form[x,y] TForm[x,y],-TForm[]+Form[x,y,z] TForm[x,y,z],Form[x,y] TForm[x,z],Form[x,y,z] TForm[x,y,w],0}

Wedge of Twisted Form and Twisted Form 

  failure

{TForm[]^2,tx TForm[],txty TForm[],-Form[x,y,z]+txtytz TForm[],Form[x,y,z]-txtytz TForm[],Form[x,y,z]-txtytz TForm[],-Form[x,y,z]+TForm[] TForm[z,x,y],-Form[x,y,z]+TForm[] TForm[y,z,x],Form[x,y,z]+TForm[] TForm[x,z,y],Form[x,y,z]+TForm[] TForm[y,x,z],Form[x,y,z]+TForm[] TForm[z,y,x],tx TForm[],txty TForm[],-Form[x,y,z]+txtytz TForm[],-Form[x,y,z]+TForm[] TForm[z,x,y],-Form[x,y,z]+TForm[] TForm[y,z,x],Form[x,y,z]+TForm[] TForm[x,z,y],Form[x,y,z]+TForm[] TForm[y,x,z],Form[x,y,z]+TForm[] TForm[z,y,x],tx txtytz-Form[y,z],txtytz ty+Form[x,z],txtytz tz-Form[x,y],txty txtytz-Form[z],txtytz tytz-Form[x],txtytz txtz+Form[y],-1+txtytz^2,txty txtz-Form[y,z],0}

Wedge of Twisted Form and Form 

  failure

{0,tx Form[x]-TForm[],txty Form[x,y]-TForm[],txtytz Form[x,y,z]-TForm[],tx Form[x,y],tx Form[x,y,z],-ty+txty Form[x],ty-txty Form[x],ty-txty Form[x],-tz+txtytz Form[x,y],0}

Lie Derivatives of Twisted Forms

  failure

{-angle[Vector[x],ty x] Form[z]-z ((x Form[ty]+ty Form[x]) (angle^(0,1))[Vector[x],ty x]+Form[x] (Vector^\[Prime])[x] (angle^(1,0))[Vector[x],ty x]),-angle[Vector[x],ty y] Form[z]-z ((y Form[ty]+ty Form[y]) (angle^(0,1))[Vector[x],ty y]+Form[x] (Vector^\[Prime])[x] (angle^(1,0))[Vector[x],ty y]),-angle[Vector[y],tytz] Form[x]-x (Form[tytz] (angle^(0,1))[Vector[y],tytz]+Form[y] (Vector^\[Prime])[y] (angle^(1,0))[Vector[y],tytz]),-angle[Vector[y],tztx] Form[x]-x (Form[tztx] (angle^(0,1))[Vector[y],tztx]+Form[y] (Vector^\[Prime])[y] (angle^(1,0))[Vector[y],tztx]),angle[Vector[y],tztx] Form[x]+x (Form[tztx] (angle^(0,1))[Vector[y],tztx]+Form[y] (Vector^\[Prime])[y] (angle^(1,0))[Vector[y],tztx]),angle[Vector[y],tztx] Form[x]+x (Form[tztx] (angle^(0,1))[Vector[y],tztx]+Form[y] (Vector^\[Prime])[y] (angle^(1,0))[Vector[y],tztx]),-angle[Vector[y],txty] Form[x]-x (Form[txty] (angle^(0,1))[Vector[y],txty]+Form[y] (Vector^\[Prime])[y] (angle^(1,0))[Vector[y],txty]),-angle[Vector[x],txtytz] Form[x]-x (Form[txtytz] (angle^(0,1))[Vector[x],txtytz]+Form[x] (Vector^\[Prime])[x] (angle^(1,0))[Vector[x],txtytz]),0,0}

Exterior Differentiation of Twisted Forms

  failure

{y Form[tx]+x Form[ty],x Form[tytz],-x Form[tytz],x Form[txtytz],0}

Pullback of Forms

  failure

{-Form[x,y]-Form[x,z]+Form[x,y+z],-Form[x]+Form[Dt[x]],-Form[x,y]+Form[Dt[x],y],-Form[x,y]+Form[Dt[x],Dt[y]],0,0,0,0,0}

Hodge Star

  failure

{-tx+TForm[x],-Form[x]+tx TForm[],-tx-ty+TForm[x]+TForm[y],-2 Form[x]+2 TForm[x],0,-txty+TForm[x,y],0,0,0}

** on Forms

  failure

{3 Form[x] Form[y]-3 Form[x,y],0,0,0,0}

Some of it still works, not all of it. If Bill Burke had survived to old age, he would have had time to accomplish a lot more interesting and important work in study of differential forms. No matter how you look at it, as time goes on, it's always up to the next generation to do the maintaining, even the maintaining of calculus and geometry as a type of knowledge.

POSTED BY: Brad Klee

That's a fact! Stephen Wolfram was mentioning this on different occasions, for instance:

It’s fun today to launch Mathematica 1.0 on an old computer, and compare it with today. Yes, even in Version 1, there’s a recognizable Wolfram Notebook to be seen. But what about the Mathematica code (or, as we would call it today, Wolfram Language code)? Well, the code that ran in 1988 just runs today, exactly the same! And, actually, I routinely take code I wrote at any time over the past 30 years and just run it.

enter image description here

That's a quote from Stephen Wolfram's blog on 30's anniversary We’ve Come a Long Way in 30 Years (But You Haven’t Seen Anything Yet!). Also of relevance is the Mathematica Scrapbook.

POSTED BY: Vitaliy Kaurov

I have notebooks that go back to version 1 and most still work as they did then. I also have palette driven applications that I wrote back in version 5 (50,000 lines of code) that still work with no change. Yep, the attention to backward compatibility is legendary.

POSTED BY: David Reiss
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract