Ok, el concepto más importante y el que más me cuesta.
Mis queridos ayudantes paradigmáticos que andan dando vueltas por el foro. Sólo encontré una solución entendible (la de Imakuni) que me ayudó un poco a definir formalmente qué es declaratividad.
Alguien más podrá ayudarme? Se agradecen las intenciones
Hola!
No soy ayudante de paradigmas pero estoy preparando el final para este sábado jajaj, escribo más o menos lo que se:
Una solución es más declarativa que otra cuando tiene menos detalle sobre el algoritmo, y se delega al motor la manera de resolver (y a uno no le interesa de qué manera el motor lo termina resolviendo).
Es decir, uno al ser declarativo se centra en el "qué" y no en el "cómo".
Cuánto menos detalle algorítmico tiene la solución, más declarativa es.
A ver por ejemplo, si tenemos el siguiente requerimiento: "dada una lista de números filtrar los que son pares".
Si lo pensamos en un lenguaje imperativo, la solución en pseudocódigo sería algo así:
(partiendo de la base de que tenemos un vector con número cargados por ejemplo)
contador2:=0
for i=1 to finVector
if (vector[i] mod 2 = 0) {vectorConLosPares[contador2]:=vector[i]; contador2:=contador2 + 1}
Sería una cosa medio engorrosa, y como programadores le tenemos que dar mucha bola al algoritmo, manejando contadores, y estructuras de bajo nivel.
En cambio si lo pensamos en un lenguaje del paradigma funcional como Haskell, la solución es esta:
pares unaLista = filter even unaLista
ó
pares unaLista = [x | x<-unaLista, even x]
Como podés notar, la solución en Haskell, es mucho más declarativa que la solución en un lenguaje imperativo.
A mi no me importa cómo el motor de Haskell termina resolviendo el filter o la lista por comprensión en el segundo caso. Seguramente haya enmascarados muchos contadores, saltos condicionales, y demás cosas de bajo nivel, pero a mi no me interesa.
Espero que te haya servido!!
Gracias, muchas gracias Guidok.
Si vas el sábado de seguro nos vamos a encontrar allá
(lo de ayudantes iba para los que ayudan, no para los que ejercen como ayudantes en la facu, je
)