Kurze Antwort:
Eines der Elemente, die die Leute sagen lassen, dass funktionaler Programmcode schwer zu lesen ist, ist die Bevorzugung einer kompakteren Syntax.
Lange Antwort:
Die funktionale Programmierung selbst kann nicht lesbar oder unlesbar sein, da es sich um ein Paradigma handelt und nicht um eine Art, Code zu schreiben. In C # sieht die funktionale Programmierung beispielsweise folgendermaßen aus:
return this.Data.Products
.Where(c => c.IsEnabled)
.GroupBy(c => c.Category)
.Select(c => new PricesPerCategory(category: c.Key, minimum: c.Min(d => d.Price), maximum: c.Max(d => d.Price)));
und wird von jeder Person mit ausreichender Erfahrung in Java, C # oder ähnlichen Sprachen als lesbar angesehen.
Die Sprachsyntax hingegen ist für viele funktionale Sprachen (einschließlich Haskell und F #) kompakter als für gängige OOP-Sprachen, da Symbole anstelle von Wörtern in einfachem Englisch bevorzugt werden.
Dies gilt auch für Sprachen außerhalb von FP. Wenn Sie die gängigen OOP-Sprachen mit einigen weniger gängigen vergleichen, bei denen in der Regel mehr englische Wörter verwendet werden, fühlen sich die letzten für Personen ohne Programmiererfahrung leichter verständlich.
Vergleichen Sie:
public void IsWithinRanges<T>(T number, param Range<T>[] ranges) where T : INumeric
{
foreach (var range in ranges)
{
if (number >= range.Left && number <= range.Right)
{
return true;
}
}
return false;
}
zu:
public function void IsWithinRanges
with parameters T number, param array of (Range of T) ranges
using generic type T
given that T implements INumeric
{
for each (var range in ranges)
{
if (number is from range.Left to range.Right)
{
return true;
}
}
return false;
}
Auf die gleiche Weise:
var a = ((b - c) in 1..n) ? d : 0;
könnte in einer imaginären Sprache ausgedrückt werden als:
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
Wann ist kürzere Syntax besser?
Während eine ausführlichere Syntax für Anfänger einfacher zu verstehen ist, ist eine kompaktere Syntax für erfahrene Entwickler einfacher. Kürzere Codes bedeuten, dass weniger Zeichen eingegeben werden müssen, was eine höhere Produktivität bedeutet.
Insbesondere ist es nicht sinnvoll, eine Person dazu zu zwingen, ein Schlüsselwort einzugeben, um auf etwas hinzuweisen, das aus der Syntax abgeleitet werden kann.
Beispiele:
In PHP müssen Sie function
vor jeder Funktion oder Methode etwas eingeben, ohne einen bestimmten Grund dafür anzugeben.
Ada hat mich immer entsetzt, weil ich die Entwickler gezwungen habe, viele englische Wörter einzugeben, zumal es keine richtige IDE mit automatischer Vervollständigung gibt. Ich habe Ada in letzter Zeit nicht benutzt und ihr offizielles Tutorial ist nicht verfügbar, daher kann ich kein Beispiel nennen. Wenn jemand ein Beispiel hat, können Sie meine Antwort jederzeit ändern.
Die 1..n
in vielen FP (und Matlab) verwendete Syntax könnte durch between 1, n
oder between 1 and n
oder ersetzt werden between (1, n)
. Das between
Schlüsselwort erleichtert das Verständnis für Personen, die mit der Sprachsyntax nicht vertraut sind. Dennoch lassen sich zwei Punkte viel schneller eingeben.