DSL unter die Lupe genommen

Wolfram Language: Mathematica frisst Visual Studio
Kommentare

Das im Jahr 1988 erstmals erschienene Computeralgebrasystem Mathematica hat sich in vielen Wissenschaftsbereichen als „Standard“ etabliert. Spieltheorie, Mathematik und Rüstungselektronik profitieren gleichermaßen von der enormen Leistungsfähigkeit der Sprache. Vor Kurzem kündigte Erfinder Stephen Wolfram an, die in Mathematica verwendete Sprache fortan als „echte Programmiersprache“ betrachten zu wollen. Grund genug, sich die Wolfram Language einmal genauer anzusehen.

Entwickler und Analysten kommunizieren mit der Engine über eine domainspezifische Sprache. Diese DSLs wurden einige Zeit lang gehypt, sind mittlerweile aber als Standard etabliert und werden normalerweise nicht sonderlich beachtet. Wer ein Produkt nutzt, arbeitet sich in dessen DSL ein – weitere Bedeutung wird der Sprache nicht zugemessen. Stephen Wolframs Ankündigung und Vorstellung der Wolfram Language sorgte in Entwicklerkreisen für Aufsehen und rief verwirrte Reaktionen hervor. Über die finanziellen Beweggründe dieser Entscheidung gibt es indes nur wenig Diskussionsbedarf: Desto mehr Nutzer die Wolfram Language findet, desto mehr Personen brauchen einen geeigneten Compiler.

Vorteile der Wolfram Language

Der Hersteller bezeichnet sein Produkt als wissensorientierte Programmiersprache. Das bedeutet, dass die damit erstellten Applikationen auf die Verarbeitung von Informationen aus der realen Welt spezialisiert sind – denkbare Anwendungsbereiche wären die Realisierung von Signalverarbeitungssystemen oder die Auswertung von Messergebnissen. Das liegt daran, dass die Sprache von Anfang an als DSL für Mathematica vorgesehen war. Die im Laufe der Jahre entstandenen Algorithmen und Erweiterungspakete stehen Nutzern der Wolfram Language von der ersten Sekunde an zur Verfügung. So genannte Metaalgorithmen sind ein Nebeneffekt dieser Entwicklung. Dabei handelt es sich um algorithmisches Halbzeug, das Bayes-Filter und andere häufig angewendete Systeme realisiert. Der Entwickler muss diese nur mehr um seine Applikationslogik erweitern, um ein lauffähiges Produkt zu erhalten.

Hinter dem Buzzword „Literate Programming“ verbirgt sich ferner die Idee, dass ein Programm gleichzeitig auch Dokumentation darstellen soll. Dies lässt sich in Wolfram Language ohne Weiteres realisieren: Es ist kein Problem, ausführbaren Code und sogar seine Ausgabe mit beschreibendem Text zu mischen.Wer Mathematica im wissenschaftlichen Bereich nutzt, weiß über die enorme Interaktivität Bescheid. Eingegebene Befehle werden in Echtzeit ausgeführt, was das Finden von Fehlern erleichtert.Zu guter Letzt ist Wolfram Language voll in Wolfram Alpha integriert. Programme können „in natürlicher Sprache“ vorliegende Elemente enthalten. Ein klassisches Beispiel dafür wäre die Weiterverarbeitung der Antwort auf Fragen nach der Bevölkerungsdichte eines Staats. Wolfram Alpha hat in der Vergangenheit immer wieder mit beängstigender Intelligenz beeindruckt. Die Engine findet unter anderem Antworten auf Fragen nach Landesfahnen, Einwohnerzahlen und anderen Informationen aus der realen Welt.

Ab in die Cloud

Wolfram Research, das von Stephen Wolfram gegründete Softwareunternehmen hinter Mathematica, Wolfram Alpha und Wolfram Language, verspricht, dass in Wolfram Language gehaltene Programme in nicht allzu ferner Zukunft auch in der Cloud ausgeführt werden können. Aus kommerzieller Sicht ist dieser Schritt logisch: Am Desktop befindliche Software lässt sich leicht piratieren, während ein Angriff auf eine Cloud-Infrastruktur technisches Wissen und enorme Ressourcen voraussetzt.Eine als Cloud-Credits bezeichnete Währung dient der Abrechnung. Die dahinterstehende Idee ist, dass Entwickler so größere Mengen von Rechenleistung schnell und unbürokratisch zukaufen können – das Aufbauen eines dedizierten Clusters entfällt ersatzlos.
In Mathematica realisierte Algorithmen lassen sich seit längerer Zeit „kompilieren“. Diese Fähigkeit steht logischerweise auch für in Wolfram Language gehaltene Programme zur Verfügung, was von Seiten des Anbieters zur Werbeaussage der „universellen Kompatibilität“ führt.

Harte Fakten

Wer sich das erste Mal mit Wolfram Language und folglich mit Mathematica befasst, muss umdenken. Sprachen wie C oder Visual Basic basieren auf Anweisungen, die unter Umständen auch einen Wert zurückgeben. Mathematica geht dieses Problem jedoch völlig anders an: Jeder beliebige Befehl ist im Grunde genommen eine Gleichung. Neue Funktionen entstehen beispielsweise durch die Zuweisung eines Funktionskörpers, der in einer Variable zu liegen kommt:

fib[1] = fib[2] = 1;
fib[n_] := fib[n] = fib[n - 1] + fib[n - 2]

Andere von klassischen Programmiersprachen bekannte Konzepte sind in Wolfram Language überhaupt nicht implementiert. Das betrifft z. B. Datentypen: Mathematica setzt auf dynamische Typisierung. Im Bereich der Objektorientierung müssen Sie ebenfalls Abstriche machen, da das Produkt im Großen und Ganzen auf funktionale Programmierung setzt. Beim Portieren von in C oder ähnlichen Sprachen gehaltenen Applikationen ärgern sich Entwickler mit Sicherheit über das automatische Speichermanagement. Mathematica kennt keine Pointer. Auf Pointerarithmetik setzende Programme müssen dementsprechend „umkonstruiert“ werden.

Amüsante Features

Die manuelle Realisierung von Diagrammen ist als Schulbeispiel beliebt: Hinter einem Tortendiagramm stehen einige Dutzend Codezeilen. Mathematica ist seit jeher für seine Fähigkeiten als Graphing-Werkzeug bekannt – die meisten Charts entstehen durch den Aufruf einer Generatorfunktion. Das gilt auch für Diagramme im Finanzbereich. Mathematica zeigt an dieser Stelle besondere Intelligenz, da es auf Wunsch Kursdaten aus dem Internet beschafft. Das ist in folgendem Snippet illustriert, das den Verlauf einer Achse als Candlestick-Diagramm darstellt:

data = FinancialData["BAC", "OHLC", {{2009, 5, 1}, {2010, 4, 30}}];

Matrizen sind in Mathematica Datenstrukturen erster Güte. Operationen wie die Ermittlung der Determinante oder des Punktprodukts sind in Form von Operatoren realisiert, die Realisierung von Matrixmathematik geht somit flott von der Hand:

{a, b, c} . {x, y, z}

Bilder werden als zweidimensionale Matrix ihrer Farbwerte behandelt. Die in diesem Bereich gebotenen Funktionen können mit dedizierten Bildbearbeitungsprogrammen wie GIMP und Photoshop mithalten: Schärfungen, Kurven und Kanäle lassen sich durch Aufruf der passenden Methode auf einen Schlag realisieren (Abb. 1). Dies ist insofern nicht überraschend, da Mathematica im Bereich der Entwicklung von Filtereffekten ein Standardwerkzeug ist.

Abb. 1: Mit einfachen Funktionen lassen sich schnell Bildmanipulationen realisieren (Screenshot: http://reference.wolfram.com/language/example/ApplyAnyColoringFunctionToAnImage.html)
Das gilt in unveränderter Weise für die Verarbeitung von Tönen und Geräuschen. Die Sprache kennt eine Vielzahl von Audioformaten, die sich direkt importieren lassen. Wenn die Tondaten in Form eines zweidimensionalen Arrays ihrer Samples vorliegen, darf man sie mit diversen Funktionen weiterbearbeiten. Ein gutes Beispiel dafür ist die Anwendung der diversen Filter. Die Generierung des Filterarrays erfolgt durch spezialisierte Hilfsmethoden, das Resultat lässt sich sodann ohne weiteren Aufwand mit den im vorigen Schritt gewonnenen Informationen „kombinieren“. Fouriertransformationen und andere Analysewerkzeuge stehen ebenfalls zu ihrer Verfügung.
Bei richtiger Parametrierung senden Wolfram-Produkte die Resultate ihrer Arbeit an soziale Netzwerke oder E-Mail-Empfänger. Das folgende Kommando würde einen Tweet absetzen, der im Feed des Benutzers erscheint:

SendMessage["Twitter", "I sent this tweet from Mathematica."]

Die Integration mit den diversen sozialen Netzwerken geht noch weiter. Facebook kann als Datenquelle eingebunden werden, um den Freundeskreis des Benutzers zu analysieren. Auf diese Art und Weise lassen sich Beziehungen visualisieren – Freundschaften lassen sich mit den Mitteln der Graphentheorie hervorragend analysieren.Einen guten Eindruck von den zahlreichen Funktionen der Sprache vermittelt das Wolfram Language & System Documentation Center (Abb. 2).

Abb. 2: Im Wolfram Language & System Documentation Center bekommt man einen Eindruck von den zahlreichen Funktionen der Sprache (Screenshot: http://reference.wolfram.com/language/)

Aufmacherbild: Hacker using laptop. Lots of digits on the computer screen. von Shutterstock / Urheberrecht: scyther5

[ header = Seite 2: Steuerelemente aus Code ]

Steuerelemente aus Code

Mathematica-Applikationen können mit rudimentären Benutzerschnittstellen ausgestattet werden. Das GUI wird dabei in Form von Quellcode definiert, der während der Ausführung das eigentliche Formular zusammenbaut. Intelligenz wird in Form von Callbacks und/oder Event Handlern beigesteuert.Das folgende Snippet realisiert einen Knopf und ein rundes Element. Ein Klick auf den Button ändert die Farbe der Scheibe:

DynamicModule[{b = Red}, {Button["change", 
  Dynamic[b = Apply[RGBColor, RandomReal[{0, 1}, 3]]], 
  ImageSize -> {60, 60}], Graphics[{Dynamic[b], Disk[]}]}]

Wer einmal mit Qt gearbeitet hat, weiß über die Stärken und Schwächen dieses Systems bestens Bescheid. Kleinere Formulare lassen sich ohne großen Aufwand zusammenwürfeln – doch wehe dem, der komplexere Benutzerschnittstellen realisieren muss.

Praktische Nutzung

Auf der Webseite von Wolfram Language ist der Menüpunkt „Start Writing Your Own Code“ mit „Coming Soon“ markiert. Wer auf diesen Link, der zur Erstellung von eigenen Programmen auf Basis von Wolfram Language führen soll, klickt, wird im Moment mit einem Dialog zur Eingabe einer E-Mail-Adresse abgespeist – eine offizielle IDE ist noch nicht verfügbar.
Mathematica ist normalerweise vergleichsweise teuer. Dank einer Kooperation mit der Raspberry Pi Foundation ist das Produkt für Besitzer des Einplatinenrechners kostenlos: das offizielle Image von Raspbian wird seit einiger Zeit mit einer mehr oder weniger vollwertigen Version von Mathematica ausgeliefert.
Diese ist für erste Gehversuche geradezu prädestiniert. Raspberry Pis mit LAN sind für rund 35 Euro zu haben, lassen sich an HDMI-Monitore anschließen und können auch per VNC ferngesteuert werden. Da die kleinste Ausgabe von Mathematica ein Vielfaches kostet, ist dies fast immer ein sinnvoller Kauf: der Einplatinencomputer lässt sich jederzeit weiterverwenden.

Mehr Informationen

Wolfram Research bietet ein Portal zur Sprache an. Diese unter https://www.wolfram.com/language/ einsehbare Webseite enthält diverse Informationen über das Projekt und seine Ziele. Genauere Informationen über die Möglichkeiten von Wolfram Language finden sich in der Sprachreferenz. Dank der Unterteilung in diverse Themenbereiche geht das Finden relevanter Funktionsblöcke leicht von der Hand.
Zu guter Letzt gibt es in der einsehbaren Codegalerie einige durchimplementierte Beispielprogramme. Diese lassen sich in Ermangelung einer IDE nicht (oder nur sehr eingeschränkt) ausführen, bieten aber einen Überblick über die Möglichkeiten der Sprache.

Spiele mit Wolfram Alpha

Die hinter Wolfram Alpha stehende Engine ist eine Untermenge der Wolfram Language. Wolfram Alpha selbst ist für Drittentwickler schon seit längerer Zeit ansprechbar. Hier steht eine Gruppe von Language Bindings bereit, die unter anderem für .NET-Sprachen und Java angeboten werden. Sie stellen eine Art Wrapper dar, die das Entgegennehmen der per REST eingehenden Antworten erleichtern.
Das eigentliche Programmierparadigma der APIs ist stark an Wolfram Alpha angelehnt. Als Beispiel dafür wollen wir die in Abbildung 3 gezeigte Beispielausgabe betrachten, die aus der Dokumentation des Produkts entnommen wurde.

Abb. 3: Wolfram Alpha unterteilt seine Ausgabe in so genannte Pods (Bildquelle: http://products.wolframalpha.com/api/documentation.html)

Während die auf der Webseite von Wolfram Alpha vorliegenden Informationen immer als gif-Datei aufscheinen, können Nutzer des API in manchen Fällen eine textuelle Repräsentation anfordern. Weitere Informationen zu den dabei zum Einsatz kommenden Programmierschnittstellen finden Sie hier.

To Wolfram or not to Wolfram?

Obwohl Wolfram Language derzeit noch nicht als fertiges Produkt angeboten wird, können wir schon jetzt erste Überlegungen zur Sprache anstellen. Die manuelle Implementierung komplexer mathematischer Zusammenhänge ist eine lästige und undankbare Arbeit – wenn Ihr Programm Bilder oder Töne bearbeiten soll, ist die Verwendung des Produkts mit Sicherheit ratsam. Es ist weniger sinnvoll, die Wolfram Language für „datenzentrische“ Applikationen zu nutzen. Das Fehlen klassischer Objektorientierung und der mehr als seltsam aufgebaute GUI-Stack disqualifizieren die Sprache hier von Anfang an. Im Bereich der Spieleentwicklung ist von Wolfram Language auf jeden Fall abzuraten. Wer Stephen Wolfram länger zuhört, fühlt sich oft an die Arbeiten des amerikanischen Fachbuchautors Matthew A. Brenner erinnert: Die Nutzung von Computern im Mathematikunterricht ist auch aus seiner Sicht höchst ratsam. Dass das Erlernen einer Programmiersprache in diesem Fall zum guten Ton gehört, folgt aus der Logik.
Wolfram Language ist – zumindest meiner Ansicht nach – als „erste Programmiersprache“ denkbar schlecht geeignet. Sowohl die enorme Flexibilität der Syntax als auch das Fehlen klassischer Objektorientierung sorgen dafür, dass Anfänger eine Vielzahl von schlechten Angewohnheiten lernen. Wer mit einer Sprache wie C aufgewachsen ist, kann die Features mit Bedacht einsetzen – Quereinsteiger produzieren über kurz oder lang Spaghetticode.

Fazit

Wer mit Analogrechnern gearbeitet hat, erinnert sich mit Sicherheit an die „digitalen Erweiterungskits“. Dabei handelte es sich um ein digitales Computersystem, das die Ansteuerung der am Steckbrett realisierten Schaltungen automatisierte. Wolfram Language verhält sich in vielerlei Hinsicht analog. Sie bietet Entwicklern einen flexibleren Zugang zu den in Mathematica implementierten Algorithmen, deren Leistungsfähigkeit zu keinem Zeitpunkt zur Diskussion stand. Marketing und Informationskriege leben von der kreativen Überspitzung. Es ist aus Stephen Wolframs Sicht nachvollziehbar, seine Sprache als „universell einsetzbar“ zu bezeichnen – rein formell gesehen ist die Aussage sogar korrekt. Für Entwickler entsteht durch die Ankündigung der Wolfram Language kein Handlungsbedarf. Wer von den von Wolfram Research angebotenen Algorithmen profitieren möchte, realisiert seine Programme sowieso in Mathematica – Apps und Spiele lassen sich mit den etablierten Entwicklungsumgebungen weitaus effektiver zusammenbauen.Langfristig ist diese Ankündigung primär für Konkurrenten von Wolfram Research interessant. Wenn die Medien das Konzept der „universellen Programmiersprache“ akzeptieren, so stehen ihre Produkte über kurz oder lang als „altbackene proprietäre Dinosaurier“ da – Gegensteuern tut in diesem Fall Not.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -