Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Paradigmas]¿Qué es declaratividad?
Autor Mensaje
Aye Sin conexión
Rock Admin
.
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.154
Agradecimientos dados: 71
Agradecimientos: 429 en 53 posts
Registro en: Mar 2008
Mensaje: #1
[Paradigmas]¿Qué es declaratividad? Dudas y recomendaciones Paradigmas de Programación
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 =)

[Imagen: digitalizartransparent.png]
08-12-2010 13:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
guidok Sin conexión
Secretario de la SAE
Sin estado :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 451
Agradecimientos dados: 22
Agradecimientos: 87 en 23 posts
Registro en: Dec 2008
Mensaje: #2
RE: [Paradigmas]¿Qué es declaratividad?
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!!
(Este mensaje fue modificado por última vez en: 09-12-2010 15:41 por guidok.)
09-12-2010 15:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Aye Sin conexión
Rock Admin
.
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.154
Agradecimientos dados: 71
Agradecimientos: 429 en 53 posts
Registro en: Mar 2008
Mensaje: #3
RE: [Paradigmas]¿Qué es declaratividad?
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 =) )

[Imagen: digitalizartransparent.png]
09-12-2010 15:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.