Wolfram (previously known as Mathematica and Wolfram Mathematica) is a software system with built-in libraries for several areas of technical computing that allows
machine learning
Machine learning (ML) is a field of study in artificial intelligence concerned with the development and study of Computational statistics, statistical algorithms that can learn from data and generalise to unseen data, and thus perform Task ( ...
,
statistics
Statistics (from German language, German: ', "description of a State (polity), state, a country") is the discipline that concerns the collection, organization, analysis, interpretation, and presentation of data. In applying statistics to a s ...
,
symbolic computation
In mathematics and computer science, computer algebra, also called symbolic computation or algebraic computation, is a scientific area that refers to the study and development of algorithms and software for manipulating mathematical expressions ...
, data manipulation, network analysis, time series analysis,
NLP,
optimization
Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criteria, from some set of available alternatives. It is generally divided into two subfiel ...
, plotting
functions and various types of data, implementation of
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
s, creation of
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s, and interfacing with programs written in other
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s. It was conceived by
Stephen Wolfram
Stephen Wolfram ( ; born 29 August 1959) is a British-American computer scientist, physicist, and businessman. He is known for his work in computer algebra and theoretical physics. In 2012, he was named a fellow of the American Mathematical So ...
, and is developed by
Wolfram Research
Wolfram Research, Inc. ( ) is an American Multinational corporation, multinational company that creates computational technology. Wolfram's flagship product is the technical computing program Wolfram Mathematica, first released on June 23, 1988. ...
of Champaign, Illinois. The
Wolfram Language is the programming language used in ''Mathematica''. Mathematica 1.0 was released on June 23, 1988 in
Champaign, Illinois
Champaign ( ) is a city in Champaign County, Illinois, United States. The population was 88,302 at the 2020 census. It is the List of municipalities in Illinois, tenth-most populous municipality in Illinois and the fourth most populous city in ...
and
Santa Clara, California
Santa Clara ( ; Spanish language, Spanish for "Clare of Assisi, Saint Clare") is a city in Santa Clara County, California. The city's population was 127,647 at the 2020 United States census, 2020 census, making it the List of cities and towns i ...
.
Mathematica's Wolfram Language is fundamentally based on Lisp; for example, the Mathematica command Most is identically equal to the Lisp command butlast. There is a substantial literature on the development of computer algebra systems (CAS).
__TOC__
Notebook interface
Mathematica is split into two parts: the kernel and the
front end. The kernel interprets expressions (Wolfram Language code) and returns result expressions, which can then be displayed by the front end.
The original front end, designed by
Theodore Gray in 1988, consists of a
notebook interface and allows the creation and editing of
notebook documents that can contain code, plaintext, images, and graphics.
Code development is also supported through support in a range of standard
integrated development environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE) including
Eclipse
An eclipse is an astronomical event which occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ...
,
IntelliJ IDEA, Atom,
Vim,
Visual Studio Code
Visual Studio Code, commonly referred to as VS Code, is an integrated development environment developed by Microsoft for Windows, Linux, macOS and web browsers. Features include support for debugging, syntax highlighting, intelligent code comp ...
and
Git. The Mathematica Kernel also includes a command line front end.
Other interfaces include JMath, based on
GNU Readline
GNU Readline is a software library that provides in-line editing and history capabilities for interactive programs with a command-line interface, such as GNU bash, Bash. It is currently maintained by Chet Ramey as part of the GNU Project.
It allo ...
and WolframScript which runs self-contained Mathematica programs (with arguments) from the UNIX command line.
High-performance computing
Capabilities for
high-performance computing
High-performance computing (HPC) is the use of supercomputers and computer clusters to solve advanced computation problems.
Overview
HPC integrates systems administration (including network and security knowledge) and parallel programming into ...
were extended with the introduction of
packed arrays in version 4 (1999) and
sparse matrices (version 5, 2003), and by adopting the
GNU Multiple Precision Arithmetic Library
GNU Multiple Precision Arithmetic Library (GMP) is a free software, free library for arbitrary-precision arithmetic, operating on Sign (mathematics), signed integers, Rational data type, rational numbers, and Floating-point arithmetic, floating-p ...
to evaluate high-precision arithmetic.
Version 5.2 (2005) added automatic
multi-threading when computations are performed on
multi-core
A multi-core processor (MCP) is a microprocessor on a single integrated circuit (IC) with two or more separate central processing units (CPUs), called ''cores'' to emphasize their multiplicity (for example, ''dual-core'' or ''quad-core''). Ea ...
computers. This release included CPU-specific optimized libraries. In addition Mathematica is supported by third party specialist acceleration hardware such as
ClearSpeed.
In 2002,
gridMathematica was introduced to allow user level
parallel programming
Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
on heterogeneous clusters and multiprocessor systems and in 2008 parallel computing technology was included in all Mathematica licenses including support for grid technology such as
Windows HPC Server 2008,
Microsoft Compute Cluster Server and
Sun Grid.
Support for
CUDA
In computing, CUDA (Compute Unified Device Architecture) is a proprietary parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated gene ...
and
OpenCL
OpenCL (Open Computing Language) is a software framework, framework for writing programs that execute across heterogeneous computing, heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), di ...
GPU hardware was added in 2010.
Extensions
As of Version 14, there are 6,602 built-in functions and symbols in the Wolfram Language. Stephen Wolfram announced the launch of the Wolfram Function Repository in June 2019 as a way for the public Wolfram community to contribute functionality to the Wolfram Language. At the time of Stephen Wolfram's release announcement for Mathematica 13, there were 2,259 functions contributed as Resource Functions. In addition to the Wolfram Function Repository, there is a Wolfram Data Repository with computable data and the Wolfram Neural Net Repository for machine learning.
Wolfram Mathematica is the basis of the Combinatorica package, which adds discrete mathematics functionality in combinatorics and graph theory to the program.
Connections to other applications, programming languages, and services
Communication with other applications can be done using a protocol called Wolfram Symbolic Transfer Protocol (WSTP). It allows communication between the Wolfram Mathematica kernel and the front end and provides a general interface between the kernel and other applications.
Wolfram Research freely distributes a developer kit for linking applications written in the programming language
C to the Mathematica kernel through WSTP using J/Link.,
[Mathematica 4.2](_blank)
by Charles Seiter, ''Macworld'', November 1, 2002. a
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
program that can ask Mathematica to perform computations. Similar functionality is achieved with .NET /Link, but with
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
programs instead of Java programs.
Other languages that connect to Mathematica include
Haskell
Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
,
AppleScript,
Racket,
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic (.NET), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic (classic), the original Visual Basic suppo ...
,
Python, and
Clojure
Clojure (, like ''closure'') is a dynamic programming language, dynamic and functional programming, functional dialect (computing), dialect of the programming language Lisp (programming language), Lisp on the Java (software platform), Java platfo ...
.
Mathematica supports the generation and execution of
Modelica models for
systems modeling
A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and is exp ...
and connects with
Wolfram System Modeler.
Links are also available to many third-party software packages and APIs.
Mathematica can also capture real-time data from a variety of sources and can read and write to public blockchains (
Bitcoin
Bitcoin (abbreviation: BTC; Currency symbol, sign: ₿) is the first Decentralized application, decentralized cryptocurrency. Based on a free-market ideology, bitcoin was invented in 2008 when an unknown entity published a white paper under ...
,
Ethereum, and ARK).
It supports import and export of over 220 data, image, video, sound,
computer-aided design
Computer-aided design (CAD) is the use of computers (or ) to aid in the creation, modification, analysis, or optimization of a design. This software is used to increase the productivity of the designer, improve the quality of design, improve c ...
(CAD),
geographic information system
A geographic information system (GIS) consists of integrated computer hardware and Geographic information system software, software that store, manage, Spatial analysis, analyze, edit, output, and Cartographic design, visualize Geographic data ...
s (GIS), document, and biomedical formats.
In 2019, support was added for compiling Wolfram Language code to
LLVM
LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a Compiler#Front end, frontend for any programming language and a Compiler#Back end, backend for any instruction set architecture. LLVM i ...
.
Version 12.3 of the Wolfram Language added support for
Arduino
Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
.
Computable data
Mathematica is also integrated with
Wolfram Alpha
WolframAlpha ( ) is an answer engine developed by Wolfram Research. It is offered as an online service that answers factual queries by computing answers from externally sourced data.
History
Launch preparations for WolframAlpha began on Ma ...
, an online
answer engine that provides additional data, some of which is kept updated in real time, for users who use Mathematica with an internet connection. Some of the data sets include astronomical, chemical, geopolitical, language, biomedical, airplane, and weather data, in addition to mathematical data (such as knots and polyhedra).
Reception
''
BYTE
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
'' in 1989 listed Mathematica as among the "Distinction" winners of the BYTE Awards, stating that it "is another breakthrough Macintosh application ... it could enable you to absorb the algebra and calculus that seemed impossible to comprehend from a textbook".
Mathematica has been criticized for being closed source. Wolfram Research claims keeping Mathematica closed source is central to its business model and the continuity of the software.
See also
*
Comparison of multi-paradigm programming languages
Programming languages can be grouped by the number and types of paradigms supported.
Paradigm summaries
A concise reference for the programming paradigms listed in this article.
* Concurrent programming – have language constructs for concurre ...
*
Comparison of numerical-analysis software
*
Comparison of programming languages
*
Comparison of regular expression engines
*
Dynamic programming language
A dynamic programming language is a type of programming language that allows various operations to be determined and executed at runtime. This is different from the compilation phase. Key decisions about variables, method calls, or data types are ...
*
Fourth-generation programming language
A fourth-generation programming language (4GL) is a high-level programming language, high-level computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each ...
*
Functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declarat ...
*
List of computer algebra systems
*
List of computer simulation software
*
List of information graphics software
*
Literate programming
*
Mathematical markup language
*
Mathematical software
Mathematical software is software used to mathematical model, model, analyze or calculate numeric, symbolic or geometric data.
Evolution of mathematical software
Numerical analysis and symbolic computation had been in most important place of the ...
*
WolframAlpha, a web answer engine
*
Wolfram Language
*
Wolfram SystemModeler, a physical modeling and simulation tool which integrates with Mathematica
*
SageMath
References
External links
*
Mathematica Documentation Centerdocumenting the growth of code base and number of functions over time
{{authority control
1988 software
Astronomical databases
Notebook interface
Computer algebra system software for Linux
Computer algebra system software for macOS
Computer algebra system software for Windows
Computer algebra systems
Cross-platform software
Data mining and machine learning software
Earth sciences graphics software
Econometrics software
Formula editors
Interactive geometry software
Mathematical optimization software
Mathematical software
Numerical analysis software for Linux
Numerical analysis software for macOS
Numerical analysis software for Windows
Numerical programming languages
Numerical software
Physics software
Plotting software
Proprietary commercial software for Linux
Proprietary cross-platform software
Proprietary software that uses Qt
Regression and curve fitting software
Simulation programming languages
Software that uses Qt
Statistical programming languages
Theorem proving software systems
Time series software
Wolfram Research
Graph drawing software