Inhaltsverzeichnis
Material
Zusätzliches Material zur Lektion.
Ereignisgetriebene Programmierung
Einführende Texte zu einigen der zentralen Aspekte und Begriffe ereignisgetriebener Programmierung:
- Ereignisgetriebene Programmierung
- Parallele Programmierung
- Threadsicherheit
- Wettlaufsituation (race condition)
Matlab-GUI-Elemente basieren letztlich auf Java Swing.
Swing ist nicht threadsicher. Hinweise sowohl zu Java Swing als auch zur „Event Dispatch Thread“ unter Matlab:
Zur Diskussion um Threadsicherheit vs. Ereignisgetrieben:
Bausteine graphischer Oberflächen
Eine relativ gute Übersicht über die einzelnen Bausteine (widgets, controls) graphischer Oberflächen bietet die Wikipedia:
Programmierprinzipien
Es gibt eine ganze Reihe an Programmierprinzipien, einen Teil davon aus dem sogenannten „Agile Software Development“. Hier eine Liste solcher Prinzipien ohne Anspruch auf Vollständigkeit:
- Don't repeat yourself. (DRY)
- Keep it simple stupid. (KISS)
- You aren't gonna need it. (YAGNI)
- General Responsibility Assignment Software Patterns/Principles (GRASP)
- SOLID
- Single source of truth (SSOT)
- Single version of the truth (SVOT)
- Separation of concerns (SoC)
- Convention over configuration (Coding by convention)
Gestaltung graphischer Oberflächen
Es gibt (in Deutschland) offensichtlich nichts, das nicht geregelt ist. So gibt es „Grundsätze der Dialoggestaltung nach DIN EN ISO 9241-110“. Den Kommentar zur Norm hat Wolfgang Schneider verfasst, der auf seiner Seite weitere Informationen bereithält.
Die sieben Gestaltungsgrundsätze gemäss DIN EN ISO 9241 Teil 110:
- Aufgabenangemessenheit
- Selbstbeschreibungsfähigkeit
- Steuerbarkeit
- Erwartungskonformität
- Fehlertoleranz
- Individualisierbarkeit
- Lernförderlichkeit
Quelle: http://www.ergo-online.de/
Weitere Informationen:
- Übersicht über die Grundsätze der Dialoggestaltung nach DIN EN ISO 9241-110
(Wolfgang Schneider, ergo-online.de)
Das Ganze firmiert auch unter dem Schlagwort Mensch-Computer-Interaktion (Human Computer Interaction, HCI).
Eine Vorstellung unterschiedlicher Konzepte für die GUI-Programmierung aus Sicht eines Programmierers stellt Martin Fowler, bekannt u.a. durch sein Buch über Refactoring1), auf seiner Webseite vor:
Eine schöne Illustration, was passieren kann, wenn zu viele Leute in die GUI-Entwicklung involviert sind, aber zu wenig miteinander reden, liefert die Illustration auf der folgenden Seite:
GUI-Bibliotheken
Matlab ist sicherlich nicht allgemein das Mittel der Wahl, um GUIs zu schreiben. Es hat sicherlich seine Berechtigung, GUIs in Matlab zu programmieren, wenn bereits eine recht große Code-Basis in Matlab vorliegt und die Zielgruppe entsprechend damit arbeitet.
Generell ist der Ansatz, eine frei verfügbare Programmiersprache und eine entsprechende GUI-Bibliothek zu verwenden, allerdings aufgrund der dadurch gewonnenen Unabhängigkeit von kommerziellen Produkten klar zu bevorzugen – auch wenn das einen zumindst anfänglich deutlich größeren Arbeitsaufwand bedeutet.
Eine Übersicht über GUI-Bibliotheken für diverse Programmiersprachen liefert die Wikipedia:
Zwei GUI-Bibliotheken seien hier hervorgehoben, die sich sowohl durch Plattformunabhängigkeit als auch durch ihren Einsatz in vielen Programmen, kommerziell und nicht-kommerziell, auszeichnen:
- GTK+
- wxWidgets
Natürlich könnte man auch noch das von KDE her bekannte Qt sowohl das im Kontext von Matlab relevante Java Swing erwähnen.
Zumindest was GTK+, wxWidgets und Qt angeht, gibt es für diese Bibliotheken Bindungen an eine Vielzahl an Programmiersprachen, so dass man nicht auf die der Bibliothek zugrundeliegende Programmiersprache für die Erstellung eigener Anwendungen angewiesen ist.