Wolfram Language: Difference between revisions
There is no evidence that Wolfram|One should be considered an implementation independent from Mathematica |
→External links: Remove some cats failing WP:CATVER. This page is overcatted out the wazoo |
||
Line 182: | Line 182: | ||
[[Category:Concatenative programming languages]] |
[[Category:Concatenative programming languages]] |
||
[[Category:Cross-platform software]] |
[[Category:Cross-platform software]] |
||
[[Category:Data mining and machine learning software]] |
|||
[[Category:Data visualization software]] |
|||
[[Category:Data-centric programming languages]] |
[[Category:Data-centric programming languages]] |
||
[[Category:Declarative programming languages]] |
[[Category:Declarative programming languages]] |
||
Line 199: | Line 197: | ||
[[Category:Literate programming]] |
[[Category:Literate programming]] |
||
[[Category:Multi-paradigm programming languages]] |
[[Category:Multi-paradigm programming languages]] |
||
[[Category:Neural network software]] |
|||
[[Category:Numerical linear algebra]] |
[[Category:Numerical linear algebra]] |
||
[[Category:Numerical programming languages]] |
[[Category:Numerical programming languages]] |
Revision as of 20:19, 8 September 2022
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) |
Paradigm | Multi-paradigm: term-rewriting, functional, procedural, array |
---|---|
Designed by | Stephen Wolfram |
Developer | Wolfram Research |
First appeared | 1988 |
Stable release | 13.1.0[1]
/ June 29, 2022 |
Typing discipline | Dynamic, strong |
OS | Cross-platform |
License | Proprietary |
Filename extensions | .nb, .m, .wl |
Website | www |
Major implementations | |
Mathematica, Mathics, Expreduce, MockMMA | |
Influenced by | |
Influenced | |
The Wolfram Language (/ˈwʊlfrəm/ WUUL-frəm) is a general multi-paradigm programming language[7] developed by Wolfram Research. It emphasizes symbolic computation, functional programming, and rule-based programming[8] and can employ arbitrary structures and data.[8] It is the programming language of the mathematical symbolic computation program Mathematica.[9]
History
The Wolfram Language was a part of the initial version of Mathematica in 1988.[10]
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 in 1988 was the notebook model and the ability to embed sound and images, according to Theodore Gray's patent.[11]
Wolfram also added features for more complex tasks, such as 3D modeling.[12]
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.[13] 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.[14] Plans to port the Wolfram language to the Intel Edison were announced after the board's introduction at CES 2014 but was never released.[15] 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.[16][17]
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} *)
Syntax 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 andInputForm
for language input. - Functions can also be applied using the prefix expression
@
and the postfix expression//
. - Derivatives can be denoted with an apostrophe
'
. - The infix operators themselves are considered "sugar" for the function notation system.
A FullForm
formatter desugars the input:[18]
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:[19]
(* 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.[20] Wolfram Research has, however, released a C++ parser of the language under the open source MIT License.[21] The reference book is open access.[22]
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.[23] 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,[24] Wolfram Research released a freeware Wolfram Engine, to be used as a programming library in non-commercial software.[25]
Naming
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.[9][26]
See also
References
- ^ "Revision History".
- ^ Wolfram, Stephen. "Tini Veltman (1931–2021): From Assembly Language to a Nobel Prize—Stephen Wolfram Writings". stephenwolfram.comwritings. Retrieved 22 January 2021.
- ^ Maeder, Roman E. (1994). The Mathematica® Programmer. Academic Press, Inc. p. 6. ISBN 978-1-48321-415-3.
- ^ "Wolfram Language Q&A". Wolfram Research. Retrieved 2016-12-05.
- ^ Somers, James. "The Scientific Paper Is Obsolete". The Atlantic. Retrieved 2018-04-10.
- ^ Hickey, Rich. "Clojure Bookshelf". Amazon.com. Archived from the original on 2017-10-03. Retrieved 2020-05-06.
- ^ "Notes for Programming Language Experts about Wolfram Language". Wolfram.com. Retrieved 2015-11-05.
- ^ a b "What Should We Call the Language of Mathematica?—Stephen Wolfram Blog". Blog.stephenwolfram.com. 2013-02-12. Retrieved 2015-11-05.
- ^ a b "Celebrating Mathematica's First Quarter Century—Wolfram Blog". Blog.wolfram.com. Retrieved 2015-11-05.
- ^ Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.
- ^ Hayes, Brian (1990-01-01). "Thoughts on Mathematica" (PDF). Pixel.
- ^ "Wolfram Language & System Documentation Center". Reference.wolfram.com. Retrieved 2015-11-05.
- ^ "Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog". Blog.wolfram.com. Retrieved 2015-11-05.
- ^ Sherr, Ian (2013-11-22). "Premium Mathematica software free on budget Raspberry Pi - CNET". News.cnet.com. Retrieved 2015-11-05.
- ^ Daniel AJ Sokolov (2014-11-22). "Intels Edison: Pentium-System im Format einer SD-Karte | heise online". Heise.de. Retrieved 2015-11-05.
- ^ "The Wolfram Language will soon be integrated into Unity". Gamasutra. 2014-03-10. Retrieved 2015-11-05.
- ^ "Is there a way to use Wolfram Language in Unity3D?". Wolfram. 2017. Archived from the original on 19 July 2017. Retrieved 11 April 2017.
- ^ "FullForm". Wolfram Language Documentation.
- ^ "Welcome to Rubi, the Rule-based Integrator". Rule-based Integration.
- ^ McLoone, J. "Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog".
- ^ "codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)". GitHub. Wolfram Research, Inc. 13 April 2020.
- ^ "Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources". www.wolfram.com.
- ^ Simon. "Is there an open source implementation of Mathematica-the-language?". Mathematica Stack Exchange.
- ^ Wolfram, Steven. "Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings".
- ^ "Free Wolfram Engine for Developers". www.wolfram.com. Retrieved 19 January 2021.
- ^ "Stephen Wolfram Says He Has An Algorithm For Everything — Literally". Readwrite.com. Retrieved 2015-11-05.
External links
- Documentation for the Wolfram Language
- An Elementary Introduction to the Wolfram Language
- The Wolfram Programming Cloud
- WolframLanguage.org: a guide to community resources about Wolfram Language
- Showcase of the "Mathematica language", Code Golf StackExchange Community Wiki
- Mathematics, Physics & Chemistry with the Wolfram Language (World Scientific, 2022)
- Array programming languages
- Audio programming languages
- Notebook interface
- Computer algebra systems
- Computer vision software
- Concatenative programming languages
- Cross-platform software
- Data-centric programming languages
- Declarative programming languages
- Dynamically typed programming languages
- Educational programming languages
- Finite element software
- Formula editors
- Formula manipulation languages
- Functional languages
- Functional programming
- High-level programming languages
- Homoiconic programming languages
- Image processing software
- Linear algebra
- Literate programming
- Multi-paradigm programming languages
- Numerical linear algebra
- Numerical programming languages
- Object-oriented programming languages
- Ontology languages
- Parallel computing
- Pattern matching programming languages
- Programming languages created in 1988
- Simulation programming languages
- Social network analysis software
- Software modeling language
- SQL data access
- Statistical programming languages
- Technical analysis software
- Term-rewriting programming languages
- Theorem proving software systems
- Wolfram Research