短い答え:
関数型プログラミングコードは読みにくいと人々に言わせる要素の1つは、よりコンパクトな構文を優先することです。
長い答え:
関数型プログラミング自体は、コードを記述するスタイルではなくパラダイムであるため、読み取り可能または読み取り不可能にすることはできません。たとえば、C#では、関数型プログラミングは次のようになります。
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)));
Java、C#、または同様の言語の十分な経験がある人なら誰でも読むことができると考えられます。
一方、言語構文は、一般的なOOP言語に比べて多くの関数型言語(HaskellやF#を含む)でよりコンパクトであり、平易な英語の単語よりも記号を優先します。
これは、FP外の言語にも適用されます。人気のあるOOP言語を、英語の単語をより多く使用する傾向のある一部の人気のない言語と比較すると、プログラミング経験のない人にとっては最後の方が理解しやすいと感じるでしょう。
比較する:
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;
}
に:
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;
}
同じやり方で:
var a = ((b - c) in 1..n) ? d : 0;
架空の言語で次のように表現できます。
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
短い構文のほうが良い場合
初心者にとってはより詳細な構文を理解するのが簡単ですが、経験豊富な開発者にとってはより簡潔な構文が簡単です。コードが短いほど、入力する文字が少なくなり、生産性が向上します。
特に、構文から推測される可能性のある何かを示すために人にキーワードを入力させることは本当に意味がありません。
例:
PHPではfunction
、すべての関数またはメソッドの前に入力する必要がありますが、特別な理由はありません。
Adaは、特にオートコンプリート機能を備えた正しいIDEがないため、開発者に大量の英語の単語を入力するように強制することでいつも私を怖がらせました。私は最近Adaを使ったことがなく、彼らの公式チュートリアルがダウンしているので、例を挙げることはできません。誰かが例を持っているなら、私の答えを修正してください。
1..n
多くのFP(およびMatlab)で使用されている構文は、between 1, n
またはbetween 1 and n
またはで置き換えることができますbetween (1, n)
。このbetween
キーワードを使用すると、言語構文に精通していない人でも理解しやすくなりますが、2つのドットを入力する方がはるかに高速です。