Kısa cevap:
İnsanlara fonksiyonel programlama kodunun okunmasının zor olduğunu söyleyen unsurlardan biri, daha kompakt bir sözdizimini tercih etmesidir.
Uzun cevap:
Fonksiyonel programlamanın kendisi okunabilir veya okunamaz olamaz, çünkü bu bir kod yazma tarzı değil, bir paradigmadır. Örneğin C # 'da fonksiyonel programlama şöyle görünür:
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)));
ve Java, C # veya benzeri dillerde yeterli deneyime sahip herhangi bir kişi tarafından okunabilir kabul edilir.
Dil sözdizimi, popüler OOP dillerine kıyasla birçok işlevsel dil için (Haskell ve F # dahil) daha kompakttır ve sade İngilizce sözcük yerine sembollere tercih eder.
Bu, FP dışındaki diller için de geçerlidir. Popüler OOP dillerini, daha fazla İngilizce kelime kullanma eğiliminde olan daha az popüler olanlarla karşılaştırırsanız, sonuncusu programlama deneyimi olmayan kişiler için anlaşılması daha kolay olur.
Karşılaştırmak:
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;
}
için:
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;
}
Aynı şekilde:
var a = ((b - c) in 1..n) ? d : 0;
hayali bir dilde şöyle ifade edilebilir:
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
Kısa sözdizimi ne zaman daha iyidir?
Yeni başlayanlar için daha ayrıntılı sözdizimini anlamak daha kolay olsa da, deneyimli geliştiriciler için daha kompakt sözdizimi daha kolaydır. Daha kısa kod yazmak daha az karakter anlamına gelir, bu da daha fazla üretkenlik anlamına gelir.
Özellikle, bir kişiyi sözdiziminden çıkarılabilecek bir şeyi belirtmek için bir anahtar kelime yazmaya zorlamak mantıklı değildir.
Örnekler:
PHP'de function
, bunu yapmak için özel bir neden olmaksızın, her işlev veya yöntemden önce yazmanız gerekir .
Ada, özellikle otomatik tamamlama ile doğru IDE olmadığından, geliştiricileri birçok İngilizce kelime yazmaya zorladığı için beni her zaman dehşete düşürdü. Son zamanlarda Ada'yı kullanmadım ve resmi eğitimleri bitti, bu yüzden örnek veremem; herhangi birinin bir örneği varsa, cevabımı değiştirmekten çekinmeyin.
Sözdizimi 1..n
birçok FP (ve Matlab) 'de kullanılan, ile ikame edilmiş olabilir between 1, n
ya da between 1 and n
ya da between (1, n)
. between
Anahtar kelime çok daha kolay dil sözdizimi aşina olmayan, ama yine de, iki nokta yazmak için çok daha hızlı insanlar için anlaşılması mümkün kılar.