Computer­programme

ts2python

Bildschirmfoto

ts2python ist ein "Transpiler", der TypeScript-Schnittstellen in Python TypedDict-Klassen übersetzt und Funktionen zur Validierung von JSON-serialisierten Daten anhand dieser Schnittstellen bzw. TypedDicts bereit stellt.

Die Interoperabilität zwischen verschiedenen Programmiersprachen kann immer eine Herausforderung sein. TypeScript ist eine Obermenge von Javascript und möglicherweise die beliebteste Web-Programmiersprache ohne Javascript und damit eine der beliebtesten Frontend-Programmiersprachen überhaupt. Python hingegen ist die beliebteste Sprache im wissenschaftlichen Rechnen und in der Datenwissenschaft. Sie hat auch eine starke Stellung in der Serverprogrammierung, was bedeutet, dass sie auch eine beliebte Backend-Programmiersprache ist. Ein bequemer Weg, Daten zwischen Python und Typescript auszutauschen, besteht in der Serialisierung der Daten im bekannten und sehr einfachen JSON-Format. Dabei gehen jedoch die Typinformationen verloren. ts2python ermöglicht es, auch die Typinformationen von TypeScript nach Python zu übertragen, indem es für jede TypeScript-Schnittstelle eine entsprechende Python-TypedDict-Definition erzeugt. Dies ermöglicht die Verarbeitung von TypeScript-Daten auf der Python-Seite mit der gleichen strengen statischen Typüberprüfung wie auf der TypeScript-Seite.

DHParser  

Bildschirmfoto

Domänenspezifische Sprachen sind in der Softwareentwicklung weit verbreitet, aber sie scheinen in den Digitalen Geisteswissenschaften bisher wenig gebräuchlich zu sein. Während domänenspezifische Sprachen (DSL) in den Digitalen Geisteswissenschaften zuweilen als praktische ad-hoc-Lösungen eingführt werden, bleiben diese Lösungen oft recht provisorisch. Mit anderen Worten, es handelt sich eher um einen "Hack" als um eine Technologie. Die Zielsetzung von DHParser besteht darin, DSLs als eine Technologie in die digitalen Geisteswissenschaften einzuführen. DHParser basiert auf der wohlbekannten Technologie EBNF-basierter Parsergeneratoren, verwendet aber die etwas jüngere, "parsing expression grammar" genannte Weiterentwicklung und Parser-Kombinatoren als Variante des klassischen rekursiven Parsers. Der Quellcode steht im GitLab-Repositorium.

Schnelle Seite  

Bildschirmfoto SchnelleSeite ist ein statischer Webseitengenerator, ähnlich wie Jekyll oder Hugo. Im Gegensatz zu Content-Management-Systemen wird bei statischen Seitengeneratoren die Website komplett gefertigt, bevor sie auf den Server kommt. Der Server muss dann nur noch statische Seiten ausliefern, was schneller geht und weniger Sicherheitsrisiken birgt als dynamische Internetseiten, allerdings auch nicht ganz so flexibel ist.

Anders als die meisten statischen Seitengeneratoren ist SchnelleSeite von vornherein konsequent auf mehrsprachige Websites (wie diese Homepage) ausgerichtet. Außerdem ist es an die Bedürfnisse von Wissenschaftlern angepasst und unterstützt etwa das Auslesen von Literatureinträgen aus einer bibtex-Datei. Hier geht's zum Quelltext.

GWT Photo Album  

Bildschirmfoto GWTPhotoAlbum ist eine Internet-Fotogalerie und Diashow, die mit dem Google Web Toolkit realisiert ist. Sie setzt lediglich einen passiven Server voraus und kann auch lokal vom Dateisystem gestartet werden. Dazu gibt es ein kleines Python-Skript mit dem man eigene Internet-Fotoalben erstellen kann. Die Bilder werden in mehreren Auflösungen abgelegt. GWTPhotoalbum wählt die Auflösung der heruntergeladenen Bilder je nach Bildschrimgröße des Zielgeräts und Übertragungsgeschwindigkeit aus. Die Bilder können mit Bildunterschriften versehen werden.

Als Beispiel gibt es hier eine Alpenfoto-Galerie. Weiteres dazu und das Programm selbst gibt es auf der Projektseite.

CoopSim  

Bildschirmfoto CoopSim ist ein Programm zur Simulation eines spieltheoretischen Modells von kooperativem Verhalten, das sowohl in der Biologie als auch in den Sozialwissenschaften Anwendung findet. Bei dem Modell handelt es sich um das durch Robert Axelrods Buch "Die Evolution der Kooperation" populär gemachte wiederholte Gefangenendilemma, mit dem sich bestimmte (aber keineswegs alle!) Kooperationsprobleme formal beschreiben lassen. CoopSim lehnt sich an die Beschreibung in Axelrods Buch an und erlaubt es, beliebige Strategien (einschließlich vom Benutzer selbst programmierter Strategien) in einem Computerturnier im paarweisen wiederholten Gefangenendilemma gegen einander antreten zu lassen. Dabei können die einzelnen Spielverläufe, das Turnierergebnis sowie die evolutionäre Entwicklung eingesehen werden. Durch eine Reihe von einstellbaren Parametern lassen sich unterschiedliche Rahmenbedingungen simulieren.

CoopSim ist Open-Source-Software unter der MIT Lizenz und kann aus dem GitHub-Verzeichnis heruntergeladen werden.

PyPlotter  

Bildschirmfoto PyPlotter ist ein sehr schlankes Python Paket zur Darstellung von Graphen und Diagrammen. Es ist kompatibel zu Python 2 und 3 und läuft auch unter jython, der Java-Version von Python.

PyPlotter erlaubt die Darstellung von Graphen in einem cartesischen Koordinatensystem sowie auf einer logarithmischen Skala. Dazu enthält es Klassen zur Darstellung zweidimensionaler Simplexdiagramme, wie sie in der Spieltheorie üblich sind.

PyPlotter kann über eine minimale Abstraktionsschicht sehr leicht an unterschiedliche Grafikausgabesystem angepasst werden. Zur Zeit wird Tkinter, das Java AWT, wxWidgets, Qt 4 und 5, gtk 2 und Postscript unterstützt.

PyPlotter ist Open-Source-Software unter der MIT Lizenz. Hier geht es zum PyPlotter-Quellcode und zur Dokumentation.

Evolutionäre Algorithmen  

Bildschirmfoto Evolutionäre Algorithmen sind eine besondere Klasse von Optimierungsalgorithmen, bei denen man den auf Reproduktion, Variation und Selektion beruhenden Evolutionsprozess in der Natur nachzubilden versucht, um beliebige Optimierungsprobleme zu lösen. Im Zusammenhang mit meinem Beitrag "Neuheit in evolutionären Algorithmen" in dem von Birger Priddat und Peter Seele herausgegebenen Sammelband "Neuheit in Ökonomie und Management. Grundlagen, Methoden, Beispiele" (Gabler Verlag, Wiesbaden 2008) habe ich ein kleines Beispielprogramm geschrieben, dass mehrere Varianten eines evolutionären Algorithmus am Beispiel des klassischen "Problems des Handlungsreisenden" vorführt.

Start des Beispielprogramms mit Java Web Start. (Setzt Java Runtime Version 1.6 voraus!) Herunterladen des Beispielprogramms zu evolutionären Algorithmen. (MB inkl. Java-Quellcode). Nur den Quellcode herunterladen.

cultaptation Programm  

Bildschirmfoto Um Strategien für das cultaptation Social Learning Strategies Tournament zu entwickeln, habe ich ein Computerprogramm geschrieben, das die Regeln des Turniers umsetzt. Zusammen mit einer Gruppe von Bayreuther Studenten konnten wir dann eigene Strategien entwickeln, analysieren und die beste Strategie für die Teilnahme am Turnier auswählen.

Wer mit dem cultaptation-Modell (der ersten Runde) "experimentieren" will, kann sich hier mein cultaptation Programm herunterladen. Die Installation wird in der "Lies mich"-Datei erklärt.