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.
Your question is "Is Mathematica an Implementation of the Wolfram Language?".
So is deals about Mathematica, Implementation and Wolfram Language.
The first fact is that the documentation of Mathematica starts with the core language and structure section. This indicates that Mathematica contains more than the Wolfram language. It offers additional structures that offer comfort and access to the core of the Wolfram Language. This core of the Wolfram Language structures again the Wolfram Language.
So there are several products offered by Wolfram Language indicating that there sets belonging to the Wolfram Language with one single Wolfram Language core and different internal and external structures making the Wolfram Language diverse and versatile.
Now we have some idea about what Mathematica is which is fairly abstract.
Programming language gives a nice and sorrowful definition of what a programming language is. And indeed it is named in the section Proprietary languages. But that is not the greatest effort for the definition of programming languages. Have a look at Fifth-generation programming language. And from this, You got further to Fourth-generation programming language. This page mentions again Wolfram Language.
Wolfram language is classified as fourth-generation language and as Data manipulation, analysis, and reporting language. So the central data type is the list as a representation of tables. This does not value the versatility of the Wolfram language as a high-end mathematical tool package.
So Wolfram lnaDomain-specific language might be suggested by the Rapsberry Pi port it lacks by high effort the gross abstraction to performance optimization on various machines. The new paradigm by Stephen Wolfram of higher parallel processing is targeted to this field of classification. So the Wolfram language depends strongly on the port ins use.
Wolfram Language lists the prioritized paradigms:
Multi-paradigm: term-rewriting, functional, procedural, array
from a different source than Stephan Wolfram.
He usually characterizes Wolfram language by multicomputation a fourth paradigm for theoretical science.
This different conceptualization makes it so hard to characterize the Wolfram language as a matter of abstraction. This is on the other hand an answer to the realization of Moore's limit on the CPU integrations lower limit by the structuring by light on silicon-based CPUs. Parallelization is now a new foundational criterion to advance.
And port and implementation are closely related and parallelization is close to implementation traditionally. Wolfram language states that Wolfram Inc. officially names Mathematica as the implementation of the Wolfram Language and the therein offered online services. That extends Wolfram language with the decorators of the input line like the double equal, control+equal, and so on inputs.
So the Wolfram language is a knowlegde based collection of recipes and encyclopedic content as well.
More formally Implementation gives ideas about what should have been in the answer. This again relates to multi-paradigm programming languages. So symbolic programming is extended to knowlegde-based programming or better science rejected the concept of symbolic programming and replaced it with knowledge-based programming.
So taking the definition of implementation seriously each built-in has an interface implemented. Making the port important and the interface to the interfaces so the well-known input-output sequential.
So Wolfram language and the Mathematica software are not so well implemented because there are many of the interfaces of the functions and features hidden to the user requiring very often different concepts to well-known for example mathematical concepts. The interfaces are not very well open and documented as this very community often confirms.
From this conceptual clearance stems the fact that Wolfram language is not an implementation of Mathematica and vice versa. Each has its own corpus of interfaces incorporating the implementation. Wolfram language is neither a subset nor a part of Mathematica. Moreover, they are caused by the no doubling paradigm of both in a corresponding, cohesive or coherent relation. They are simply based on the paradigms put together in the Mathematica package because it might be of interest and importance to the customers.
The user may use each in a single input that is all. They can be operated together and give a visual, audial and performative interplay. The can too be viewed as a consequence of object orientation, and that the kernels ar separated from the GUIs, for example, notebooks or command line, and from the packages.
Do not mix up Wolfram language with Mathematica and vice versa. Wolfram language comes with Mathematica in a bundle as well as with the other Wolfram products. Wolfram Alpha does not locally have the Wolfram language as well as the Wolfram cloud. The interface get local to the user in part.
This is a logical from Implementation. So Mathematica contains an implement of the Wolfram language. There is a set of interface to operate the Wolfram language in with Mathematica including GUI-based applications.
Language Overview is an overview to the knowledge-based Wolfram language.
"The Wolfram Language is a highly developed knowledge-based language that unifies a broad range of programming paradigms and uses its unique concept of symbolic programming to add a new level of flexibility to the very concept of programming."
"Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy."
So where are the limits? As the progress of Mathematica shows the makers of Mathematica are not satisfied themselves. Look always when a new version appears at Stephen Wolfram notes on it, and at the New Features pages.
A very interesting glance in the depth of the question gives ThreadEqual. Many use Mathematica as it is. Some enhance the seemingly trivial features further. This package does "Make listable functions thread over equations as they do over lists. Allows for easy manipulation of equations." This is nowhere else documented. It can be done and changes the input-output-interface and implementation. Implementation is something strongly for making possibilities cognitive and this is rather well-known and most often used but by most never changed or adapted to personal needs.
This enhances or allows to enhance comprehension of the ongoing calculation in sequences of calculations. As already mentioned Mathematica offers the rewrite paradigm fully-fledged. Look at does-mathematica-have-a-built-in-tool-that-allows-one-to-operate-on-both-sides-o f an equation.
I described a situated cognition situation that is an implementation in detail. Wolfram language is part of the Mathematica software package. It can be run on the included kernel or parallelized kernels. The kernel is the port. The Wolfram language is the multi-paradigmen domain specific programming language in the domain of knowledge based programming. It is part of the 4GL programming language concept and a 4GL programming language.
The links if given offer a deeper structured insight into the details beyond the usual Wolfram Inc. rhetorics. Mathematica is placed is several Programming_domains.
The step Program starts with more reconstruction of what is constructed for the users of Mathematica. I pose that the question is not targeted towards Mathematical_optimization even in the meaning of mathematical programming as is the focus of the community.
Mathematica started with the special features of being able to deal with enormous big and small numbers beyond the usual typing systems for integers, reals, etc that are part of the port. And later integrated dimensions more deeply. But only both together gain an advantage for technical computations. That is rather typical for the development under Stephen Wolfram. Similar to the new 13.1 built-in SameTest.
But SameTest is a really fundamental problem in all programming languages. Even modern operating systems need a hard differentiating set of features and then even more guidance to distinguish. Explorative distinguishing is nearly impossible have a look an AI/ML recognition software. They most often need to be taught or taught-in.
There are depending on the standpoint in science and the personal attitude to science as a whole different weightings possible. Not at least Stephen Wolfram represents this differently. I think that my example and the offered theory shed some light on the question as I understand it. Mind this and all information here in my answer are only informal. So the question is Informal logic. The notebook interface of Mathematica is an Editor_(disambiguation), and the legend holds that this is the patent Stephen Wolfram holds despite he is famous for New kind of science. That is some variant of WYSIWYG starting with textual-like input (mathematical input). For most editors of that kind the input formatting is required to be hidden. In the Mathematica notebook interface this mainstream is broken and the formatted input is important and displayed.
Many remember Mathematica as one of the most prominent computer_algebra_systems. From this term system Wolfram Inc. draws its interpretation of "language and system". With this another standpoint confirmation to me is presented. The introduction of this is based on the new multicomputation-a-fourth-paradigm-for-theoretical-science added idea of
"In the full arc of scientific history, the computational paradigm is very new. But in the past couple of decades, it’s seen rapid and dramatic success—and by now it’s significantly overtaken the mathematical paradigm as the most common source for new models of things. Despite this, however, fundamental physics always seemed to resist its advance."
The kernel and the language stand out from the Literate programming related paradigms. They, therefore, deserved the separation and the promotion on the shopping shelves to gain more visibility. They are no longer platform-agnostic as the Literate programming are.
As shown above by example the very basic interfaces that are part of the implementation are still not much in general focus. There can be expected more effort by Wolfram Inc. on getting it there.
This how can one find undocumented options or option values in mathematica shows up Wolfram language based retrieval of the missing rest of the implementation of the interfaces in the given sets of functions, features, structures, datasets etc. that should be with Wolfram language to name Mathematica an implementation over all of the Wolfram language. This is very construction text that is necesssary because there is much more that whats is documented as interface in the Mathematica product for example in the documentation.
This google SERPs given some idea of what should be as an expectation: standard+for+interface+of+a+programming+language&t=bravened&ia=web. Main hit for me is Interface description language IDL.
Many are happy with the distinction between intepreted language and compiled language. For Mathematica that is not important. It can do both. See Mathematica code execution speed testing. The target is usually for this user group faster operations. For speed Mathematica includes since generation a package set for the major hardware near programming languages C, C++, Fortran, Python etc. This is a rather long and covering list. This in not part of the Wolfram language definitions. Wolfram language has to be independent to be named as programming language.
Common is the multiparadigmen paradigm. Wolfram language and Mathematica have only one of the most desired paradigm not. That is visual programming. As I mentioned above the Visual programming language is part of the package Mathematica and Wolfram language but only partly. Wolfram Inc. has a simulation package called System Modeler.
The is an upgrade available called Mathematica Enterprise Edition that includes even more of the Wolfram language. For the Jupyter plugin they talk about Wolfram Language For Jupyter. So with this nomenclature Wolfram Engine, i.e., a Wolfram Desktop or Mathematica installation is needed for the Wolfram Language For Jupyter.
The Wolfram language for jupyter is action:
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$