- WebApps
- Achterbahn (3D)
- FunctionBuilder
- FunctionDesigner
- Geradenmemory
- ZentralerGrenzwertsatz
- lernschleife.sty
Seit ich im Informatik-Wahlpflicht-Unterricht im 10. Schuljahr mein erstes Computerspiel mit QBasic programmiert habe (damals noch unter DOS), hat mich die Faszination Programmierung und Software-Entwicklung nicht mehr losgelassen.
In der gymnasialen Oberstufe und während des Zivildienstes habe ich mich intensiv mit dem World Editor des PC-Spiels WarCraft III auseinandergesetzt, denn mit diesem ist es möglich, eigene Scripts zu programmieren innerhalb des mächtigen Frameworks, das Blizzard Entertainment entwickelt hat. Nach meinen bisher eher rudimentären Kenntnissen (im Schulunterricht haben wir noch einmal Arrays behandelt), habe ich hier eventbasiertes Programmieren, das Variablenkonzept und auch Anfänge der Objektorientierung kennengelernt. Im Nachhinein kann ich jedem Programmieranfänger den Editor von WarCraft III nur wärmstens ans Herz legen.
Im Zivildienst hatte ich dann verstärkten Kontakt mit Microsoft Excel. Mit meinen immer noch spärlichen Erfahrungen gelang es mir hier, einige Makros zu schreiben, die noch über Jahre hinweg benutzt wurden. Damit wurde Excel – oder allgemeiner Tabellenkalkulation – zu einem weiteren Steckenpferd von mir.
In den Anfänger-Informatik-Vorlesungen wurde Pascal (oder genauer Delphi) gelehrt. Auch dies halte ich im Nachhinein für einen sehr günstigen Umstand, denn diese Sprache ist speziell für Anfänger entwickelt worden.
Da ich bis dato wenig mit Objektorientierung zu tun hatte, fiel mir der Umstieg auf Java relativ schwer. Als ich mich jedoch an das neue Konzept gewöhnt hatte, konnte ich mir gar nicht mehr vorstellen, auf andere Weise zu programmieren. In zwei Computergrafik-Vorlesungen setzten wir uns außerdem mit der 3D-Grafik-Bibliothek OpenGL auseinander. Das berühmte „Redbook“ steht seitdem in meinem Bücherregal und hat mir vielfach gute Dienste geleistet. Aus dieser Zeit stammt das Achterbahn-Applet, auch wenn dies mit dem Java3D-Framework erstellt wurde und nicht direkt mit jogl.
Im Mathematik-Studium beschäftigte ich mich darüber hinaus natürlich mit MatLab (in numerischer Mathematik) und mit Mathematica (in Algebra). Beide konnten mich aber nie wirklich fesseln, da sie mir zu beschränkt auf mathematische Probleme erschienen. („Beschränkt“ soll hier nicht negativ aufgefasst werden. Beide Programme sind exzellente und äußerst effektive Entwicklungsumgebungen. Aber mit ihnen lassen sich meines Wissens nun mal keine Büroanwendungen oder Spiele programmieren.) Interessanterweise hatte ich trotz meines Schwerpunkts in Wahrscheinlichkeitsrechnung niemals Kontakt mit Statistik-Programmen wie R oder SAS.
Viel einschneidender als die oben genannte Mathematik-Software war das Erlernen des Textsatzprogramms LaTeX. Ich führe dies hier auf, weil LaTeX in meinen Augen auch eine eigene Programmiersprache darstellt. Zuerst aus der Notwendigkeit heraus, eine Seminararbeit „texen“ zu müssen (an dieser Stelle vielen Dank an Professor Manfred Lehn von der Johannes-Gutenberg-Universität Mainz) und nach stundenlangem Fluchen auf das Programm, hat sich LaTeX mittlerweile zu einem unersetzlichen Werkzeug für mich entwickelt. Diplomarbeit, zweite Staatsexamensarbeit, aber auch sämtliche andere Dokumente wie Arbeitsblätter, Klassenarbeiten, Abhandlungen zu Rollenspielen usw. erstelle ich heute mit LaTeX. Ein Standalone-Style namens lernschleife.sty habe ich hier veröffentlicht. Seitdem ein Freund mir das Paket tikZ empfohlen hat, ersetzt LaTeX sogar sämtliche Grafik-Programme.
Weiterhin habe ich mir Python angeschaut und auch einige Programme damit geschrieben (mein Cousin brauchte für eine Firmenfeier eine persönliche Version von „Der Große Preis„). Auch heute benutze ich Python noch häufig als intelligenten Taschenrechner. Java konnte es jedoch nicht als meine bevorzugte Programmiersprache ablösen.
Dies liegt allein schon in der universellen Anwendbarkeit Javas, wie ich in meinem kurzen Berufsleben als IT-Consultant festgestellt habe. Tools wie der IBM Functional Tester setzen auf Java auf und nutzen dabei so mächtige IDEs wie eclipse. Und auch beim Einarbeiten in Microsofts C# haben mir meine Java-Kenntnisse sehr geholfen, denn dies ist eine sehr java-ähnliche Sprache.
Nachdem ich mich dann für de Quereinstieg in den Schuldienst entschieden hatte, beschäftigte ich mich erstmals mit Assembler-Programmierung sowie StarBasic. Wichtiger war jedoch die Aufgabe, Programmieranfängern erste Schritte in Java zu ermöglichen. Wie in meiner eigenen Lernbiographie bereits angedeutet, hatte ich das Glück, nicht mit Java anfangen zu müssen. Java ist meine persönliche Lieblingssprache, aber sie erfordert objektorientiertes Programmieren und ist sehr rigide was Exception-Handling und ähnliches angeht. Das ist natürlich gut so, aber für den Anfänger ist es sehr kryptisch, wenn er Code wie
try { BufferedReader in = new BufferedReader(new FileReader("text.txt")); } catch (IOException e) { e.printStackTrace(); }
schreiben muss, nur um eine einfache Textdatei zu lesen. Daher habe ich speziell für den Informatikunterricht ein eigenes Framework entwickelt: JavaApp. Mit JavaApp ist es möglich, sehr fortgeschrittene Programme in Java zu schreiben, ohne objektorientiert programmieren zu müssen. Ich habe es nun bereits in zwei Schuljahren ausprobiert und die Ergebnisse waren äußerst vielversprechend.
Mittlerweile benutze ich selbst JavaApp um meine eigenen Programme zu schreiben. Dies ist damit so einfach wie nie zuvor. Das wichtigste dieser Programme ist der FunctionDesigner. Dieses Programm setze ich im Mathematik-Unterricht ein. Es erlaubt, aus Funktionen Vektorgrafiken und CNC-Programme zu generieren.
Für die Zukunft geplante Projekte sind zum einen der weitere Ausbau von JavaApp: Hier möchte ich gerne eine grafische Benutzeroberfläche bauen, die es erlaubt, eigene Java-Programme zu schreiben. Vorbild hierfür ist der World Editor von WarCraft III. Dieser JavaApp-Builder soll den Einstieg in Java noch besser und früher ermöglichen – und damit in Konkurrenz zu solchen Frameworks wie JavaKara treten.
Ein weiteres Projekt wartet seit Weihnachten mehr oder weniger unangetastet auf mich: Lego Mindstorms.