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
- ist ein Präsentationsprogramm mit integriertem Mathematik-System,
- fördert die Freude am kreativen mathematischen Experimentieren,
- hilft bei der Kontrolle des Verständnisses mathematischer Algorithmen,
- ermöglicht direkte Implementierungen ohne technischen Ballast,
- erlaubt durch Einblick in die mitgelieferten, didaktisch optimierten Quellen das schnelle Verständnis mathematischer Algorithmen,
- fördert das experimentelle Durchdringen des Stoffs der Lehrveranstaltungen „Diskrete Mathematik für Informatiker„ und „Lineare Algebra für Informatiker“,
- ist Freeware und wird mit allen Quellen verbreitet,
- baut auf der weit verbreiteten Skriptsprache Python 3.1 auf und ist leicht zu erlernen und zu erweitern,
- besteht aus einem Python-Paket (mathguide.py) und einer einfach zu bedienenden grafischen Benutzeroberfläche (GUI).
- Bei der Implementierung der Algorithmen hat Lesbarkeit und Verständlichkeit Vorrang vor Effizienz.
- mathGUIde wurde mit der portablen GUI-Klassenbibliothek Qt (open source license) in C++ entwickelt und läuft auf allen üblichen Plattformen (Windows, Linux etc.).
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.
- Die unbeliebte Installationshürde ist Vergangenheit.
- Alles läuft jetzt im Browser und ist daher auf allen Plattformen verfügbar.
- Auch auf mobilen Geräten (Handy oder Tablet) kann mathGUIde jetzt benutzt werden.
- Die Oberfläche passt sich an die Bildschirmgröße an („Responsive Webdesign“).
- Es müssen keine Upgrades mehr auf neuere Versionen durchgeführt werden.
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.