This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Eine praktische Einführung in Mathematica /  Spezielles Thema: Die Interna von Mathematica /

Warum die internen Abläufe im allgemeinen nicht relevant sindDie Algorithmen von Mathematica

1.12.2 Die grundlegende interne Architektur

Interne von Mathematica verwendete Darstellungen

Wenn Sie eine Eingabe in Mathematica machen, wird eine Datenstruktur in Ihrem Computerspeicher erzeugt, um die eingegebenen Ausdrücke darzustellen.

Im allgemeinen werden verschiedene Teile Ihres Ausdrucks an unterschiedlichen Plätzen im Speicher abgelegt. Somit wird zum Beispiel von einer Liste, wie {2, x, y + z}, das „Rückgrat" der Liste an einem Platz gespeichert, während jedes der eigentlichen Elemente an einem gesonderten Platz abgelegt wird.

Das Rückgrat der Liste besteht dann nur aus drei „Zeigern", die die Adressen im Computerspeicher angeben, an denen die konkreten Ausdrücke, die die Elemente der Liste bilden, zu finden sind. Diese Ausdrücke enthalten wiederum Zeiger auf Ihre Unterausdrücke. Die Zeigerkette endet, wenn einer davon ein Objekt, wie eine Zahl oder ein Zeichen, erreicht, das direkt als Bitmuster im Computerspeicher abgelegt ist.

Entscheidend für die Mathematica-Operation ist das Konzept von Symbolen wie x. Wann immer x in einem Ausdruck vorkommt, stellt Mathematica es durch einen Zeiger dar. Der Zeiger verweist aber immer auf den gleichen Ort im Computerspeicher, nämlich auf einen Eintrag in einer zentralen Tabelle, die alle in Ihrer Mathematica-Session definierten Symbole enthält.

Diese Tabelle ist sozusagen ein Verwahrungsort für alle Informationen über jedes Symbol. Sie enthält einen Zeiger auf eine Zeichenkette, die den Symbolnamen liefert, sowie Zeiger auf Ausdrücke, die die Regeln für die Evaluierung des Symbols enthalten.

Das grundlegende Prinzip der Mathematica-Speicherverwaltung

Jeder Speicherbereich, der von Mathematica verwendet wird, verwaltet einen Zähler, wie viele Zeiger gegenwärtig auf ihn verweisen. Wenn diese Anzahl Null wird, weiß Mathematica, daß auf den Speicherbereich nicht länger verwiesen wird, und entfernt die Daten, die darin gespeichert sind, um die Bereiche für etwas Neues zur Verfügung zu stellen.

Diese Strategie stellt im wesentlichen sicher, daß kein Speicherplatz verschwendet wird, und daß ein beliebiger von Mathematica verwendeter Speicherbereich wirklich nur Daten speichert, auf die Sie in Ihrer Mathematica-Session zugreifen können.

Die grundlegenden Aktionen von Mathematica

Im Zentrum von Mathematica befindet sich eine konzeptionell einfache Prozedur, bekannt als der Evaluator, die jede Funktion, die in einem Ausdruck erscheint, nimmt und evaluiert.

Wenn die Funktion eine von ungefähr tausend ist, die in Mathematica integriert sind, wird der Evaluator direkt internen Code innerhalb des Mathematica-Systems ausführen. Dieser Code ist so eingerichtet, daß er die zu einer Funktion gehörenden Operationen durchführt und dann einen neuen, das Ergebnis repräsentierenden, Ausdruck bildet.

Die grundlegende Eigenschaft, die Mathematica zu einem in sich abgeschlossenen System macht

Eine wesentliche Eigenschaft der in Mathematica eingebauten Funktionen ist, daß sie eine universelle Berechnung unterstützen. Dies bedeutet, daß Sie mit diesen Funktionen Programme konstruieren können, die absolut jede Art von Operation, die auf einem Computer möglich ist, durchführen können.

Wie sich herausstellt, würde eine kleine Sammlung von eingebauten Mathematica-Funktionen zur Unterstützung einer universellen Berechnung ausreichen. Aber wenn eine ganze Sammlung von Funktionen zur Verfügung steht, wird es in der Praxis einfacher, die Programme zu konstruieren, die man benötigt.

Der springende Punkt ist jedoch, daß Sie niemals eingebaute Mathematica-Funktionen modifizieren müssen, da Mathematica ja eine universelle Berechnung unterstützt. Alles, was Sie tun müssen, um eine bestimmte Aufgabe zu erfüllen, ist, diese Funktionen auf geeignete Weise miteinander zu kombinieren.

Universelle Berechnung ist die Basis für alle Computer-Standardsprachen. Viele dieser Sprachen stützen sich aber auf die Idee des Kompilierens. Wenn Sie zum Beispiel C oder Fortran verwenden, schreiben Sie zuerst Ihr Programm und kompilieren es dann, um Maschinencode zu erzeugen, der dann tatsächlich auf Ihrem Computer ausgeführt wird.

Mathematica verlangt von Ihnen keinen Kompilierungs-Schritt. Sobald Sie einen Ausdruck eingegeben haben, können die in diesem Ausdruck enthaltenen Funktionen sofort ausgeführt werden.

Häufig wird Mathematica einen von Ihnen eingegebenen Ausdruck vorbehandeln, indem Dinge so angeordnet werden, daß eine spätere Ausführung so effizient wie möglich wird. Eine derartige Vorbehandlung beeinflußt niemals das erzeugte Ergebnis und wird kaum jemals explizit sichtbar.

Warum die internen Abläufe im allgemeinen nicht relevant sindDie Algorithmen von Mathematica