Jump to content

Wolfram Language: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
External links: more cuts. yeesh, what even happened here
Kzyx (talk | contribs)
i think general purpose is what is meant here
 
(30 intermediate revisions by 21 users not shown)
Line 1: Line 1:
{{Short description|Programming language and environment developed by Wolfram Research}}
{{Short description|Programming language and environment developed by Wolfram Research}}
{{multiple issues|
{{Undisclosed paid|date=March 2021}}
{{Undisclosed paid|date=March 2021}}
{{primary|date=March 2021}}
{{primary|date=March 2021}}
}}
{{Infobox programming language
{{Infobox programming language
| name = Wolfram Language
| name = Wolfram Language
Line 12: Line 14:
| designer = [[Stephen Wolfram]]
| designer = [[Stephen Wolfram]]
| developer = [[Wolfram Research]]
| developer = [[Wolfram Research]]
| latest release version = 13.1.0<ref>{{cite web |url=https://www.wolfram.com/language/quick-revision-history.html|title=Revision History}}</ref>
| latest release version = 14.1.0<ref>{{cite web |url=https://writings.stephenwolfram.com/2024/07/yet-more-new-ideas-and-new-functions-launching-version-14-1-of-wolfram-language-mathematica/|title=The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica|website=Stephen Wolfram Writings|date=2024-07-31|language=en|access-date=2024-07-31}}</ref>
| latest release date = {{start date and age|2022|06|29}}
| latest release date = {{start date and age|2024|07|31}}
| implementations = [[Wolfram Mathematica|Mathematica]], [https://github.com/mathics/Mathics Mathics], [https://github.com/corywalker/expreduce Expreduce], [https://web.archive.org/web/20160119224638/http://www.cs.berkeley.edu/~fateman/lisp/mma4max/ MockMMA]
| implementations = [[Wolfram Mathematica|Mathematica]], [https://github.com/mathics/Mathics Mathics], [https://github.com/corywalker/expreduce Expreduce], [https://web.archive.org/web/20160119224638/http://www.cs.berkeley.edu/~fateman/lisp/mma4max/ MockMMA]
| dialects =
| dialects =
| genre = [[Computer algebra system|Computer algebra]], [[List of numerical analysis software|numerical computations]], [[information visualization]], [[List of statistical packages|statistics]], [[Graphical user interface|user interface creation]]
<!-- | genre = [[Computer algebra system|Computer algebra]], [[List of numerical analysis software|numerical computations]], [[information visualization]], [[List of statistical packages|statistics]], [[Graphical user interface|user interface creation]]
-->
| influenced_by = {{startflatlist}}
| influenced_by = {{startflatlist}}
*[[APL (programming language)|APL]]
*[[APL (programming language)|APL]]
Line 36: Line 39:
| operating_system = [[Cross-platform]]
| operating_system = [[Cross-platform]]
| license = [[Proprietary license|Proprietary]]
| license = [[Proprietary license|Proprietary]]
| website = {{URL|https://www.wolfram.com/language/}}
| website = {{official URL}}
| file_ext = .nb, .m, .wl
| file_ext = .nb, .m, .wl
}}
}}


The '''Wolfram Language''' ({{IPAc-en|ˈ|w|ʊ|l|f|r|əm}} {{respell|WUUL|frəm}}) is a general [[multi-paradigm programming language]]<ref>{{cite web|url=https://www.wolfram.com/language/for-experts/|title=Notes for Programming Language Experts about Wolfram Language|publisher=Wolfram.com|access-date=2015-11-05}}</ref> developed by [[Wolfram Research]]. It emphasizes [[symbolic computation]], [[functional programming]], and [[rule-based programming]]<ref name="LangName">{{cite web|url=https://blog.stephenwolfram.com/2013/02/what-should-we-call-the-language-of-mathematica/|title=What Should We Call the Language of Mathematica?—Stephen Wolfram Blog|date=2013-02-12|publisher=Blog.stephenwolfram.com|access-date=2015-11-05}}</ref> and can employ arbitrary [[data structure|structures]] and data.<ref name="LangName"/> It is the programming language of the mathematical symbolic computation program [[Mathematica]].<ref name="25anv">{{cite web|url=https://blog.wolfram.com/2013/06/23/celebrating-mathematicas-first-quarter-century/|title=Celebrating Mathematica's First Quarter Century—Wolfram Blog|publisher=Blog.wolfram.com|access-date=2015-11-05}}</ref>
The '''Wolfram Language''' ({{IPAc-en|ˈ|w|ʊ|l|f|r|əm}} {{respell|WUUL|frəm}}) is a proprietary,<ref>{{Cite web |title=Wolfram Open Code, Open Source, Open Data, Open Resources |url=http://www.wolfram.com/open-materials/ |access-date=2023-02-03 |website=www.wolfram.com |language=en}}</ref> [[General-purpose programming langauge|general-purpose]], [[Very high-level programming language|very high-level]] [[multi-paradigm programming language]]<ref>{{cite web|url=https://www.wolfram.com/language/for-experts/|title=Notes for Programming Language Experts about Wolfram Language|publisher=Wolfram.com|access-date=2015-11-05}}</ref> developed by [[Wolfram Research]]. It emphasizes [[symbolic computation]], [[functional programming]], and [[rule-based programming]]<ref name="LangName">{{cite web|url=https://blog.stephenwolfram.com/2013/02/what-should-we-call-the-language-of-mathematica/|title=What Should We Call the Language of Mathematica?—Stephen Wolfram Blog|date=2013-02-12|publisher=Blog.stephenwolfram.com|access-date=2015-11-05}}</ref> and can employ arbitrary [[data structure|structures]] and data.<ref name="LangName"/> It is the programming language of the mathematical symbolic computation program [[Mathematica]].<ref name="25anv">{{cite web|url=https://blog.wolfram.com/2013/06/23/celebrating-mathematicas-first-quarter-century/|title=Celebrating Mathematica's First Quarter Century—Wolfram Blog|date=23 June 2013 |publisher=Blog.wolfram.com|access-date=2015-11-05}}</ref>


==History==
==History==
<!-- Genesis -->
<!-- Genesis -->
The Wolfram Language was a part of the initial version of Mathematica in 1988.<ref>Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.</ref>
The Wolfram Language was part of the initial version of Mathematica in 1988.<ref>Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.</ref>


Symbolic aspects of the engine make it a computer algebra system. The language can perform integration, differentiation, [[Matrix (mathematics)|matrix]] manipulations, and solve [[differential equation]]s using a set of rules. Also in 1988 was the notebook model and the ability to embed sound and images, according to [[Theodore Gray]]'s patent.<ref>{{Cite news|url=http://bit-player.org/wp-content/extras/bph-publications/Pixel-1990-01-Hayes-Mathematica.pdf|title=Thoughts on Mathematica|last=Hayes|first=Brian|date=1990-01-01|work=Pixel}}</ref>
Symbolic aspects of the engine make it a computer algebra system. The language can perform integration, differentiation, [[Matrix (mathematics)|matrix]] manipulations, and solve [[differential equation]]s 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.<ref>{{Cite news|url=http://bit-player.org/wp-content/extras/bph-publications/Pixel-1990-01-Hayes-Mathematica.pdf|title=Thoughts on Mathematica|last=Hayes|first=Brian|date=1990-01-01|work=Pixel}}</ref>


Wolfram also added features for more complex tasks, such as 3D modeling.<ref>{{cite web|url=https://reference.wolfram.com/language/|title=Wolfram Language & System Documentation Center|publisher=Reference.wolfram.com|access-date=2015-11-05}}</ref>
Wolfram also added features for more complex tasks, such as 3D modeling.<ref>{{cite web|url=https://reference.wolfram.com/language/|title=Wolfram Language & System Documentation Center|publisher=Reference.wolfram.com|access-date=2015-11-05}}</ref>


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.<ref>{{cite web|url=https://blog.wolfram.com/2013/11/21/putting-the-wolfram-language-and-mathematica-on-every-raspberry-pi/|title=Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog|publisher=Blog.wolfram.com|access-date=2015-11-05}}</ref> 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 [[Non-free software|proprietary]] nature.<ref>{{cite web|url=https://www.cnet.com/news/premium-mathematica-software-free-on-budget-raspberry-pi/|title=Premium Mathematica software free on budget Raspberry Pi - CNET|last=Sherr|first=Ian|date=2013-11-22|publisher=News.cnet.com|access-date=2015-11-05}}</ref> Plans to port the Wolfram language to the [[Intel Edison]] were announced after the board's introduction at [[CES 2014]] but was never released.<ref>{{cite web|url=https://www.heise.de/newsticker/meldung/Intels-Edison-Pentium-System-im-Format-einer-SD-Karte-2076917.html|title=Intels Edison: Pentium-System im Format einer SD-Karte &#124; heise online|author=Daniel AJ Sokolov|date=2014-11-22|publisher=Heise.de|access-date=2015-11-05}}</ref> In 2019, a link was added to make Wolfram libraries compatible with the [[Unity (game engine)|Unity]] game engine, giving game developers access to the language's high level functions.<ref>{{cite web|url=https://gamasutra.com/view/news/212709/The_Wolfram_Language_will_soon_be_integrated_into_Unity|title=The Wolfram Language will soon be integrated into Unity|date=2014-03-10|publisher=Gamasutra|access-date=2015-11-05}}</ref><ref>{{cite web|url=https://community.wolfram.com/groups/-/m/t/312155|title=Is there a way to use Wolfram Language in Unity3D?|year=2017|publisher=Wolfram|access-date=11 April 2017|archive-url=https://web.archive.org/web/20170719095116/https://community.wolfram.com/groups/-/m/t/312155|url-status=deviated|archive-date=19 July 2017}}</ref>
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.<ref>{{cite web|url=https://blog.wolfram.com/2013/11/21/putting-the-wolfram-language-and-mathematica-on-every-raspberry-pi/|title=Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog|date=21 November 2013 |publisher=Blog.wolfram.com|access-date=2015-11-05}}</ref> 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 [[Non-free software|proprietary]] nature.<ref>{{cite web|url=https://www.cnet.com/news/premium-mathematica-software-free-on-budget-raspberry-pi/|title=Premium Mathematica software free on budget Raspberry Pi - CNET|last=Sherr|first=Ian|date=2013-11-22|publisher=News.cnet.com|access-date=2015-11-05}}</ref> Plans to port the Wolfram language to the [[Intel Edison]] were announced after the board's introduction at [[CES 2014]] but were never released.<ref>{{cite web|url=https://www.heise.de/newsticker/meldung/Intels-Edison-Pentium-System-im-Format-einer-SD-Karte-2076917.html|title=Intels Edison: Pentium-System im Format einer SD-Karte &#124; heise online|author=Daniel AJ Sokolov|date=2014-11-22|publisher=Heise.de|access-date=2015-11-05}}</ref> In 2019, a link was added to make Wolfram libraries compatible with the [[Unity (game engine)|Unity]] game engine, giving game developers access to the language's high-level functions.<ref>{{cite web|url=https://gamasutra.com/view/news/212709/The_Wolfram_Language_will_soon_be_integrated_into_Unity|title=The Wolfram Language will soon be integrated into Unity|date=2014-03-10|publisher=Gamasutra|access-date=2015-11-05}}</ref><ref>{{cite web|url=https://community.wolfram.com/groups/-/m/t/312155|title=Is there a way to use Wolfram Language in Unity3D?|year=2017|publisher=Wolfram|access-date=11 April 2017|archive-url=https://web.archive.org/web/20170719095116/https://community.wolfram.com/groups/-/m/t/312155|url-status=deviated|archive-date=19 July 2017}}</ref>


== Syntax ==
== Syntax ==
Line 95: Line 98:
</syntaxhighlight>
</syntaxhighlight>


=== Syntax sugar ===
=== Syntactic sugar ===
The language may deviate from the M-expression paradigm when an alternative, more human-friendly way of showing an expression is available:
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 {{code|TeXForm}} for typeset expressions and {{code|InputForm}} for language input.
* A number of formatting rules are used in this language, including {{code|TeXForm}} for typeset expressions and {{code|InputForm}} for language input.
* Functions can also be applied using the prefix expression {{code|@}} and the postfix expression {{code|//}}.
* Functions can also be applied using the prefix expression {{code|@}} and the postfix expression {{code|//}}.
* Derivatives can be denoted with an apostrophe {{code|'}}.
* Derivatives can be denoted with the apostrophe {{code|'}}.
* The infix operators themselves are considered "sugar" for the [[function notation]] system.
* The infix operators themselves are considered "[[syntactic sugar|sugar]]" for the [[function notation]] system.


A {{code|FullForm}} formatter desugars the input:<ref>{{cite web |title=FullForm |url=https://reference.wolfram.com/language/ref/FullForm.html |website=Wolfram Language Documentation}}</ref>
A {{code|FullForm}} formatter desugars the input:<ref>{{cite web |title=FullForm |url=https://reference.wolfram.com/language/ref/FullForm.html |website=Wolfram Language Documentation}}</ref>
Line 148: Line 151:


== Implementations ==
== Implementations ==
The official, and reference, implementation of the Wolfram Language lies in Mathematica and associated online services. These are closed source.<ref>{{cite web |last1=McLoone |first1=J |title=Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog |url=https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt-open-source-a-dozen-reasons/ |language=en}}</ref> Wolfram Research has, however, released a [[C++]] parser of the language under the [[open source]] [[MIT License]].<ref>{{cite web |title=codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs) |url=https://github.com/WolframResearch/codeparser |website=GitHub |publisher=Wolfram Research, Inc. |date=13 April 2020}}</ref> The reference book is [[open access]].<ref>{{cite web |title=Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources |url=https://www.wolfram.com/open-materials/ |website=www.wolfram.com |language=en}}</ref>
The official and reference implementation of the Wolfram Language lies in Mathematica and associated online services. These are closed source.<ref>{{cite web |last1=McLoone |first1=J |title=Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog |date=2 April 2019 |url=https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt-open-source-a-dozen-reasons/ |language=en}}</ref> Wolfram Research has, however, released a parser of the language under the [[open source]] [[MIT License]].<ref>{{cite web |title=codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs) |url=https://github.com/WolframResearch/codeparser |website=GitHub |publisher=Wolfram Research, Inc.}}</ref> The parser was originally developed in [[C++]] but was rewritten in [[Rust (programming language)|Rust]] in 2023. The reference book is [[open access]].<ref>{{cite web |title=Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources |url=https://www.wolfram.com/open-materials/ |website=www.wolfram.com |language=en}}</ref>


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|2020|04|lc=yes}} include Symja in [[Java (programming language)|Java]], expreduce in [[Golang]], and the [[SymPy]]-based [[Mathics]].<ref>{{cite web |author1=Simon |title=Is there an open source implementation of Mathematica-the-language? |url=https://mathematica.stackexchange.com/a/4456 |website=Mathematica Stack Exchange}}</ref> These implementations focus on the core language and the [[computer algebra system]] that it implies, not on the online "knowledgebase" features of Wolfram.
In the over three-decade-long existence of the Wolfram language, a number of [[open source|open-source]] third-party implementations have also been developed. [[Richard Fateman|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|2020|04|lc=yes}} include Symja in [[Java (programming language)|Java]], expreduce in [[Golang]], and [[SymPy]]-based [[Mathics]].<ref>{{cite web |author1=Simon |title=Is there an open source implementation of Mathematica-the-language? |url=https://mathematica.stackexchange.com/a/4456 |website=Mathematica Stack Exchange}}</ref> 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,<ref>{{cite web |last1=Wolfram |first1=Steven |title=Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings |url=https://writings.stephenwolfram.com/2019/05/launching-today-free-wolfram-engine-for-developers/ |language=en}}</ref> Wolfram Research released a [[freeware]] Wolfram Engine, to be used as a programming library in non-commercial software.<ref>{{cite web |title=Free Wolfram Engine for Developers |url=https://www.wolfram.com/engine/ |website=www.wolfram.com |access-date=19 January 2021 |language=en}}</ref>
In 2019,<ref>{{cite web |last1=Wolfram |first1=Steven |title=Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings |date=21 May 2019 |url=https://writings.stephenwolfram.com/2019/05/launching-today-free-wolfram-engine-for-developers/ |language=en}}</ref> 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 [https://github.com/WolframResearch/WolframLanguageForJupyter Wolfram Kernel for Jupyter]. <ref>{{cite web |title=Free Wolfram Engine for Developers |url=https://www.wolfram.com/engine/ |website=www.wolfram.com |access-date=19 January 2021 |language=en}}</ref>


==Naming==
==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.<ref>{{Cite web |last=Kastrenakes |first=Jacob |date=2013-11-14 |title=Wolfram announces 'most important' project: a programming language that models the world |url=https://www.theverge.com/2013/11/14/5103446/wolfram-language-announced-intelligent-knowledge-based-programming |access-date=2023-09-21 |website=The Verge |language=en-US}}</ref><ref>{{Cite web |date=2013-11-13 |title=Something Very Big Is Coming: Our Most Important Technology Project Yet—Stephen Wolfram Writings |url=https://writings.stephenwolfram.com/2013/11/something-very-big-is-coming-our-most-important-technology-project-yet/ |access-date=2023-09-21 |website=writings.stephenwolfram.com |language=en}}</ref>
The language was officially named in June 2013 although, as the backend of the computing system [[Mathematica]], it has been in use in various forms for over 30 years since Mathematica's initial release.<ref name="25anv"/><ref>{{cite web|url=https://readwrite.com/2013/03/11/stephen-wolfram-has-an-algorithm-for-everything-literally/#awesm=~oekpXL21gq1fST|title=Stephen Wolfram Says He Has An Algorithm For Everything — Literally|publisher=Readwrite.com|access-date=2015-11-05}}</ref>


==See also==
==See also==
Line 165: Line 168:


==External links==
==External links==
*{{official}}
*[https://reference.wolfram.com/language/ Documentation for the Wolfram Language]
*[https://reference.wolfram.com/language/ Documentation for the Wolfram Language]
*[https://www.wolfram.com/language/elementary-introduction/2nd-ed/ An Elementary Introduction to the Wolfram Language]
*[https://www.wolfram.com/language/elementary-introduction/2nd-ed/ An Elementary Introduction to the Wolfram Language]
*[https://www.wolframcloud.com/ The Wolfram Programming Cloud]
*[https://wolframlanguage.org/ WolframLanguage.org]: a guide to community resources about Wolfram Language
*[https://codegolf.stackexchange.com/a/44683 Showcase of the "Mathematica language"], ''Code Golf StackExchange'' Community Wiki
*[https://www.worldscientific.com/worldscibooks/10.1142/12548 Mathematics, Physics & Chemistry with the Wolfram Language] ''(World Scientific, 2022)''


{{Wolfram Research}}
{{Wolfram Research}}

Latest revision as of 04:09, 26 October 2024

Wolfram Language
ParadigmMulti-paradigm: term-rewriting, functional, procedural, array
Designed byStephen Wolfram
DeveloperWolfram Research
First appeared1988; 36 years ago (1988)
Stable release
14.1.0[1] / July 31, 2024; 3 months ago (2024-07-31)
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] general-purpose, very 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. ^ "The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica". Stephen Wolfram Writings. 2024-07-31. Retrieved 2024-07-31.
  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]