Pregunta

Estoy estudiando dos paradigmas principales de la programación, declarativa y paradigma imperativo. Estoy teniendo dificultades para seguir las declaraciones ambiguas hechas en mi libro de texto y Wikipedia, por ejemplo:

declarativa: - se centra en "lo que" el equipo está por hacer. - está libre de "efectos secundarios" - sin flujo de control

imperativo: - se centra en "cómo" el equipo debe hacerlo. - la forma de hacerlo en términos de secuencia de acciones

¿cómo diferenciar los dos paradigmas de programación? Si se pudiera ampliar las declaraciones hechas anteriormente, será de gran ayuda.

¿Fue útil?

Solución

SQL es el lenguaje declarativo clásica: se dice "mira esta mesa, y me das todas las filas que cumplen con estos criterios" (y en la vida real se utiliza une, listas de selección, lo que sea, pero es la misma instrucción básica) . Como se señaló anteriormente, esta declaración indica a la computadora lo que quiere, no cómo hacerlo.

A nivel interno, el sistema de base de datos se lleva a cabo en un lenguaje como C, y será traducido a su consulta SQL en las siguientes medidas imperativas:

while (another row to process)
    read row from disk
    for (every test)
        if (test fails)
            continue to next row
    add row to result-set

Una de las principales cosas a tener en cuenta aquí es el flujo de control explícito: mientras , de y si . Estos no aparecerán en los lenguajes declarativos.

Otros consejos

secuencialmente programación imperativa ejecuta sentencias que pueden manipular un estado subyacente.

Algunos programación imperativa en Java:

Customer customer = null;

// first create a customer and have the variable reference it
customer = new Customer(); 
// the state of the customer variable has changed

// set the id on whatever object is *currently* being referenced by the variable
customer.setId(1);
// the state of the Customer object has changed

customer.setFirstName("Bob");
customer.setLastName("McBob");

Tenga en cuenta que si lo hace lo anterior fuera de orden, que daría lugar a una excepción de puntero nulo:

Customer customer = null;
customer.setFirstName("Foo");   // the customer variable is still null at this point
customer = new Customer();   // too late!

La programación declarativa no tiene un estado o una orden, sólo declaraciones.

Aquí está un ejemplo sencillo - este fragmento XML podría considerarse declarativo:

<NewCustomers>
  <Customer>
    <Id>1</Id>
    <FirstName>Bob</FirstName>
    <LastName>McBob</LastName>
  </Customer>
</NewCustomers>

No habla acerca de cómo conseguirá construido el objeto de cliente, simplemente declara las partes. ¿Cómo obtiene lo anterior es interpretado y ejecutado hasta el entorno de programación.

HTML y los navegadores web son bastante buenos ejemplos de cada paradigma, respectivamente. HTML (y CSS) son declarativas idiomas - le dicen al navegador web lo para marcar, pero no ¿Cómo para hacerlo. En otras palabras, una línea de código como <h1>My title</h1> le dice al navegador web lo para mostrar - una etiqueta de cabecera con el texto "Mi título" - pero ahora la forma en realidad para pintar en la pantalla <. / p>

El navegador web, sin embargo, se escribe generalmente en un imperativo manera. Se necesita esas definiciones marcado declarativo y de hecho da instrucciones al ordenador ¿Cómo para dibujar los elementos en la pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top