home

Was ist neu in Version 3?

Ultrakurzfassung in JavaScript:

Wenn Sie auf Ausführen klicken, kommt die Ultrakurzfassung unter dem Button. Und wenn Sie darunter eine mathematische Formel und eine große Zahl sehen, hat Ihr Browser den Kompatibilitätstest bestanden.


Für die Langfassung folgt zunächst ein Auszug aus der Webseite zu mathGUIde 2.1 von 2010:

mathGUIde

mathGUIde ist speziell auf die Vorlesungen „Diskrete Mathematik für Informatiker“ und „Lineare Algebra für Informatiker“ zugeschnitten, und die Bedienung ist in wenigen Minuten erlernt.

Wenn Sie sich in ein umfangreiches Open-Source-Mathematiksystem einarbeiten möchten, könnte SAGE eine gute Ergänzung sein.

Was oben im Text rot markiert ist, hat sich geändert

Probleme mit mathGUIde 2

mathGUIde 2 bestand aus zwei Komponenten, die einzeln installiert werden mussten: 1. Das eigentliche Programm (in C++ für das GUI-Toolkit Qt geschrieben) und 2. Die Programmiersprache Python. Das war nicht nur eine Hürde für die Anwenderinnen und Anwender, sondern auch unbequem für mich als Entwickler, denn nach jeder Verbesserung mussten drei Plattformen (Windows, Linux und macOS) aktualisiert werden.

Nachdem mathGUIde fast ein Jahrzehnt lang liegen geblieben war, habe ich jetzt die „Corona-Klausur“ genutzt für ein Redesign mit den neuen technischen Möglichkeiten.

Vorteile von mathGUIde 3

mathGUIde 3 ist komplett in JavaScript programmiert.

Kein Licht ohne Schatten

Ganz ohne Nachteile war die neue Architektur nicht zu haben: Alle Möglichkeiten, Python in eine Webseite einzubinden, sind bisher nur Prototypen oder haben gravierende Nachteile. Ich habe daher die komplette mathGUIde-Bibliothek von Python auf JavaScript portiert. Das ehemals unzumutbare JavaScript hat sich im letzten Jahrzehnt zu einer akzeptablen modernen Scriptsprache weiterentwickelt, die auch die funktionale Programmierung unterstützt. Nur zwei Nachteile gegenüber Python trüben das Bild ein wenig.

Das erste Problem: JavaScript kennt kein Überladen von Operatoren für selbst definierte Typen. So kann man etwa für die Addition von zwei Matrizen A und B in einer Python-Klasse einfach A+B erlauben. In JavaScript geht es nur mit z.B. A.add(B) oder einer polymorphen Funktion: add(A,B)

Das zweite Problem von JavaScript sind die Zahlen: Bisher gab es nur den Zahlentyp Number, der aber sehr große ganze Zahlen nur mit Rundungsfehlern darstellen kann. So ergibt etwa der Ausdruck (10**29)/5 das Ergebnis 2.0000000000000004e+28, also nichts für zahlentheoretische Algorithmen. Die geplante JavaScript-Version ECMAScript 2021 bringt den neuen Typ BigInt, für beliebig große ganze Zahlen. Die aktuellen Versionen von Firefox und Chrome unterstützen BigInt bereits, Safari 13.1 noch nicht (aber die „Safari Technology Preview 108“ schon). Diese Lösung ist allerdings kein vollwertiger Ersatz für die Python-Zahlen: Number und BigInt sind zwei Typen, die zwar beide die Operatoren +, -, * usw. kennen, aber dabei nur mit expliziter Konvertierung gemischt werden dürfen.

Kein Schatten ohne Licht

Bei der Entwicklung der neuen mathGUIde-Bibliothek habe ich versucht, diese Probleme so gut wie möglich in den Hintergrund treten zu lassen. So sorgt etwa ein vorgeschalteter Parser dafür, dass Sie bei Ihren Eingaben in einen Modus gehen können, der arithmetische Operationen zwischen Klassenobjekten (wie Matrizen) mit Infix-Operatoren erlaubt. Mehr dazu finden Sie unter Einstieg in mathGUIde.

home