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.