Autor Tema: Programación funcional - Programación orientada a objetos

0 Usuarios y 1 Visitante están viendo este tema.

24 Septiembre, 2008, 04:51 pm
Leído 3915 veces

zeo

  • Junior
  • Mensajes: 66
  • Karma: +0/-0
  • Sexo: Masculino
Hola

¿Cuál es la diferencia entre "programación funcional" y "programación orientada a objetos"?

Entiendo algo de c++ (prog. orientada a objetos), y en unos días empezaré a estudiar Haskell (prog. funcional) y no sé practicamente de que va. Imagino que me darán una introducción al tema, pero a mi me gustaría comparar ambos estilos. A ver si alguien sabría orientarme.

Saludos.

24 Septiembre, 2008, 06:09 pm
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 46,704
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola

 No había oído hablar de la programación funcional. Pero estas notas quizá puedan darte una idea:

 http://people.cs.uu.nl/jeroen/courses/fp-sp.pdf

Saludos.

24 Septiembre, 2008, 07:49 pm
Respuesta #2

djgera

  • Novato
  • Mensajes: 122
  • Karma: +0/-0
  • Sexo: Masculino
    • Mi página personal
Hola, la diferencia es bastante grande.

Te hago un pequeño, muy superficial, resumen y comparación:

En ambas, se trata de encarar un problema desde dos puntos de vista completamente diferentes: mientras que en la programación orientada a objetos es imperativa, la programación funcional es declarativa.

En general, en la programación imperativa está presente el concepto estados: tu programa a medida que se ejecuta va cambiando su estado. En el caso concreto de los objetos, lo que cambia es el estado de los mismos.

Una máquina de Turing (una máquina abstracta), es una máquina de estados y se relaciona directamente con la forma imperativa de programación.

La programación funcional nace del cálculo lambda de Alonso Church, y se basa directamente en el concepto de funciones matemáticas. Las funciones no producen efectos secundarios, esto quiere decir, que no modifican cosas externas, y siempre a valores iguales de entrada se obtiene lo mismo de salida. Se utiliza muchísimo el concepto de recursividad, no existen los ciclos iterativos por ejemplo, todo se hace de forma recursiva, no hay asignaciones destructivas.

Digamos que en la programación imperativa, vos pones atención en que instrucciones ejecutar para resolver un problema, mientras que en la declarativa, pones atención, en restricciones y reglas, que funcionan de forma independiente para que luego mediante un mecanismo interno interactúen entre ellas.

Espero que te de una leve idea.

¡Salut!

24 Septiembre, 2008, 08:37 pm
Respuesta #3

zeo

  • Junior
  • Mensajes: 66
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Gracias el_manco por las notas, les iré echando un vistazo; gracias también a djgera por su comentario, creo que voy haciéndome una idea de lo que debo ir "olvidando" de c++. Puesto que sólo había tocado este lenguaje, ya sospechaba que la programación funcional no iba a tener nada que ver. En cuanto a lo que comentas sobre programación funcional, pues me asaltan muchas dudas, ya que yo tenía ya mi visión de la programación bastante reducida, pero primero toca estudiar, y luego preguntar  ;).

Saludos.