procedural-programming - son - programacion imperativa
¿Diferencia entre programación declarativa y procesal? (5)
Durante una de mis entrevistas, me preguntaron la diferencia entre la programación declarativa y los tipos de programación procedimental .
¿Cuál es la diferencia entre ellos con ejemplos?
PD: ¿Podrían decirme además de estos dos y la programación orientada a objetos, qué tipo de lenguajes de programación hay? Porque también pueden preguntar la diferencia entre otros lenguajes de programación. Y hay preguntas similares a esta pero demasiado dispersas.
En el enfoque de procedimientos, codifica sus instrucciones para lograr el resultado. En el enfoque declarativo, define lo que debe resolverse como el conocimiento para resolver el problema. Eche un vistazo al ejemplo de enfoque procesal o declarativo I implementado en ambos enfoques.
Como vería en el ejemplo, en el enfoque declarativo, no necesita instruir CÓMO resolver el problema.
En palabras simples, tengo un ejemplo del mundo real en el que necesito una taza de té.
Procesal:
- Ir a la cocina
- Obtén azúcar, leche y té,
- Mézclalos y calienta sobre fuego hasta que hierva
- Ponlo en una taza y tráemelo
Declarativo:
- Tráeme una taza de té.
En el lenguaje de procedimientos, usted define todo el proceso y proporciona los pasos para hacerlo. Usted solo proporciona pedidos y define cómo se servirá el proceso.
En lenguaje declarativo, simplemente establece el comando o el orden, y deja que sea en el sistema cómo completar ese orden. Solo necesitas el resultado sin tener que indagar cómo hacerlo.
Saludos,
La programación declarativa es donde usted dice lo que quiere sin tener que decir cómo hacerlo. Con la programación de procedimientos, debe especificar los pasos exactos para obtener el resultado.
Por ejemplo, SQL es más declarativo que de procedimiento, porque las consultas no especifican los pasos para producir el resultado.
Declarativo
Describe un resultado y obténgalo a través de una caja negra. Lo opuesto a imperativo. Ejemplos:
- yacc
- Copa del árbol
- SQL
- Expresiones regulares
- lex
- XSLT
- marcado, troff, CSS, VHDL
Procedimental o Imperativo
Describe el algoritmo y los pasos del proceso, en varios grados de abstracción.
- C, la mayoría de los idiomas heredados
- PHP, en su mayoría
- en cierto sentido, todos los idiomas principales
Orientado a objetos
- Tiende a estar en la categoría de procedimiento, por lo general se refiere a los idiomas que exhiben una jerarquía de tipos que heredan ambos métodos y estados desde los tipos base a los tipos derivados, pero también incluye el JavaScript basado en prototipos inusual. Una dimensión separada de las otras categorías aquí.
Funcional
Usted dejó este fuera. La programación funcional enfatiza la aplicación de funciones sin efectos secundarios y sin estado variable. Los sistemas declarativos anteriores muestran ciertos aspectos de la programación funcional.
- Esquema
- Erlang
- OCaml
- Haskell
- Lisp, dependiendo (Lisp quizás merece su propia categoría única)
- Clojure, algo
- Ruby, algo menos
- F#
- Scala
Programación procesal:
En la programación de procedimientos, cuando el programa comienza, sigue un conjunto de instrucciones. Las instrucciones pueden cambiar en función de algún archivo o contenido de memoria, pero, en general, no varía mucho. la entrada al programa generalmente no proviene de la entrada del usuario en tiempo real, sino de un conjunto de datos previamente reunidos.
Programación Declarativa:
En la programación basada en eventos declarativos centraliza alrededor de un cuerpo de datos con acciones opcionales que el programa puede asumir. Por ejemplo, cada "evento" en un procesador de textos es cualquier mouse o cambio de teclado (o archivo) que afecte los datos, el documento (s). No es necesario que se realicen en ningún orden. La programación impulsada por eventos toma la forma de pequeños programas (manejadores de eventos) que trabajan en un conjunto común de datos, de modo que cada pequeño programa puede usar los mismos datos, el documento en este ejemplo.