Projekt: Regelbasierte und Constraint-Programmierung

Organisatorisches

Bei Interesse schicken Sie einfach vorab eine E-Mail an Sascha Rechenberger oder schreiben Sie sich in den Moodle Kurs ein.

Ein unverbindliches erstes Treffen zur Vorstellung dieses und anderer Projekte findet am Dienstag, den 20.4.2021 um 12:15 via Zoom statt. Dem Treffen kann über Moodle beigetreten werden.

Thema: Implementierung eines CHR Systems für Python

Constraint Handling Rules (CHR) ist eine deklarative Programmiersprache, die ursprünglich für die Implementierung von Constraint Solvern (das sind Programme, die Informationen in Form von logischen Aussagen vereinfachen und verarbeiten) entwickelt wurde. CHR ist dabei keine eigenständige Programmiersprache, sondern wird immer in eine andere Sprache eingebettet. Das bekannteste Beispiel dafür ist Prolog, wobei es CHR auch für Java, C oder Haskell gibt. Mit einer CHR-Implemtierung für eine Sprache, lässt sich mit dieser sehr leicht Constraint Programmierung betreiben, und damit viele Probleme auf elegantestem Wege lösen.

Das Gute an CHR: die Sprache ist sehr einfach, und lässt sich vergleichsweise leicht für eine andere Sprache implementieren.

Im Rahmen des Projekts soll daher CHR für die beliebte Skriptsprache Python implementiert werden. Dazu muss eine Laufzeitumgebung für CHR in Python implementiert, sowie CHR als (Embedded) Domain Specific Language ((E)DSL) entweder direkt in Python eingebettet, oder zu Python-Code übersetzt werden.

Ziele
  • Tiefe Einblicke darin, wie deklarative Programmiersprachen funktionieren
  • Praktische Erfahrungen im Design von Programmiersprachen und (E)DSLs
  • Praktische Erfahrungen in agiler Softwareentwicklung
  • Als fertiges Artefakt: CHR(Python) als nützliches Werkzeug für den Programmieralltag
Voraussetzungen
  • Vorlesung „Paradigmen der Programmierung”
  • Gute Programmierkenntnisse in Python
  • Interesse an deklarativen Programmiersprachen