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 /

Die Algorithmen von MathematicaTest und Verifikation

1.12.4 Das Software-Engineering von Mathematica

Mathematica ist eines der komplexesten Softwaresysteme, die je entwickelt wurden. Sein Quellcode ist in einer Kombination aus C und Mathematica geschrieben worden. Bei der Version 4 enthält der Code für den Kern etwa Zeilen C-Code und etwa Zeilen Mathematica-Code. Dies entspricht in etwa 18 Megabytes Daten oder knapp bedruckten Seiten.

Der C-Code in Mathematica ist genaugenommen in einer C-Sprache mit benutzerspezifischer Erweiterung geschrieben worden, die eine spezielle Speicherverwaltung und objektorientierte Eigenschaften unterstützt. Der Mathematica-Code ist durch Verwendung von Share und DumpSave optimiert worden.

Die Aufteilung der verschiedenen Teile des Codes im Mathematica-Kern lautet etwa wie folgt: Sprache und System: 30%; numerische Berechnung: 25%; algebraische Berechnung: 25%; Graphik und Kern-Output: 20%.

Der größte Teil dieses Codes ist ziemlich kompakt und algorithmisch. Solche Teile, die im wesentlichen einfache Prozeduren oder Tabellen darstellen, verwenden nur einen minimalen Anteil am Code, da diese Teile zumeist in einer höheren Sprache, oft direkt in Mathematica, geschrieben sind.

Der Quell-Code des Kerns ist bis auf den Bruchteil eines Prozents auf allen Computersystemen, auf denen Mathematica läuft, identisch.

Für die Benutzeroberfläche wird jedoch ein signifikanter Anteil an speziellem Code benötigt, um die verschiedenen Benutzerschnittstellen-Umgebungsarten zu unterstützen. Die Benutzeroberfläche enthält über Zeilen systemunabhängigen C-Quellcode, von denen etwa Zeilen mit der Formatierung der Ausdrücke zu tun haben. Dann sind da noch zwischen und Zeilen mit spezifischem Code, der für jede Benutzerschnittstellen-Umgebung individuell ist.

Mathematica verwendet bei der Verarbeitung ein Client-Server Modell. Die Benutzeroberfläche und der Kern sind über MathLink verbunden; dem gleichen System, das es zur Kommunikation mit anderen Programmen verwendet.

Modularität und Konsistenz innerhalb des C-Code-Anteils des Mathematica-Kerns wird dadurch erreicht, daß verschiedene Teile in erster Linie durch das Austauschen vollständiger Mathematica-Ausdrücke miteinander kommunizieren.

Es sollte aber beachtet werden, daß, selbst wenn verschiedene Teile des Systems auf der Quellcode-Ebene völlig unabhängig voneinander sind, diese Teile doch viele algorithmische gegenseitige Abhängigkeiten besitzen. So ist es bei den numerischen Funktionen zum Beispiel üblich, extensiv algebraische Algorithmen einzusetzen, oder beim Grafikcode ziemlich fortgeschrittene mathematische Algorithmen zu verwenden, die in völlig verschiedenen Mathematica-Funktionen enthalten sind.

Seit Beginn der Entwicklungsarbeit im Jahr 1986 entspricht die Anstrengung, die direkt in die Entwicklung des Codes für Mathematica investiert wurde, nahezu tausend Mannjahren. Zusätzlich wurde ein vergleichbarer, vielleicht sogar etwas größerer Aufwand in Test und Verifikation investiert.

Der Quellcode von Mathematica hat sich, seit die Version 1 herausgebracht wurde, deutlich verändert. Die Gesamtzahl der Zeilen des Kern-Codes ist von in der Version 1 auf in der Version 2, in der Version 3 und nahezu in der Version 4 angewachsen. Hinzu kommt, daß in jedem Stadium der existierende Code revidiert wurde, so daß in der Version 4 nur noch wenige Prozente mit dem Code von Version 1 übereinstimmen.

Ungeachtet dieser Veränderung im internen Code ist das Design der Mathematica-Benutzerebene von Version 1 an jedoch kompatibel geblieben. Obwohl viel Funktionalität hinzugefügt wurde, laufen Programme, die unter Mathematica Version 1 erstellt wurden, beinahe immer absolut unverändert auch unter Version 4.

Die Algorithmen von MathematicaTest und Verifikation