He leído algunos artículos sobre todos los temas, pero no entiendo las diferencias.¿Cuál es la diferencia entre programación funcional, estructurada y de procedimientos?
Respuesta
La programación estructurada es un término antiguo que creo abarcar 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 de procedimiento 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 ha descrito famoso:
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 es el uso de 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 de procedimiento, 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 efectos secundarios.
Diría que la programación de procedimientos es un subparadigma de la programación imperativa, como también se indica aquí: https: //en.wikipedia.org/wiki/Imperative_programming – nbro
Muy cierto, voy a eliminar el "(a veces 'programación imperativa')" a un lado. El procedimiento es, de hecho, un _subset_ de imperativo. Es bastante posible programar imperativamente _sin_ "procedimientos" en algunos idiomas. Sin embargo, la diferencia clave entre un "procedimiento" y una "función", creo, es que la primera es imperativa. A eso me refería. – AshleyF
- 1. ¿Cuál es la diferencia formal entre un lenguaje de nivel funcional y uno funcional?
- 2. ¿cuál es la diferencia entre fundición c-funcional y fundición funcional?
- 3. ¿Programación estructurada y generadores Python?
- 4. Cuál es la diferencia entre la programación de Seaside y otra programación web
- 5. ¿Cuál es la diferencia entre dict() y {}?
- 6. Cuál es la diferencia entre = y: =
- 7. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 8. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 9. ¿cuál es la diferencia entre:.! y: r !?
- 10. ¿Cuál es la diferencia entre ".equals" y "=="?
- 11. ¿Cuál es la diferencia entre {0} y ""?
- 12. ¿Cuál es la diferencia entre .ToString (+) y ""
- 13. Cuál es la diferencia entre $ (...) y `...`
- 14. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 15. ¿Cuál es la diferencia entre + = y = +?
- 16. ¿Cuál es la diferencia entre " " y ""?
- 17. Cuál es la diferencia entre $ y jQuery
- 18. ¿Cuál es la diferencia entre wsHttpBinding y ws2007HttpBinding?
- 19. Diferencia entre una excepción de C++ y una excepción estructurada
- 20. ¿Cuál es la diferencia entre un ayudante y un parcial?
- 21. ¿Cuál es la diferencia entre un programa de procedimiento y un programa orientado a objetos?
- 22. ¿Cuál es la diferencia entre GEM_HOME y GEM_PATH?
- 23. ¿Cuál es la diferencia entre salir y regresar?
- 24. ¿Cuál es la diferencia entre copiar y clonar?
- 25. ¿Cuál es la diferencia entre (cadena [] args) y System.Environment.CommandLine?
- 26. ¿Cuál es la diferencia/relación entre AVR y Arduino?
- 27. ¿Cuál es la diferencia entre * .bat y * .cmd?
- 28. ¿Cuál es la diferencia entre Objective-C y Cocoa?
- 29. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 30. ¿Cuál es la diferencia entre devm_kzalloc() y kzalloc() en la programación del controlador de Linux
La cita no es realmente pertinente para ayudar a resolver el problema original de la OP, ya que la cita es sobre la diferencia entre Los paradigmas de programación funcional e imperativa (sí, a pesar de que la programación de procedimientos generalmente se considera un subparadigma de programación imperativa) Además, argumentaría que Java en realidad no es compatible con la programación procedimental, ya que en Java todo es una clase o un objeto, a excepción de las nuevas características de Java 8, como las funciones lambda, que estarían relacionadas con la programación funcional. Entonces, tengo que rechazar esta respuesta. – nbro