The Yesod Framework

Ein Webrahmenwerk in Haskell

Vergleich zu anderen Webframeworks

Andere Webframeworks in Haskell

Neben Yesod gibt es noch einige weitere Webframeworks, welche auf Haskell basieren. Der größte Konkurrent ist dabei Happstack. Happstack bietet u. a. ein optional zu verwendenes ACID-Speichersystem, das ohne SQL auskommt und beispielsweise in der Lage ist, Haskell-Typen zu sichern. Snap ist hingegen ein vergleichsweise einfaches Webframework, welches gut dokumentiert ist, dessen Entwicklung jedoch noch in den Kinderschuhen steckt. Ein interessanter Aspekt bei Snap ist das XML-basierte Templatesystem zwecks HTML-Generierung. Weitere Frameworks, die der Webentwicklung mit Haskell dienen, jedoch nicht im Fokus weiterer Erläuterungen stehen sollen, sind Haskell on a Horse, Lemmachine und Salvia.[1]

Vergleich zu dynamischen Sprachen

Ruby on Rails, ein in der dynamischen Programmiersprache Ruby entwickeltes Webframework, basiert auf den auch allgemein bei Ruby gültigen Grundsätzen «Don't Repeat Yourself» und «Convention Over Configuration». Dies bietet dem Entwickler einerseits den Vorteil, dass beispielsweise Änderungen am Datenbankschema nur an einer Stelle geändert werden müssen und zudem eine Konfiguration dergestalt entfällt, dass stattdessen vorgegebene Richtlinien u. a. bzgl. der Namensgebung einzuhalten sind. Auf der anderen Seite müssen ggf. bestehende Datenbankmodelle, mit denen gearbeitet werden soll, an diese Richtlinien angepasst werden, was das Framework in dieser Hinsicht unflexibel macht. Auch können im Gegensatz zu Yesod durch die dynamische Typisierung von Ruby bestimmte Fehlerklassen nicht ausgeschlossen werden, was insbesondere für größere Webprojekte Probleme bedeuten kann.

Gleiches gilt für das auf PHP basierende Webframework Zend. Zwar existieren mit den entsprechenden Paketen beispielsweise hinsichtlich des Routings von Anfragen ähnliche Möglichkeiten wie bei Yesod, jedoch kann aufgrund der fehlenden Typsicherheit insbesondere bei der Interaktion mit externen Systemen oder bei Benutzereingaben nicht stets sichergestellt werden, dass verarbeitete Daten auch wohldefinierte Werte enthalten.

Da diese Mainstream-Lösungen aber wesentlich weiter verbreitet sind, gibt es entsprechend auch eine deutlich größere Community, als dies bei den Haskell-Frameworks der Fall ist. Insofern kann bei den angebotetenen Funktionen auch davon ausgegangen werden, dass diese gut dokumentiert und getestet sind und folglich eine hohe Qualität haben. Oftmals ist man bei der Verwendung eines solchen Mainstream-Webframeworks zudem nicht abhängig von speziellen Implementierungen, da in der Regel mehrere Alternativen zur Lösung einer Problemstellung bereit stehen.

Die großen Vorteile von Yesod gegenüber Webframeworks, welche auf dynamischen Programmier- und Skriptsprachen basieren, ähneln sich denen, die sich Haskell selbst auf die Fahne schreibt. Besonders die Ausnutzung der starken Typisierung durch Haskell beschert Yesod die Vorzüge, Fehler zu vermeiden und gleichzeitig performant ausgeführt zu werden. Durch Einbindung der Quasi Quotations gelingt es, Entwicklern eine komfortable Konfiguration zu ermöglichen, und dabei die technische Umsetzung durch Yesod im Hintergrund zu verstecken. Fehler werden auf diese Weise bereits während der Kompilierung erkannt. Beeindruckend ist auch der Grad der Typsicherheit, welcher im Zusammenspiel mit Benutzern und Datenbanken erreicht wird. Die redundanzfreien Templatesprachen Hamlet und Cassius, sowie die Möglichkeit, durch Widgets auf elegante Weise die einzelnen Frontendsprachen zusammenzuführen bestätigen den überaus positiven Gesamteindruck.