Programmiersprache Babelsberg#

Die Ruby-Erweiterung Babelsberg soll Constraints sowohl beim imperativen als auch beim deklarativen Programmieren unterstützen.

Beim Hasso-Plattner-Institut[1] wurde mit Babelsberg/R[2] eine Programmiersprache entwickelt, die den Einsatz derselben objektorientierten Constraints sowohl im Rahmen imperativer als auch deklarativer Umgebungen erlaubt.

Die Programmierung mittels Constraints, der Beschreibung von Beschränkungen und Abhängigkeiten, ermöglicht es, erwünschte Eigenschaften oder Randbedingungen, etwa Wertebereiche, direkt zu spezifizieren. Dadurch können Compiler oder Laufzeitumgebungen deren Einhaltung automatisch überprüfen, man vermeidet verstreute Anweisungen, die wiederholt Invarianten prüfen und wiederherstellen müssen, und hat die Chance auf kompakten, deklarativen Quelltext.

class Resistor < TwoLeadedObject
attr_reader : resistance
def initialize ( resistance )
super()
@resistance = resistance
# Ohm’s Law constraint. Note that the resistance is read−only.
always { lead1.voltage − lead2.voltage == resistance.?*lead1.current }
end
end
class Battery < TwoLeadedObject
attr_reader : supply_voltage
def initialize (supply_voltage)
super()
@supply_voltage = supply_voltage
always { lead2.voltage − lead1.voltage == @supply_voltage.? }
end
end

Code-Beispiel: Elektrische Gesetze als Constraints formuliert.

Dennoch ist Programmieren mit Constraints nicht verbreitet, sondern imperatives Programmieren die Norm. Zwar gibt es Versuche zur Integration von Constraints mit imperativem Programmieren, doch dieser Einsatz von Constraints verhinderte deren Wiederverwendung in deklarativem Code und vice versa.

Babelsberg/R hat nach Aussage seiner Schöpfer nun die Konstrukte zur Abstraktion und Kapselung vereinheitlicht, indem sie bekannte objektorientierte Methodendefinitionen sowohl für deklarativen als auch für imperativen Code verwendet. Der Prototyp, Babelsberg/R, ist als Ruby-Erweiterung implementiert und unterstützt Rubys objektorientierte Semantik. Damit soll man Constraints schrittweise zu existierenden Ruby-Programmen hinzufügen können.

Die Qellen sind bei Github[3] verfügbar und stehen unter der MIT-Lizenz[4].

Babelsberg und Sudokus#

Einen Anwendungsfall für Babelsberg im Zusammenhang mit der Lösung von Sudokus nennt Maria Graber, die an Babelsberg/R im Rahmen ihrer Masterarbeit gearbeitet hat [5].

Links:

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-1) was last changed on 08-Aug-2014 08:57 by Markus Monderkamp