ventajas programacion preguntas paradigmas orientada objetos imperativa funcional ejemplos desventajas functional-programming procedural-programming structured-programming

functional programming - programacion - ¿Cuál es la diferencia entre programación funcional, estructurada y de procedimiento?



programacion funcional vs orientada a objetos (3)

He leído algunos artículos sobre todos los temas, pero no entiendo las diferencias.


La programación estructurada es un término antiguo que creo que abarcaría funcional, de procedimiento y mucho más. Básicamente significa usar estructuras explícitas de flujo de control en lugar de saltar directamente de la instrucción a la instrucción.

La programación funcional y procedimental son, en ese sentido, paradigmas estructurados. La programación funcional también es una programación declarativa; la estructura que se le da a su código corresponde a su significado; un programa es una función que cambia el estado del mundo. La programación procedimental es lo que consideraría una programación "típica" en cualquier lenguaje C o sus descendientes, incluidos los lenguajes OO como Java y C ++. Un programa es una serie de instrucciones que se ejecutarán en serie e invocar subprocedimientos a lo largo del camino.

O, como se lo ha descrito de manera famosa:

La programación funcional es como describir su problema a un matemático. La programación imperativa es como dar instrucciones a un idiota.

--- arcus, #scheme on Freenode


La programación funcional usa funciones como elementos de primera clase. Hacer uso de funciones de orden superior (tomar y / o devolver funciones); lo que lleva a construcciones poderosas y un código bien factorizado. Algunas personas se centran también en el aspecto de pureza de FP, lo que quiere decir que las funciones siempre deben devolver el mismo resultado, dada la misma entrada. Estos, creo, son los dos pilares básicos de FP. También veo que se evitan los efectos secundarios porque, en esencia, se abstraen un poco de las instrucciones de carga / nivel de la máquina de la tienda.

La programación estructurada se remonta al documento "Considerado perjudicial" de Djikstra. Significa utilizar las estructuras if / then / else / elif, do / while / until / for loops, etc. en lugar de recurrir a goto. Básicamente se abstrae un poco de las instrucciones de comparación / nivel de máquina de ramificación. La programación estructurada es ortogonal a la programación funcional y de procedimiento.

La programación procedimental, creo, se refiere a la programación con "subrutinas" imperativas (en oposición a "funciones" puras) que consisten generalmente en una serie de "enunciados" (en oposición a "expresiones") que dejan atrás los efectos secundarios.


Ver también:

  • ¿Puede alguien darme ejemplos de programación funcional versus programación imperativa / procesal?
  • OOP vs Programación funcional vs Procedural
  • realmente entendiendo la diferencia entre procedural y funcional