Wolfram Language

Jump to content
From Wikipedia, the free encyclopedia
Wolfram Language
ParadigmMulti-paradigm: term-rewriting, functional, procedural, array
Designed byStephen Wolfram
DeveloperWolfram Research
First appeared1988; 38 years ago (1988)
Stable release
14.3.0[1] / August 5, 2025; 4 months ago (2025-08-05)
Typing disciplineDynamic, strong
OSCross-platform
LicenseProprietary
Filename extensions.nb, .m, .wl
Websitewww.wolfram.com/language/ Edit this at Wikidata
Major implementations
Mathematica, Mathics, Expreduce, MockMMA
Influenced by
Influenced

The Wolfram Language (/ˈwʊlfrəm/ WUUL-frəm) is a proprietary,[7] high-level multi-paradigm programming language[8] developed by Wolfram Research. It emphasizes symbolic computation, functional programming, and rule-based programming[9] and can employ arbitrary structures and data.[9] It is the programming language of the mathematical symbolic computation program Mathematica.[10]

History

[edit]

The Wolfram Language was 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 were 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

[edit]

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

[edit]

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

[edit]

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 //.
  • Derivatives can be denoted with the apostrophe '.
  • The infix operators themselves are considered "sugar" for the function notation system.

A FullForm formatter desugars the input:[19]

FullForm[1+2](* = Plus[1, 2] *)

Functional programming

[edit]

Currying is supported.

Pattern matching

[edit]

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.

An iteration of bubble sort is expressed as:

sortRule := {x___,y_,z_,k___} /; y>z -> {x,z,y,k}(* Rule[Condition[List[PatternSequence[x, BlankNullSequence[]], Pattern[y, Blank[]], Pattern[z, Blank[]], PatternSequence[k, BlankNullSequence[]]], Greater[y, z]], List[x, z, y, k]] *)

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:

{ 9, 5, 3, 1, 2, 4 } //. sortRule(* = ReplaceRepeated[{ 9, 5, 3, 1, 2, 4 }, sortRule] *)(* = {1, 2, 3, 4, 5, 9} *)

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

[edit]

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 source MIT 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 include Symja in Java, expreduce in Golang, and 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. This developer-only engine provides a command-line shell of the Mathematica evaluator (with a limited number of kernels) and requires signup and license activation over the web. The freely available Jupyter Notebook/Lab project provides a protocol (ZMQ) to connect their notebooks to various languages, this is available as an alternative to the text-only CLI interface via the Wolfram Kernel for Jupyter.[26]

Naming

[edit]

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]

See also

[edit]

References

[edit]
  1. ^ "New Features Everywhere: Launching Version 14.3 of Wolfram Language & Mathematica". Stephen Wolfram Writings. 2025-08-05. Retrieved 2025-08-05.
  2. ^ Wolfram, Stephen. "Tini Veltman (1931–2021): From Assembly Language to a Nobel Prize—Stephen Wolfram Writings". stephenwolfram.comwritings. Retrieved 22 January 2021.
  3. ^ Maeder, Roman E. (1994). The Mathematica® Programmer. Academic Press, Inc. p. 6. ISBN 978-1-48321-415-3.
  4. ^ "Wolfram Language Q&A". Wolfram Research. Retrieved 2016-12-05.
  5. ^ Somers, James. "The Scientific Paper Is Obsolete". The Atlantic. Retrieved 2018-04-10.
  6. ^ Hickey, Rich. "Clojure Bookshelf". Amazon.com. Archived from the original on 2017-10-03. Retrieved 2020-05-06.
  7. ^ "Wolfram Open Code, Open Source, Open Data, Open Resources". www.wolfram.com. Retrieved 2023-02-03.
  8. ^ "Notes for Programming Language Experts about Wolfram Language". Wolfram.com. Retrieved 2015-11-05.
  9. ^ a b "What Should We Call the Language of Mathematica?—Stephen Wolfram Blog". Blog.stephenwolfram.com. 2013-02-12. Retrieved 2015-11-05.
  10. ^ "Celebrating Mathematica's First Quarter Century—Wolfram Blog". Blog.wolfram.com. 23 June 2013. Retrieved 2015-11-05.
  11. ^ Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.
  12. ^ Hayes, Brian (1990-01-01). "Thoughts on Mathematica" (PDF). Pixel.
  13. ^ "Wolfram Language & System Documentation Center". Reference.wolfram.com. Retrieved 2015-11-05.
  14. ^ "Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog". Blog.wolfram.com. 21 November 2013. Retrieved 2015-11-05.
  15. ^ Sherr, Ian (2013-11-22). "Premium Mathematica software free on budget Raspberry Pi - CNET". News.cnet.com. Retrieved 2015-11-05.
  16. ^ Daniel AJ Sokolov (2014-11-22). "Intels Edison: Pentium-System im Format einer SD-Karte | heise online". Heise.de. Retrieved 2015-11-05.
  17. ^ "The Wolfram Language will soon be integrated into Unity". Gamasutra. 2014-03-10. Retrieved 2015-11-05.
  18. ^ "Is there a way to use Wolfram Language in Unity3D?". Wolfram. 2017. Archived from the original on 19 July 2017. Retrieved 11 April 2017.
  19. ^ "FullForm". Wolfram Language Documentation.
  20. ^ "Welcome to Rubi, the Rule-based Integrator". Rule-based Integration.
  21. ^ McLoone, J (2 April 2019). "Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog".
  22. ^ "codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)". GitHub. Wolfram Research, Inc.
  23. ^ "Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources". www.wolfram.com.
  24. ^ Simon. "Is there an open source implementation of Mathematica-the-language?". Mathematica Stack Exchange.
  25. ^ Wolfram, Steven (21 May 2019). "Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings".
  26. ^ "Free Wolfram Engine for Developers". www.wolfram.com. Retrieved 19 January 2021.
  27. ^ Kastrenakes, Jacob (2013-11-14). "Wolfram announces 'most important' project: a programming language that models the world". The Verge. Retrieved 2023-09-21.
  28. ^ "Something Very Big Is Coming: Our Most Important Technology Project Yet—Stephen Wolfram Writings". writings.stephenwolfram.com. 2013-11-13. Retrieved 2023-09-21.
[edit]
    Wolfram Language
    ParadigmMulti-paradigm: term-rewriting, functional, procedural, array
    Designed byStephen Wolfram
    DeveloperWolfram Research
    First appeared1988; 38 years ago (1988)
    Stable release
    14.3.0[1] / August 5, 2025; 4 months ago (2025-08-05)
    Typing disciplineDynamic, strong
    OSCross-platform
    LicenseProprietary
    Filename extensions.nb, .m, .wl
    Websitewww.wolfram.com/language/
    Major implementations
    Mathematica, Mathics, Expreduce, MockMMA
    Influenced by
    Influenced

    The Wolfram Language (/ˈwʊlfrəm/ WUUL-frəm) is a proprietary,[7] high-level multi-paradigm programming language[8] developed by Wolfram Research. It emphasizes symbolic computation, functional programming, and rule-based programming[9] and can employ arbitrary structures and data.[9] It is the programming language of the mathematical symbolic computation program Mathematica.[10]

    History

    The Wolfram Language was 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 were 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 //.
    • Derivatives can be denoted with the apostrophe '.
    • The infix operators themselves are considered "sugar" for the function notation system.

    A FullForm formatter desugars the input:[19]

    FullForm[1+2](* = Plus[1, 2] *)

    Functional programming

    Currying is supported.

    Pattern matching

    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.

    An iteration of bubble sort is expressed as:

    sortRule := {x___,y_,z_,k___} /; y>z -> {x,z,y,k}(* Rule[Condition[List[PatternSequence[x, BlankNullSequence[]], Pattern[y, Blank[]], Pattern[z, Blank[]], PatternSequence[k, BlankNullSequence[]]], Greater[y, z]], List[x, z, y, k]] *)

    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:

    { 9, 5, 3, 1, 2, 4 } //. sortRule(* = ReplaceRepeated[{ 9, 5, 3, 1, 2, 4 }, sortRule] *)(* = {1, 2, 3, 4, 5, 9} *)

    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 source MIT 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 include Symja in Java, expreduce in Golang, and 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. This developer-only engine provides a command-line shell of the Mathematica evaluator (with a limited number of kernels) and requires signup and license activation over the web. The freely available Jupyter Notebook/Lab project provides a protocol (ZMQ) to connect their notebooks to various languages, this is available as an alternative to the text-only CLI interface via the Wolfram Kernel for Jupyter.[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]

    See also

    References

    1. ^ "New Features Everywhere: Launching Version 14.3 of Wolfram Language & Mathematica". Stephen Wolfram Writings. 2025-08-05. Retrieved 2025-08-05.
    2. ^ Wolfram, Stephen. "Tini Veltman (1931–2021): From Assembly Language to a Nobel Prize—Stephen Wolfram Writings". stephenwolfram.comwritings. Retrieved 22 January 2021.
    3. ^ Maeder, Roman E. (1994). The Mathematica® Programmer. Academic Press, Inc. p. 6. ISBN 978-1-48321-415-3.
    4. ^ "Wolfram Language Q&A". Wolfram Research. Retrieved 2016-12-05.
    5. ^ Somers, James. "The Scientific Paper Is Obsolete". The Atlantic. Retrieved 2018-04-10.
    6. ^ Hickey, Rich. "Clojure Bookshelf". Amazon.com. Archived from the original on 2017-10-03. Retrieved 2020-05-06.
    7. ^ "Wolfram Open Code, Open Source, Open Data, Open Resources". www.wolfram.com. Retrieved 2023-02-03.
    8. ^ "Notes for Programming Language Experts about Wolfram Language". Wolfram.com. Retrieved 2015-11-05.
    9. ^ a b "What Should We Call the Language of Mathematica?—Stephen Wolfram Blog". Blog.stephenwolfram.com. 2013-02-12. Retrieved 2015-11-05.
    10. ^ "Celebrating Mathematica's First Quarter Century—Wolfram Blog". Blog.wolfram.com. 23 June 2013. Retrieved 2015-11-05.
    11. ^ Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.
    12. ^ Hayes, Brian (1990-01-01). "Thoughts on Mathematica" (PDF). Pixel.
    13. ^ "Wolfram Language & System Documentation Center". Reference.wolfram.com. Retrieved 2015-11-05.
    14. ^ "Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog". Blog.wolfram.com. 21 November 2013. Retrieved 2015-11-05.
    15. ^ Sherr, Ian (2013-11-22). "Premium Mathematica software free on budget Raspberry Pi - CNET". News.cnet.com. Retrieved 2015-11-05.
    16. ^ Daniel AJ Sokolov (2014-11-22). "Intels Edison: Pentium-System im Format einer SD-Karte | heise online". Heise.de. Retrieved 2015-11-05.
    17. ^ "The Wolfram Language will soon be integrated into Unity". Gamasutra. 2014-03-10. Retrieved 2015-11-05.
    18. ^ "Is there a way to use Wolfram Language in Unity3D?". Wolfram. 2017. Archived from the original on 19 July 2017. Retrieved 11 April 2017.
    19. ^ "FullForm". Wolfram Language Documentation.
    20. ^ "Welcome to Rubi, the Rule-based Integrator". Rule-based Integration.
    21. ^ McLoone, J (2 April 2019). "Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog".
    22. ^ "codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)". GitHub. Wolfram Research, Inc.
    23. ^ "Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources". www.wolfram.com.
    24. ^ Simon. "Is there an open source implementation of Mathematica-the-language?". Mathematica Stack Exchange.
    25. ^ Wolfram, Steven (21 May 2019). "Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings".
    26. ^ "Free Wolfram Engine for Developers". www.wolfram.com. Retrieved 19 January 2021.
    27. ^ Kastrenakes, Jacob (2013-11-14). "Wolfram announces 'most important' project: a programming language that models the world". The Verge. Retrieved 2023-09-21.
    28. ^ "Something Very Big Is Coming: Our Most Important Technology Project Yet—Stephen Wolfram Writings". writings.stephenwolfram.com. 2013-11-13. Retrieved 2023-09-21.
    • Official website
    • Documentation for the Wolfram Language
    • An Elementary Introduction to the Wolfram Language
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Wolfram_Language&oldid=1321290566"