Notes for Programming Language Experts
Origins
The Wolfram Language is first and foremost an evolution of the symbolic language developed for Mathematica over the course of more than three decades. 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.
Theoretical Foundations
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 three decades.
Millions of Users before It Even Existed
In its precursors in Mathematica, the Wolfram Language has had millions of users for three decades—including many of the world's top researchers, and countless students and others.
Transcending Hardware
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 three decades 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 three decades 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 Three Decades
The Wolfram Language has originated many new programming ideas—some of which have influenced languages developed over the past three decades, but many of which remain only in the Wolfram Language.
Buzzword Compliance
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)
Knowledge Based
(Our own buzzword) As one of its core principles, the Wolfram Language has extensive knowledge—about algorithms and about the world—built in.
Symbolic
In the Wolfram Language, everything (code, data, images, documents, interfaces, programs, etc.) is a symbolic expression.
Interactive
Wolfram Language code can be run interactively as a document-based REPL dialog between the user and the system.
Functional
With its symbolic character, the Wolfram Language supports an extended form of functional programming based on generalized transformations.
High Level
The Wolfram Language, with its knowledge-based character and principle of maximum automation, might just be the world's highest-level language.
Declarative
The Wolfram Language incorporates an extreme form of the declarative concept, with highly automated superfunctions for accomplishing specified high-level goals.
"Batteries Included"
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.
Homoiconic
With its symbolic character, code=data in a fundamental way in the Wolfram Language.
Pattern Oriented
Sophisticated pattern matching of symbolic expressions is a core feature of the Wolfram Language.
Metaprogrammable
With its symbolic character, the Wolfram Language can immediately manipulate code not just with macros, but with the full power of the language.
Concise
With all its built-in functionality—and carefully chosen primitives—programs in the Wolfram Language are typically very short relative to what they accomplish.
Expression Based
Everything in the Wolfram Language (data, code, etc.) is represented as a tree-structured symbolic expression that has a value.
Reflective
The symbolic character of the Wolfram Language allows it to have complete introspection.
Polymorphic
Specifying functions using pattern matching allows the Wolfram Language to immediately express deeply polymorphic behavior.
Dynamically Typed
In the Wolfram Language, everything is a symbolic expression, and every symbolic expression has a head that automatically defines its behavior.
Applicative
In the Wolfram Language, programs can be thought of as applying sequences of symbolic transformations to immutable symbolic expressions.
Concatenative
Because the Wolfram Language is symbolic, programs can immediately be built as concatenations of individually meaningful parts.
DRY Friendly
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.
DSL Enabling
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.)
Knowledge Representational
With its vast built-in knowledge and symbolic structure, the Wolfram Language is ideally suited to representing knowledge and making it computable.
Semantic
The Wolfram Language has a broad built-in representation of real-world entities and constructs.
Mathematical
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.
Symbolic-Numeric
The Wolfram Language has deep support for both symbolic and numerical computation, and many of its algorithms mix these approaches.
Query Capable
In the Wolfram Language, all data is represented by symbolic expressions that allow uniform querying using high-level functional constructs.
Object Oriented
The Wolfram Language supports a powerful symbolic alternative to traditional object-oriented programming.
Reactive
The Wolfram Language implements functional reactive programming to support building complex dynamic user interfaces declaratively.
Multiple Dispatch
The Wolfram Language’s symbolic pattern matching immediately allows dispatch on any argument of a function or any part of an expression.
Expressive
The careful design and vast built-in functionality of the Wolfram Language make it easy to express computational ideas clearly in the language.
Readable
A strong emphasis on well-chosen names and structures makes the Wolfram Language code highly readable.
Document Centered
In the Wolfram Language, code is not trapped in ASCII text, and instead can be given in rich notebooks.
Literate
In the Wolfram Language, runnable programs can be written as richly structured notebooks.
Scriptable
The Wolfram Language can be used to script external operations in a variety of environments and languages.
Natural Language
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.
JIT Compiled
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.
Parallelizable
The Wolfram Language has built-in parallel computation functionality, both for individual machines and for potentially heterogeneous networks.
Cloud Based
The Wolfram Language runs in the cloud and supports many forms of cloud-based computation, as well as running locally.
Client-Server Oriented
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.
Platform Independent
The Wolfram Language is the same on all standard computer platforms, local and in the cloud.
Hot Swappable
Since the Wolfram Language is interpreted, and its deployment is symbolic, code can be interrogated, debugged and modified at any stage in its execution.
FFI Enabled
The Wolfram Language has rich support for foreign function interfaces operating at a variety of levels.
Interoperable
Built into the Wolfram Language is the ability to interact with other languages and with data in hundreds of formats.
Safe
The Wolfram Language does not expose low-level constructs such as pointers and memory allocation, so large classes of bugs are avoided.
Persistent
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.
Monkey Patchable
In the Wolfram Language, there's a uniform mechanism for redefining the operation of almost anything.
Immutable
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."
Stable
The Wolfram Language is a compatible evolution of the language in Mathematica, which has maintained almost perfect backward compatibility for more than three decades.