WOLFRAM

Anmerkungen für Programmiersprachexperten

Anfänge

Die Wolfram Language ist in erster Linie eine Weiterentwicklung der symbolischen Sprache, die im Laufe von über 30 Jahren für Mathematica entwickelt wurde. Sie ist jedoch wesentlich mehr als das – dazu kommen das Wissen, die Darstellung von Wissen und die Fähigkeiten zur Verarbeitung natürlicher Sprache von Wolfram|Alpha, sowie ein neuer symbolischer Deployment-Mechanismus mit der Wolfram Cloud.

Theoretische Grundlagen

Seit ihren Anfängen wurde die Wolfram Language als eine allgemeine Sprache für Berechnungen angelegt – basierend auf grundlegenden Konzepten symbolischer Systeme.

Die erste Killer-App: Mathematik

Die Konzepte der Wolfram Language wurden zuerst im höchst anspruchsvollen Bereich der mathematischen Berechnung in Mathematica eingesetzt – mit überragendem Erfolg im Laufe von mehr als 30 Jahren.

Millionen Nutzer, bevor sie überhaupt existierte

In ihren Vorläufern in Mathematica hatte die Wolfram Language bereits Millionen von Nutzern über einen Zeitraum von mehr als 30 Jahren – darunter viele der Top-Forscher der Welt, zahllose Studenten und andere Nutzer.

Kompromisslos gegenüber Hardware

Seit Anbeginn folgt die Wolfram Language bewusst bestimmten Prinzipien, ohne Rücksicht auf die jeweils herrschenden Hardware-Einschränkungen (alles Symbolische, unendliche Präzision etc.).

Das Konzept des Programmierens in Notebooks

Vor über 30 Jahren wurde in Mathematica der Weg zum Programmieren in interaktiven Notebook-Dokumenten geebnet, die ausführbaren Code mit Ausgabe und druckreifem Schriftsatz verbinden.

Die Bedeutung des symbolischen Programmierens erfassen

Datenstrukturen, Codefragmente, Graphiken, Dokumente, Benutzeroberflächen... In den 30 Jahren ihrer Entwicklung hat die Wolfram Language immer mehr Einsatzgebiete des symbolischen Programmierens erschlossen.

Wolfram|Alpha: Integration mit der realen Welt

Wolfram|Alpha hat umfassendes Wissen berechenbar und dadurch in die Wolfram Language integrierbar gemacht. So liefert die Sprache nicht nur Informationen über formale Konstrukte, sondern auch über die echte Welt.

Milliarden Codezeilen

Milliarden des jetzigen Wolfram Language-Codes stecken in Software-Systemen rund um die ganze Welt – davon mehrere Millionen allein in Wolfram|Alpha und in der Wolfram Language selbst.

Eine zeitlose Sprache

Wolfram Language-Code ist so sauber, dass er seit dem Ursprung der Sprache in Mathematica 1.0 im Jahr 1988 über die Jahre kompatibel geblieben ist.

Der Zeit voraus seit mehr als 30 Jahren

Die Wolfram Language hat viele neue Programmierideen inspiriert – manche davon hatten Einfluss auf Sprachen, die in den letzen 30 Jahren entwickelt wurden, viele wurden jedoch nur in der Wolfram Language umgesetzt.

Buzzword-tauglich

Die Wolfram Language ist alt und neu zugleich: Mit einer langen Geschichte, aber voller neuer Ideen. Sie besitzt viele Attribute, die die geläufigen Buzzwords moderner Programmiersprachen aufgreifen – genauso wie viele Attribute, die man von anderen Programmiersprachen noch nicht kennt.

Die Wolfram Language ist...

(unter anderem)

wissensbasiert

(Unser eigenes Buzzword) Als eines ihrer Kernprinzipien besitzt die Wolfram Language umfassendes eingebautes Wissen – über Algorithmen und über die Welt.

symbolisch

In der Wolfram Language ist alles (Code, Daten, Bilder, Dokumente, Benutzeroberflächen, Programme etc.) ein symbolischer Ausdruck.

interaktiv

Wolfram Language-Code kann interaktiv als dokumentenbasierter REPL-Dialog zwischen dem Nutzer und dem System ausgeführt werden.

funktional

Aufgrund ihres symbolischen Charakters unterstützt die Wolfram Language eine erweiterte Form des funktionalen Programmierens, basierend auf verallgemeinerten Transformationen.

High Level

Aufgrund ihres wissensbasierten Charakters und des Prinzips der maximalen Automatisierung ist die Wolfram Language die wohl „höchste“ Programmiersprache der Welt.

deklarativ

Die Wolfram Language verkörpert eine Extremform des deklarativen Programmierparadigmas, mit hochautomatisierten Superfunktionen zum Erreichen klar definierter hochgesteckter Ziele.

„Batterien inklusive“

Oder eigentlich, „Kraftwerk inklusive“: Die Wolfram Language wartet mit einem umfangreichen kohärenten Spektrum eingebauter Algorithmen und eingebauten Wissens auf, alles konzipiert zur reibungslosen Interoperabilität.

homoikonisch

Aufgrund ihres symbolischen Charakters ist die Gleichung Code=Daten ein Grundprinzip der Wolfram Language.

musterorientiert

Das ausgefeilte Pattern Matching symbolischer Ausdrücke ist eine Kerneigenschaft der Wolfram Language.

metaprogrammierbar

Aufgrund ihres symbolischen Charakters manipuliert die Wolfram Language Code im Handumdrehen nicht nur mit Makros, sondern mit der gesamten Leistungskraft der Sprache.

kurz und bündig

Dank all ihrer eingebauten Funktionalität – und sorgfältig ausgewählten Primitiven – sind Programme in der Wolfram Language normalerweise sehr kurz im Verhältnis zu ihrer Effizienz und Leistung.

ausdrucksbasiert

Alles (Daten, Code etc.) wird in der Wolfram Language als baumförmiger symbolischer Ausdruck mit Wert dargestellt.

reflexiv

Der symbolische Charakter der Wolfram Language ermöglicht vollständige Introspektion.

polymorph

Die Spezifizierung von Funktionen mittels Pattern Matching erlaubt es der Wolfram Language, im Handumdrehen zutiefst polymorphes Verhalten auszudrücken.

dynamisch typisierbar

In der Wolfram Language ist alles ein symbolischer Ausdruck, und jeder symbolische Ausdruck hat einen Kopf, der automatisch dessen Verhalten definiert.

applikativ

In der Wolfram Language können Programme als die Anwendung von Sequenzen symbolischer Transformationen auf unveränderliche symbolische Ausdrücke betrachtet werden.

konkatenativ

Da die Wolfram Language symbolisch ist, können Programme als Konkatenationen individuell ausführbarer Codeteile geschrieben werden.

DRY-freundlich

Dank der Freiheit, mit der Code in das funktionale symbolische Paradigma der Wolfram Language eingegliedert wird, ist es ein Leichtes, Programme ohne Redundanzen zu schreiben.

kombinierbar mit DSLs

Aufgrund des symbolischen Charakters der Wolfram Language ist es ein Leichtes, domänenspezifische Sprachen innerhalb der Sprache zu entwerfen – und viele sind bereits eingebaut (Regex, Graphiken, Benutzeroberflächen, Deployment etc.)

Wissen darstellend

Aufgrund ihres umfassenden eingebauten Wissens und der symbolischen Struktur eignet sich die Wolfram Language ideal dafür, Wissen darzustellen und berechenbar zu machen.

semantisch

Die Wolfram Language bietet eine umfassende eingebaute Darstellung von realen Entitäten und Konstrukten.

mathematisch

Die Wolfram Language bietet mit Abstand die weltweit umfangreichsten und gründlichsten eingebauten Möglichkeiten für mathematische Berechnung.

fähig zu beliebiger Genauigkeit

In der Wolfram Language können Zahlen in beliebiger Genauigkeit oder Länge dargestellt werden.

symbolisch-numerisch

Die Wolfram Language bietet umfassende Unterstützung für sowohl symbolische als auch numerische Berechnung, und viele ihrer Algorithmen kombinieren diese Ansätze.

abfragefähig

In der Wolfram Language werden alle Daten durch symbolische Ausdrücke dargestellt, die eine einheitliche Abfrage mittels funktionaler High-Level-Konstrukten ermöglichen.

objektorientiert

Die Wolfram Language unterstützt eine leistungsstarke symbolische Alternative zur traditionellen objektorientierten Programmierung.

reaktiv

Die Wolfram Language implementiert funktionales reaktives Programmieren zur Unterstützung der deklarativen Erstellung komplexer dynamischer Benutzeroberflächen.

Mehrfachbindung

Das symbolische Pattern Matching der Wolfram Language ermöglicht reibungslose Bindung an jedes beliebige Argument einer Funktion oder an jeden beliebigen Teil eines Ausdrucks.

ausdrucksstark

Dank des sorgfältigen Designs und der umfangreichen eingebauten Funktionalität der Wolfram Language ist es ein Leichtes, berechnungsbezogene Ideen klar auszudrücken.

lesbar

Der starke Fokus auf gut gewählte Namen und Strukturen sorgt für ausgezeichnete Lesbarkeit des Wolfram Language-Codes.

dokumentenorientiert

In der Wolfram Language muss Code nicht der ASCII-Kodierung folgen, sondern kann in dynamischen Notebooks wiedergegeben werden.

literate

In der Wolfram Language können lauffähige Programme als interaktive und dynamisch strukturierte Notebooks geschrieben werden.

skriptfähig

Mit der Wolfram Language können externe Operationen in einer Vielzahl von Umgebungen und Sprachen geschrieben werden.

natürliche Sprache

Aufbauend auf derselben Technologie wie Wolfram|Alpha ermöglicht die Wolfram Language die Eingabe in natürlicher Sprache, sowohl als Programmteil als auch in deren Funktionalität.

JIT-kompiliert

Die Wolfram Language führt Just-in-time-Kompilierung häufig und problemlos durch eigene virtuelle Maschinen aus, um die Rechenleistung zu optimieren und das Beste aus Übersetzung und Kompilierung herauszuholen.

parallelisierbar

Die Wolfram Language besitzt eingebaute Fähigkeiten zur parallelen Berechnung, durchführbar auf individuellen Rechnern sowie auf mitunter heterogenen Netzwerken.

cloudbasiert

Die Wolfram Language ist sowohl lokal als auch in der Cloud ausführbar und unterstützt viele Formen der cloudbasierten Berechnung.

Client-Server-orientiert

Die interaktive Benutzeroberfläche der Wolfram Language ist in der Lage, über das symbolische Protokoll WolframLink mit einem oder mehreren Berechnungskernels kommunizieren zu können.

plattformunabhängig

Die Wolfram Language ist überall gleich – auf allen geläufigen Computerplattformen, lokal und in der Cloud.

Hot-Swapping-fähig

Da die Wolfram Language übersetzt wird und ihre Bereitstellung symbolisch ist, kann Code in jedem Stadium seiner Laufzeit untersucht, debugged und verändert werden.

FFI-fähig

Die Wolfram Language bietet umfassende Unterstützung für Funktionen auf unterschiedlichsten Ebenen, die in anderen Programmiersprachen geschrieben sind.

interoperabel

Eingebaut in die Wolfram Language ist die Fähigkeit, mit anderen Sprachen und mit Daten in Hunderten von Formaten zu interagieren.

sicher

Die Wolfram Language verzichtet auf die Verwendung von Low-Level-Konstrukten wie Zeiger und Speicherzuweisung, wodurch viele Fehlerquellen vermieden werden.

persistent

Da alles in der Wolfram Language (Code, Daten, Graphiken, Benutzeroberflächen etc.) als symbolischer Ausdruck dargestellt wird, kann sie problemlos für die dauerhafte Speicherung serialisiert werden.

Monkey Patch-fähig

In der Wolfram Language gibt es einen einheitlichen Mechanismus zur Veränderung des Verhaltens so gut wie aller Operationen.

unveränderlich

In der Wolfram Language ist alles ein symbolischer Ausdruck, der seinen eigenen Wert repräsentiert – und nur bestimmte Funktionen haben den Seiteneffekt, Ausdrücke „an Ort und Stelle“ zu verändern.

stabil

Die Wolfram Language ist eine kompatible Weiterentwicklung der Sprache in Mathematica, die seit mehr als 30 Jahren eine beinah perfekte Rückwärtskompatibilität beibehalten hat.