I am trying to figure out what the announcement of the Wolfram Language means for Mathematica.
Is Mathematica an implementation of the Wolfram Language, or is it something else?
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityI am trying to figure out what the announcement of the Wolfram Language means for Mathematica.
Is Mathematica an implementation of the Wolfram Language, or is it something else?
The Wolfram Language is what we all know as Mathematica, but rebranded to help wider adoption to people, particularly for people who don't think of themselves as "math" people. As a Mathematica programmer, emphasis on the "programmer", I see this as a good thing.
WolframFrontEnd
and WolframBackEnd
for the FE & kernel, but were wise enough to see why that might be a bad idea... :D Oh, all the missed opportunities.
$\endgroup$
tl;dr The programs started by the "Mathematica" and "Wolfram" icons in Raspbian have the same capabilities and the same back end. Only the user interface differs.
As of 2014 June, the Raspbian operating system (of the Raspberry Pi computer) comes with Mathematica pre-installed. There are two related icons on the desktop, "Mathematica" and "Wolfram".
To understand the difference between these two, one needs to understand the architecture of Mathematica first. Mathematica uses two processes:
One that displays the GUI and the notebook interface. This has traditionally been known as the Mathematica Front End.
One that does the actual computations. This used to be known as the Mathematica Kernel.
These two processes are independent but they rely on each other:
The Front End can show notebook documents without the kernel, but all computations must be sent to a running kernel for evaluation.
The Kernel can be run alone and used in command line mode. However, certain functions, such as exporting graphics, do require the Front End. When exporting graphics, the Front End is launched in the background without displaying anything on screen, and the graphics object is sent to it for rendering. (This is why exporting graphics requires a running X server--use Xvfb on headless machines.)
Somewhat confusingly, in Raspbian the icon that starts the Front End is called "Mathematica" and the icon that starts the Kernel in command line mode is called "Wolfram", suggesting that they will start different systems. Other then using a notebook interface or a traditional command line for input, these two are identical. The have exactly the same computational capabilities.
This information is valid as of June 2014.
I think that giving the language we use in Mathematica a name ("W", or whatever), and establishing it as separate from the Mathematica Interface is a step in the right direction. Mathematica is "Visual Wolfram" (arg) or something like that - an interactive interface for TWL. It has a REPL, renders graphics, formats tables, grids, etc.. That's not TWL - that's an environment it runs in.
The front end displays plots and graphics from the kernel, but something else could do the same thing. If you look inside the expression returned from evaluating Plot[...], the stuff you see isn't "The Wolfram Language" - it's data from the kernel, to be displayed. Splitting out TWL paves the way for other platforms (like in Rasberry Pi), and perhaps someday something like a compiler.
The Wolfram language is more an informal abstraction than an implementation of Mathematica.
A formal or normative definition does not exist yet after many years but three important events have occurred.
Stephen Wolfram's book "An elementary introduction to the Wolfram language" introduces the language as a more expressive extension of natural language.
We will know that Mathematica is an implementation of the Wolfram language when we see another implementation. Maybe Mathics?
One important part of Mathematica, the front end (user interface), is neatly independent of the Wolfram language and seems to be actually replaceable by the Jupyter notebook.
By analogy with Python for example, I suggest that the Wolfram language be everything that can be interpreted in the command line. e. g. wolfram
on the Raspberry pi or mathematica
on other machines.
That includes some functions used almost only by the front end like ToBoxes.
So Mathematica would be the most popular interface or working environment for the Wolfram language. Others are the Unix terminal, Wolfram Alpha, WebMathematica, the Wolfram Workbench and maybe the Jupyter notebook.
Finally I propose this answer : NO Mathematica is not an implementation of the Wolfram language but it is a package of a working environment for the Wolfram language on top of the Wolfram language itself.
There are still problems of definition :
sometimes the Wolfram language grows by downloading over the internet from Wolfram Research. Versioning is not very meaningful. Are datasets included? Are numerical libraries included? Which ones?
the definition is not universal: you can't reproduce the Wolfram language in your own lab, independently of a company or a device, that is just like the definition of physical units before the metric system,
Dynamic does not work in the command line, it is not part of the Wolfram language. (Indeed it runs in the front end.) Same for Manipulate, CreateDocument.
Maybe the first A in this Q&A https://www.wolfram.com/language/faq/ is a good answer to this topic.
Hope it helps!
SW said something interesting in yesterday's keynote at WTC21.
He said Wolfram One and Mathematica are about to be identical products. A "restarting point". From there, Mathematica will evolve in a certain direction in the mathematical paradigm, and Wolfram One will evolve in a different direction for the computational paradigm. This "progressive divergence" should result into two distinct, if not very different pieces of software.
I add an answer because I need more space.
Consider for example Wolfram for Software Developers and more particularly the link Wolfram language for Jupyter.
The Wolfram language being passed to Jupyter is inconsistent with
In a first approximation, the Wolfram Language = Mathematica + Wolfram|Alpha + Cloud + more. It's compatible with Mathematica, but it's a significant evolution, including knowledge, deployment and many new ideas.
from Wolfram language Q&A.
Obviously, Mathematica or Wolfram Alpha is not passed to Jupyter!
For me, the first approximation is not good at all.
More accurate is Launching Today: Free Wolfram Engine for Developers by Stephen Wolfram:
The Wolfram Engine is the heart of all our products. It’s what implements the Wolfram Language,
Many people know the Wolfram Language (often in the form of Mathematica) as a powerful system for interactive computing—and for doing R&D, education, data science and “computational X” for many X. But increasingly it’s also being used “behind the scenes” as a key component in building production software systems. And what the Free Wolfram Engine for Developers now does is to package it so it’s convenient to insert into a whole range of software engineering environments and projects.
I understand this as the Wolfram engine being the actual interpreter or realization of the Wolfram language, so it is practically possible to confuse them, as long as only one engine exists.
Mathematica is the engine plus the notebook interface. (Except Mathematica version 2 for Unix, which had no notebook interface.)
The Wolfram language is part of Mathematica but Mathematica is not part of the Wolfram language.
Paraphrasing the Wolfram language Q&A, in a second approximation, the Wolfram Language is the intersection (not the union) of Mathematica, Wolfram|Alpha, Cloud + more.
SameQ[Mathematica,WL]
to be True
? Btw, I also think giving a name to the Language is a good thing. It makes it easier to talk about it.
$\endgroup$