This article may have been created or edited in return for undisclosed payments, a violation of Wikipedia's terms of use. It may require cleanup to comply with Wikipedia's content policies, particularly neutral point of view. (March 2021)
The Wolfram Language was a part of the initial version of Mathematica in 1988.[11]
Symbolic aspects of the engine make it a computer algebra system. The language can perform integration, differentiation, matrix manipulations, and solve differential equations using a set of rules. Also, the initial version introduced the notebook model and the ability to embed sound and images, according to Theodore Gray's patent.[12]
Wolfram also added features for more complex tasks, such as 3D modeling.[13]
A name was finally adopted for the language in 2013, as Wolfram Research decided to make a version of the language engine free for Raspberry Pi users, and they needed to come up with a name for it.[14] It was included in the recommended software bundle that the Raspberry Pi Foundation provides for beginners, which caused some controversy due to the Wolfram language's proprietary nature.[15] Plans to port the Wolfram language to the Intel Edison were announced after the board's introduction at CES 2014 but was never released.[16] In 2019, a link was added to make Wolfram libraries compatible with the Unity game engine, giving game developers access to the language's high level functions.[17][18]
Syntax
The Wolfram Language syntax is overall similar to the M-expression of 1960s LISP, with support for infix operators and "function-notation" function calls.
Basics
The Wolfram language writes basic arithmetic expressions using infix operators.
(* This is a comment. *)4+3(* = 7 *)1+2*(3+4)(* = 15 *)(* Note that Multiplication can be omitted: 1 + 2 (3 + 4) *)(* Divisions return rational numbers: *)6/4(* = 3/2 *)
Function calls are denoted with square brackets:
Sin[Pi](* = 0 *)(* This is the function to convert rationals to floating point: *)N[3/2](* = 1.5 *)
Lists are enclosed in curly brackets:
Oddlist={1,3,5}(* = {1,3,5} *)
Syntactic sugar
The language may deviate from the M-expression paradigm when an alternative, more human-friendly way of showing an expression is available:
A number of formatting rules are used in this language, including TeXForm for typeset expressions and InputForm for language input.
Functions can also be applied using the prefix expression @ and the postfix expression //.
Functions in the Wolfram Language are effectively a case of simple patterns for replacement:
F[x_]:=x^0
The := is a "SetDelayed operator", so that the x is not immediately looked for. x_ is syntax sugar for Pattern[x, Blank[]], i.e. a "blank" for any value to replace x in the rest of the evaluation.
The /; operator is "condition", so that the rule only applies when y>z. The three underscores are a syntax for a BlankNullSequence[], for a sequence that can be null.
A ReplaceRepeated //. operator can be used to apply this rule repeatedly, until no more change happens:
The pattern matching system also easily gives rise to rule-based integration and derivation. The following are excerpts from the Rubi package of rules:[20]
(* Reciprocal rule *)Int[1/x_,x_Symbol]:=Log[x];(* Power rule *)Int[x_^m_.,x_Symbol]:=x^(m+1)/(m+1)/;FreeQ[m,x]&&NeQ[m,-1]
Implementations
The official, and reference, implementation of the Wolfram Language lies in Mathematica and associated online services. These are closed source.[21] Wolfram Research has, however, released a parser of the language under the open sourceMIT License.[22] The parser was originally developed in C++ but was rewritten in Rust in 2023. The reference book is open access.[23]
In the over three-decade-long existence of the Wolfram language, a number of open source third party implementations have also been developed. Richard Fateman's MockMMA from 1991 is of historical note, both for being the earliest reimplementation and for having received a cease-and-desist from Wolfram. Modern ones still being maintained as of April 2020[update] include Symja in Java, expreduce in Golang, and the SymPy-based Mathics.[24] These implementations focus on the core language and the computer algebra system that it implies, not on the online "knowledgebase" features of Wolfram.
In 2019,[25] Wolfram Research released the freeware Wolfram Engine, to be used as a programming library in non-commercial software.[26]
Naming
The language was officially named in June 2013 and has been used as the backend of Mathematica and other Wolfram technologies for over 30 years.[27][28]