Wolfram Computation Meets Knowledge

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.