Einblicke in die Wolfram Language

By | 21. April 2017

Die Wolfram Language ist eine wissensbasierte symbolische Programmiersprache, welche die neusten Computer- und Webtechnologien in sich vereint.

Die Wolfram Language ist aus Mathematica entstanden und sentwickelt für eine neue Generation von Programmierern. Sie besitzt eine Fülle an Funktionen, Algorithmen, Wissensdatenbanken und Verbindungsoptionen sowie Verteilungsmöglichkeiten, die es sonst in keinem Programmiersystem gibt – alles in einem System vereint mit einer unvergleichbar eleganten, symbolischen Programmiersprache.

Der Entwickler der Sprache Stephen Wolfram beschreibt sein Werk wie folgt: “Inside the Wolfram Language we have a whole computable model of the world. And it becomes trivial to write a program that makes use of the latest stock price, computes the next high tide, generates a street map, shows an image of a type of airplane, or a zillion other things.”

Mathematica ist das integrierte System für die vollständige Entwicklung, Berechnung, Simulation, Analyse und Dokumentation von technischen Problemstellungen in einer einheitlichen, plattformunabhängigen Arbeitsumgebung unter Einsatz der Wolfram Language.

Im folgenden werden verschiedene Funktionen der Wolfram Language vorgestellt. Dabei besteht nicht der Anspruch auf Vollständigkeit, sondern es steht mehr die Vorstellung besonders interessanter Konzepte im Vordergrund.

Grundlegendes

Die Wolfram Language besteht aus etwa 5000 eingebauten Funktionen. Alle Funktionen haben Namen, bei denen jedes Wort mit einem Großbuchstaben beginnt. Die Argumente der Funktionen werden immer in eckigen […] Klammern geschrieben und durch Kommas getrennt.

Listen werden in der Wolfram Language durch { … } angegeben. Sie können Ausdrücke unterschiedlicher Art beinhalten.

Reine Funktionen

Reine Funktionen oder (pure functions) sind Funktionen, die nur aus den elementaren Bestandteilen bestehen. Mittels reiner Funktionen lassen sich Funktionen angeben, die auf Argumente angewandt werden können, ohne die Namen der Funktionen explizit zu definieren.

Ihr erstes Argument wird gekennzeichnet durch #, der Abschluss der Beschreibung bildet immer ein &. Beispielsweise würde eine reine Funktion, die 1 addiert wie folgt definiert werden:

Wenn eine reine Funktion als der Kopf eines Ausdrucks gegeben ist, wird die Funktion auf die Argumente angewendet:

Map-Funktion

Die Funktion Map wendet eine Funktion auf alle Elemente einer Liste an.

Beispielsweise lässt sich eine Liste der Quadratzahlen von 1 bis 10 über folgende Anweisung erzeugen:

Möchte man nun eine Liste aller Quadratzahlen erzeugen und dabei zuerst alle geraden und dann alle ungeraden Zahlen umrahmen, dann kann man das wie folgt programmieren:

Liefert folgendes Ergebnis:

Die rein funktionale Programmierung ist sicher gewöhnungsbedürftig, aber wenn man sich etwas eingearbeitet hat, stellt man fest, wie einfach sich damit komplexe Aufgaben lösen lassen.

Erzeugung von Listen

Die einfachsten Formen wie Listen erzeugt werden können erfolgt durch die Funktionen Range und Table. Beispielsweise für die Erstellung einer Schaltjahrübersicht.

Folgende Funktion spiegelt die Berechnungsvorschrift für Schaltjahre wieder. Sie ergibt genau dann den Wert True wenn ein Jahr ein Schaltjahr ist:

Mit folgender Anweisung wird eine eine Jahres-Übersicht erstellt, in der die Schaltjahre Fett hervorgehoben werden:


Eine interessantere Form ist die Funktion Nestlist und NestWhileList.

In der Dokumentation heisst es:”…generates a list of the results of applying f repeatedly, starting with expr, and continuing until applying test to the result no longer yields True”

Beispielsweise soll eine Liste mit halbierten Zahlen erstellt werden bis die erste ungerade Zahl auftritt und nicht mehr ohne Rest halbiert werden kann.