Ver Mensaje Individual
  #8  
Antiguo 19-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Y esto, ¿no es como un retroceso? ¿De qué va este haskell? ¿Es similar a lisp? ¿En qué áreas se usa?

// Saludos
Retroceso en que?

Algo que me tomo tiempo entender es que no existe una linea ascendete tipo:

Programacion Imperativa < Estructural < Objetos

Sino familias de lenguajes. Por lo tanto, no hay retroceso en pasar de una familia a otra (algo que hacemos todo el tiempo, por ejemplo al usar un lenguaje declarativo como SQL o HTML).

La programacion funcional es la OPUESTA a la orientada a objetos. En OO se tiende a enfatizar todo en el sustantivo, mientras en la funcional en el paso de datos.

La primera vez que entendi la diferencia fue leyendo:

http://steve-yegge.blogspot.com/2006...-of-nouns.html

P.D: Al igual que todo "estilo", la programacion funcional puede ser incorporada en otros lenguajes que son OO, y la OO se puede introducir en otros lenguajes no OO (como por ejemplo, cuando se simular OO en C).

Esto significa que no hay que sacrificar -del todo- la herramienta que conozco ahora, por una totalmente diferente.

Un ejemplo simple, en python (python es multi-paradigma: OO, procedural, funcional, imperativo):

Tradicional, imperativo (con efectos colaterales):
Código PHP:
amigos = ['a','b','c']

amigos.sort()

for 
amigo in amigos:
    print 
amigo.upper() 
Funcional (sin efectos colaterales):
Código PHP:
amigos = ['a','b','c']

[
amigo.upper() for amigo in sorted(amigos)] 
Una buena discusion de cuando se usa un estilo u otro:
http://stackoverflow.com/questions/2...ed-programming

La programacion funcional ha sido casi siempre un "nicho" oscuro, ppalmente porque sus proponentes son muy de la academia y meten una terminologia y casos de usos muy cienti/matematico/esoterico que es dificil de resonar con el programador promedio, pero ultimamente sus conceptos mas utiles se han ido pegando en varios lenguajes. Por ejemplo:

Soporte a Closure y funciones de primero orden

Uso de funciones anonimas / lambdas

Tambien han ido surgiendo lenguajes como F#, Scala, Clojure que tiene un punto de vista mas "normal" de la programacion funcional y que como corren sobre un runtime como .NET/Java permiten importar codigo OO.
__________________
El malabarista.
Responder Con Cita