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 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.

Theoretical Foundations

From its earliest stages, the Wolfram Language was conceived as a general language for computation—based on foundational ideas about symbolic systems.

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.

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.

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.

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.

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.

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.).

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.

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.

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.

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.

Interactive

Wolfram Language code can be run interactively as a document-based REPL dialog between the user and the system.

High Level

The Wolfram Language, with its knowledge-based character and principle of maximum automation, might just be the world's highest-level language.

"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.

Pattern Oriented

Sophisticated pattern matching of symbolic expressions is a core feature of the Wolfram 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.

Reflective

The symbolic character of the Wolfram Language allows it to have complete introspection.

Dynamically Typed

In the Wolfram Language, everything is a symbolic expression, and every symbolic expression has a head that automatically defines its behavior.

Concatenative

Because the Wolfram Language is symbolic, programs can immediately be built as concatenations of individually meaningful parts.

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.)

Semantic

The Wolfram Language has a broad built-in representation of real-world entities and constructs.

Capable of Arbitrary Precision

Throughout the Wolfram Language, numbers can have any precision or length.

Query Capable

In the Wolfram Language, all data is represented by symbolic expressions that allow uniform querying using high-level functional constructs.

Reactive

The Wolfram Language implements functional reactive programming to support building complex dynamic user interfaces declaratively.

Expressive

The careful design and vast built-in functionality of the Wolfram Language make it easy to express computational ideas clearly in the language.

Document Centered

In the Wolfram Language, code is not trapped in ASCII text, and instead can be given in rich CDF notebook documents.

Scriptable

The Wolfram Language can be used to script external operations in a variety of environments and languages.

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.

Cloud Based

The Wolfram Language runs in the cloud and supports many forms of cloud-based computation, as well as running locally.

Platform Independent

The Wolfram Language is the same on all standard computer platforms, local and in the cloud.

FFI Enabled

The Wolfram Language has rich support for foreign function interfaces operating at a variety of levels.

Safe

The Wolfram Language does not expose low-level constructs such as pointers and memory allocation, so large classes of bugs are avoided.

Monkey Patchable

In the Wolfram Language, there's a uniform mechanism for redefining the operation of almost anything.

Stable

The Wolfram Language is a compatible evolution of the language in Mathematica, which has maintained almost perfect backward compatibility for more than 25 years.

Symbolic

In the Wolfram Language, everything (code, data, images, documents, interfaces, programs, etc.) is a symbolic expression.

Functional

With its symbolic character, the Wolfram Language supports an extended form of functional programming based on generalized transformations.

Declarative

The Wolfram Language incorporates an extreme form of the declarative concept, with highly automated superfunctions for accomplishing specified high-level goals.

Homoiconic

With its symbolic character, code=data in a fundamental way in 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.

Expression Based

Everything in the Wolfram Language (data, code, etc.) is represented as a tree-structured symbolic expression that has a value.

Polymorphic

Specifying functions using pattern matching allows the Wolfram Language to immediately express deeply polymorphic behavior.

Applicative

In the Wolfram Language, programs can be thought of as applying sequences of symbolic transformations to immutable symbolic expressions.

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.

Knowledge Representational

With its vast built-in knowledge and symbolic structure, the Wolfram Language is ideally suited to representing knowledge and making it computable.

Mathematical

The Wolfram Language has by far the world's broadest and deepest built-in coverage of mathematical computation.

Symbolic-Numeric

The Wolfram Language has deep support for both symbolic and numerical computation, and many of its algorithms mix these approaches.

Object Oriented

The Wolfram Language supports a powerful symbolic alternative to traditional object-oriented programming.

Multiple Dispatch

The Wolfram Languageā€™s symbolic pattern matching immediately allows dispatch on any argument of a function or any part of an expression.

Readable

A strong emphasis on well-chosen names and structures makes the Wolfram Language code highly readable.

Literate

In the Wolfram Language, runnable programs can be written as richly structured CDF documents.

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.

Parallelizable

The Wolfram Language has built-in parallel computation functionality, both for individual machines and for potentially heterogeneous networks.

Client-Server Oriented

The Wolfram Language interactive interface is set up to communicate via the WolframLink symbolic protocol with one or more computational kernels.

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.

Interoperable

Built into the Wolfram Language is the ability to interact with other languages and with data in hundreds of formats.

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.

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."