¿Cuál es la diferencia entre los paradigmas de programación declarativa y procedimental ? ¿Podría proporcionar algunos ejemplos?
¿Qué otros paradigmas de programación existen?
¿Cuál es la diferencia entre los paradigmas de programación declarativa y procedimental ? ¿Podría proporcionar algunos ejemplos?
¿Qué otros paradigmas de programación existen?
Respuestas:
Imperativo
Hay varios subparadigmas del paradigma de programación imperativa, como los paradigmas de programación procedimental o orientada a objetos.
En el paradigma de programación imperativa, usted describe el algoritmo paso a paso, en varios grados de abstracción.
Ejemplos de lenguajes de programación que admiten el paradigma procedimental:
Orientado a objetos
Por lo general, se refiere a lenguajes que exhiben una jerarquía de tipos que heredan tanto los métodos como el estado de los tipos base a los tipos derivados, pero también incluye el inusual JavaScript basado en prototipos.
Ejemplos de lenguajes de programación que admiten el paradigma OO:
Declarativo
Hay varios subparadigmas del paradigma de programación declarativa, como los paradigmas de programación funcional o lógica.
En el paradigma de programación declarativa, usted describe un resultado o una meta, y lo obtiene a través de una " caja negra ". Lo opuesto al imperativo.
Ejemplos de lenguajes de programación que admiten el paradigma de programación declarativa:
Funcional
La programación funcional enfatiza la aplicación de funciones sin efectos secundarios y sin estado mutable. Los sistemas declarativos anteriores exhiben ciertos aspectos de la programación funcional.
Ejemplos de lenguajes de programación que admiten el paradigma funcional declarativo:
fuente
La programación declarativa es donde dices lo que quieres 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 procedimental, porque las consultas no especifican los pasos para producir el resultado.
fuente
Déjame darte un ejemplo del mundo real: necesito una taza de té.
Procesal:
Declarativo:
En un lenguaje procedimental, usted define todo el proceso y proporciona los pasos para hacerlo. Simplemente proporcione pedidos y defina cómo se atenderá el proceso.
En un lenguaje declarativo, simplemente establezca el comando u orden y deje que el sistema indique cómo completar esa orden. Solo necesita su resultado sin profundizar en cómo se debe hacer.
fuente
Programación procedimental:
En la programación de procedimientos, cuando el programa se inicia, sigue un conjunto de instrucciones. Las instrucciones pueden cambiar según el contenido de algún archivo o memoria, pero en general, no varía mucho. la entrada al programa normalmente no proviene de la entrada del usuario en tiempo real, sino de un conjunto de datos pre-recopilados.
Programación declarativa:
En la programación impulsada por eventos declarativos se centraliza en torno a un cuerpo de datos con acciones opcionales que el programa puede realizar. Por ejemplo, cada "evento" en un procesador de texto es cualquier cambio de mouse o teclado (o archivo) que afecte los datos, los documentos. No es necesario realizarlas en ningún orden. La programación impulsada por eventos toma la forma de pequeños programas (controladores de eventos) que todos 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.
fuente
La principal diferencia entre dos lenguajes de programación es que, en la programación procedimental, le decimos a la computadora cómo resolver el problema y en la programación declarativa, le decimos a la computadora qué problema queremos resolver.
fuente
Para abordar el comentario ansible y tal vez proporcionar un ejemplo entre las diferencias de los dos. Ansible es procedimental donde algo como títere o terraform son declarativos. Por ejemplo, crea un archivo yaml ansible para implementar 10 instancias ec2 como esta:
-ec2: count: 10 image: ami-058c6e5b73b074cd2 instance_type: t2.micro
Si tuviera que ejecutar ese archivo dos veces, terminaría con 20 instancias t2.micro ec2. Si escribió el equivalente en un lenguaje declarativo como terraform y lo ejecutó dos veces, solo tendría 10 instancias t2.micro ejecutándose sin importar cuántas veces lo haya ejecutado. Los lenguajes declarativos especifican el estado final. Los lenguajes de procedimiento simplemente hacen lo que usted dice sin tener en cuenta el estado actual o pasado.
fuente
Entonces, ¿YAML es un lenguaje de programación declarativo? Porque definimos lo que queremos en lugar de escribir la lógica real.
Estoy preguntando esto porque si alguien conoce Ansible, que es una herramienta de administración de configuración, usa YAML pero aún se encuentra en la categoría de lenguaje procedimental.
fuente
En el enfoque procedimental, 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 de procedimiento o declarativo que implementé en ambos enfoques.
Como verá en el ejemplo, en el enfoque declarativo, no es necesario que indique CÓMO resolver el problema.
fuente