Kurz gesagt: Programmieren ist eine Frage der Lesbarkeit.
Dann lass uns diesen zentralen Punkt dochmal inhaltlich diskutieren. Ich mache gerne den Anfang und erkläre wieso ich das Perl-Skript in punkto Lesbarkeit und Aussdrucksstärke dem Haskell-Programm unterlegen finde. Ich bin gespannt deine Erwiderung darauf zu lesen. Hier nochmal die beiden Kandidaten im direkt Vergleich:
sub f1{
my $x = shift;
return sub{
my $y = shift;
$x * $y;
}
}
f1 = (*)
Das Perl-Skript ist unnötig ausschweifend, in natürlicher Sprache: „Definiere eine Subroutine namens f1
, im Funktionskörper lege eine lokale Variable $x
an, belege die Variable mit dem ersten Wert meines impliziten Parameter-Arrays und entferne den Wert aus selbigem, dann gib eine anonyme Subroutine zurück, in deren Funktionskörper, lege eine weitere lokale Variable $y
an, belege die Variable abermals mit dem ersten Wert aus dem impliziten Parameter-Array und lösche den Wert aus dem Array, schließlich lass die innere Funktion das Produkt von $x
und $y
zurückgeben.“
Die Haskell-Definition dagegegn ist präzise und pointiert, sinngemäß „f1
ist ein Alias für die Multiplikation.“
Das war in natürlicher Sprache, was auf semantischer Ebene passiert. Rein syntaktisch, ist das Perl-Skript mit administrativen Symbolen aufgebläht, in Haskell ist nur das Klammernpaar um den Multiplikations-Stern administrativer Natur.
Zusätzlich hat die Haskell-Definition mit weniger Worten mehr zum Ausdruck gebracht: Die Funktion f1
ist typsicher, wenn sie mit einem String oder einem beliebigem nicht numerischen Wert aufgerufen wird, gibt es einen Typfehler zur Compilezeit. Außerdem funktioniert die Haskell-Variante ohne weiteres Zutun auch mit unbeschränkt großen Zahlen und beliebig genauen reellen Zahlen.
Abschließend komme ich zu der Einschätzung, dass das Haskell-Programm präzise und ausdrucksstark ist, das Perl-Programm dagegen geschwätizg und ausdrucksschwach. Du bist an der Reihe mich vom Gegenteil zu überzeugen.