Respuesta corta:
Uno de los elementos que hacen que la gente diga que el código de programación funcional es difícil de leer es que da preferencia a una sintaxis más compacta.
Respuesta larga:
La programación funcional en sí misma no puede ser legible o ilegible, ya que es un paradigma, no un estilo de escritura de código. En C # por ejemplo, la programación funcional se ve así:
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)));
y cualquier persona con experiencia suficiente en Java, C # o lenguajes similares lo considerará legible.
La sintaxis del idioma, por otro lado, es más compacta para muchos idiomas funcionales (incluidos Haskell y F #) en comparación con los lenguajes OOP populares, dando preferencia a los símbolos en lugar de palabras en un lenguaje sencillo.
Esto también se aplica a idiomas fuera de FP. Si comparas los idiomas OOP populares con algunos menos populares que tienden a usar más palabras en inglés, las últimas se sentirían más fáciles de entender para las personas sin experiencia en programación.
Comparar:
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;
}
a:
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;
}
De la misma manera:
var a = ((b - c) in 1..n) ? d : 0;
podría expresarse en un lenguaje imaginario como:
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
¿Cuándo es mejor la sintaxis más corta?
Si bien una sintaxis más detallada es más fácil de entender para un principiante, una sintaxis más compacta es más fácil para los desarrolladores experimentados. Un código más corto significa menos caracteres que escribir, lo que significa más productividad.
Especialmente, realmente no tiene sentido forzar a una persona a escribir una palabra clave para indicar algo que puede deducirse de la sintaxis.
Ejemplos:
-
En PHP, debe escribir function
antes de cada función o método, sin ninguna razón específica para hacerlo.
-
Ada siempre me horrorizó por obligar a los desarrolladores a escribir muchas palabras en inglés, especialmente porque no hay un IDE correcto con autocompletar. No he usado Ada recientemente y su tutorial oficial está caído, así que no puedo dar un ejemplo. Si alguien tiene un ejemplo, siéntase libre de modificar mi respuesta.
-
La sintaxis 1..n
, utilizada en muchos FP (y Matlab), podría reemplazarse por between 1, n
o between 1 and n
o between (1, n)
. La palabra clave between
hace que sea mucho más fácil de entender para las personas que no están familiarizadas con la sintaxis del idioma, pero aún así, dos puntos son mucho más rápidos de escribir.