Notes for Programming Language Experts
The Wolfram Language is first and foremost an evolution of the symbolic language developed for Mathematica over the course of more than 25 years. But it's considerably more than that—adding the knowledge, knowledge representation and natural language abilities of Wolfram|Alpha, as well as a new symbolic deployment mechanism created with the Wolfram Cloud.
From its earliest stages, the Wolfram Language was conceived as a general language for computation—based on foundational ideas about symbolic systems.
First Killer App: Math
The concepts of the Wolfram Language were first applied to the highly demanding area of mathematical computation in Mathematica—with outstanding success over the course of more than 25 years.
Millions of Users before It Even Existed
In its precursors in Mathematica, the Wolfram Language has had millions of users for 25+ years—including many of the world's top researchers, and countless students and others.
From its earliest origins, the Wolfram Language was built to follow principles, without compromising for the hardware limitations of the day (everything symbolic, infinite precision, etc.).
The Concept of Programming in Notebooks
Pioneered in Mathematica more than 25 years ago, the Wolfram Language lets you program in interactive notebook documents that combine running code with output and publishing-quality typesetting.
Learning the Significance of Symbolic Programming
Data structures, code fragments, graphics, documents, interfaces... Over the 25 years it was being incubated, the Wolfram Language discovered more and more ways to apply symbolic programming.
Wolfram|Alpha: Bringing in the Real World
Wolfram|Alpha made vast real-world knowledge computable—so it could be integrated into the Wolfram Language to make the language talk not just about formal constructs, but also about the real world.
Billions of Lines of Code
Billions of lines of what's now Wolfram Language code are inside software systems around the world—with tens of millions inside Wolfram|Alpha and the Wolfram Language itself.
A Language for the Ages
The Wolfram Language is clean enough to have been able to maintain compatibility all the way back to its earliest origins in Mathematica 1.0 from 1988.
Ahead of Its Time for 25+ Years
The Wolfram Language has originated many new programming ideas—some of which have influenced languages developed over the past 25 years, but many of which remain only in the Wolfram Language.
The Wolfram Language is both old and new: with a long history, but full of new ideas. It has many attributes that map well onto common modern programming language buzzwords—as well as many attributes that are not familiar from other languages.
The Wolfram Language Is...
(among other things)
(Our own buzzword) As one of its core principles, the Wolfram Language has extensive knowledge—about algorithms and about the world—built in.
In the Wolfram Language, everything (code, data, images, documents, interfaces, programs, etc.) is a symbolic expression.
Wolfram Language code can be run interactively as a document-based REPL dialog between the user and the system.
With its symbolic character, the Wolfram Language supports an extended form of functional programming based on generalized transformations.
The Wolfram Language, with its knowledge-based character and principle of maximum automation, might just be the world's highest-level language.
The Wolfram Language incorporates an extreme form of the declarative concept, with highly automated superfunctions for accomplishing specified high-level goals.
It's more like "power plant included": the Wolfram Language has a vast coherent array of built-in algorithms and knowledge, all set up to be immediately interoperable.
With its symbolic character, code=data in a fundamental way in the Wolfram Language.
Sophisticated pattern matching of symbolic expressions is a core feature of the Wolfram Language.
With its symbolic character, the Wolfram Language can immediately manipulate code not just with macros, but with the full power of the language.
With all its built-in functionality—and carefully chosen primitives—programs in the Wolfram Language are typically very short relative to what they accomplish.
Everything in the Wolfram Language (data, code, etc.) is represented as a tree-structured symbolic expression that has a value.
The symbolic character of the Wolfram Language allows it to have complete introspection.
Specifying functions using pattern matching allows the Wolfram Language to immediately express deeply polymorphic behavior.
In the Wolfram Language, everything is a symbolic expression, and every symbolic expression has a head that automatically defines its behavior.
In the Wolfram Language, programs can be thought of as applying sequences of symbolic transformations to immutable symbolic expressions.
Because the Wolfram Language is symbolic, programs can immediately be built as concatenations of individually meaningful parts.
The freedom with which code can be factored in the functional symbolic paradigm of the Wolfram Language makes it easy to program in a "don't repeat yourself" way.
The symbolic character of the Wolfram Language makes it easy to create domain-specific languages within the language—and many are already built in (regex, graphics, interfaces, deployment, etc.)
With its vast built-in knowledge and symbolic structure, the Wolfram Language is ideally suited to representing knowledge and making it computable.
The Wolfram Language has a broad built-in representation of real-world entities and constructs.
The Wolfram Language has by far the world's broadest and deepest built-in coverage of mathematical computation.
Capable of Arbitrary Precision
Throughout the Wolfram Language, numbers can have any precision or length.
The Wolfram Language has deep support for both symbolic and numerical computation, and many of its algorithms mix these approaches.
In the Wolfram Language, all data is represented by symbolic expressions that allow uniform querying using high-level functional constructs.
The Wolfram Language supports a powerful symbolic alternative to traditional object-oriented programming.
The Wolfram Language implements functional reactive programming to support building complex dynamic user interfaces declaratively.
The Wolfram Language’s symbolic pattern matching immediately allows dispatch on any argument of a function or any part of an expression.
The careful design and vast built-in functionality of the Wolfram Language make it easy to express computational ideas clearly in the language.
A strong emphasis on well-chosen names and structures makes the Wolfram Language code highly readable.
In the Wolfram Language, code is not trapped in ASCII text, and instead can be given in rich CDF notebook documents.
In the Wolfram Language, runnable programs can be written as richly structured CDF documents.
The Wolfram Language can be used to script external operations in a variety of environments and languages.
Building on the same technology as Wolfram|Alpha, the Wolfram Language allows natural-language input, both as a part of programs and in their functionality.
The Wolfram Language often seamlessly uses just-in-time compilation to its own virtual machines to optimize performance and give the best of both interpreted and compiled operation.
The Wolfram Language has built-in parallel computation functionality, both for individual machines and for potentially heterogeneous networks.
The Wolfram Language runs in the cloud and supports many forms of cloud-based computation, as well as running locally.
The Wolfram Language interactive interface is set up to communicate via the WSTP (Wolfram Symbolic Transfer Protocol) symbolic protocol with one or more computational kernels.
The Wolfram Language is the same on all standard computer platforms, local and in the cloud.
Since the Wolfram Language is interpreted, and its deployment is symbolic, code can be interrogated, debugged and modified at any stage in its execution.
The Wolfram Language has rich support for foreign function interfaces operating at a variety of levels.
Built into the Wolfram Language is the ability to interact with other languages and with data in hundreds of formats.
The Wolfram Language does not expose low-level constructs such as pointers and memory allocation, so large classes of bugs are avoided.
Since anything in the Wolfram Language (code, data, graphics, interfaces, etc.) is represented as a symbolic expression, it can immediately be serialized for persistent storage.
In the Wolfram Language, there's a uniform mechanism for redefining the operation of almost anything.
In the Wolfram Language, everything is a symbolic expression that represents its own value—with only specific functions having side effects of modifying expressions "in place."
The Wolfram Language is a compatible evolution of the language in Mathematica, which has maintained almost perfect backward compatibility for more than 25 years.