Jawaban singkat:
Salah satu elemen yang membuat orang mengatakan bahwa kode pemrograman fungsional sulit dibaca adalah memberikan preferensi pada sintaksis yang lebih ringkas.
Jawaban panjang:
Pemrograman fungsional itu sendiri tidak dapat dibaca atau tidak dapat dibaca, karena ini adalah paradigma, bukan gaya penulisan kode. Dalam C # misalnya, pemrograman fungsional terlihat seperti:
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)));
dan akan dianggap dapat dibaca oleh setiap orang dengan pengalaman yang cukup di Java, C # atau bahasa serupa.
Sintaks bahasa, di sisi lain, lebih kompak untuk banyak bahasa fungsional (termasuk Haskell dan F #) dibandingkan dengan bahasa OOP populer, memberikan preferensi pada simbol daripada kata dalam bahasa Inggris sederhana.
Ini juga berlaku untuk bahasa di luar FP. Jika Anda membandingkan bahasa OOP populer dengan beberapa bahasa yang kurang populer yang cenderung menggunakan lebih banyak kata bahasa Inggris, yang terakhir akan terasa lebih mudah dipahami bagi orang-orang yang tidak memiliki pengalaman pemrograman.
Membandingkan:
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;
}
untuk:
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;
}
Di jalan yang sama:
var a = ((b - c) in 1..n) ? d : 0;
dapat diekspresikan dalam bahasa imajiner sebagai:
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
Kapan sintaks yang lebih pendek lebih baik?
Meskipun sintaksis yang lebih banyak lebih mudah dipahami oleh pemula, sintaksis yang lebih ringkas lebih mudah bagi pengembang yang berpengalaman. Kode yang lebih pendek berarti lebih sedikit karakter yang harus diketik, yang berarti lebih banyak produktivitas.
Terutama, itu benar-benar tidak masuk akal memaksa seseorang untuk mengetikkan kata kunci untuk menunjukkan sesuatu yang dapat disimpulkan dari sintaksis.
Contoh:
Di PHP Anda perlu mengetik function
sebelum setiap fungsi atau metode, tanpa alasan khusus untuk melakukannya.
Ada selalu membuatku ngeri karena memaksa para pengembang mengetik banyak kata-kata bahasa Inggris, terutama karena tidak ada IDE yang benar dengan pelengkapan otomatis. Saya belum menggunakan Ada baru-baru ini dan tutorial resmi mereka turun jadi saya tidak bisa memberikan contoh; jika ada yang punya contoh, silakan memodifikasi jawaban saya.
Sintaksnya 1..n
, yang digunakan dalam banyak FP (dan Matlab), dapat diganti oleh between 1, n
atau between 1 and n
atau between (1, n)
. Kata between
kunci membuatnya lebih mudah dimengerti bagi orang yang tidak terbiasa dengan sintaksis bahasa, tetapi tetap saja, dua titik lebih cepat untuk diketik.