2009-10-25 11 views
70

Durante una de mis entrevistas, me preguntaron la diferencia entre Programación declarativa y Procedural Programming tipos.¿Diferencia entre programación declarativa y procesal?

¿Cuál es la diferencia entre ellos con ejemplos?

P.S: ¿Podría decirme además de estas 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.

+2

Pregunta similar: http://stackoverflow.com/questions/1784664/what-is-the-difference-between-declarative-and-imperative-programming?lq=1 – daCoda

+1

Lamentablemente, no hay ejemplo código en cualquiera de las respuestas. –

Respuesta

83

declarativa

describir un resultado y lo consigue a través de un cuadro negro. Lo contrario de imperativo. Ejemplos:

  • yacc
  • copa de árbol
  • SQL
  • expresiones regulares
  • lex
  • XSLT
  • marcado, troff, CSS, VHDL

Procedural o Imperativo

Describa el algoritmo y los pasos del proceso, en varios grados de abstracción.

  • C, la mayoría de los lenguajes anteriores
  • PHP, en su mayoría
  • en cierto sentido, todos los idiomas principales

Orientada a Objetos

  • tiende a estar en la categoría de procedimiento, típicamente se refiere a idiomas que exhiben una jerarquía de tipos que heredan ambos métodos y sta desde tipos base a tipos derivados, pero también incluye el JavaScript basado en prototipos inusual. Una dimensión separada de las otras categorías aquí.

funcional

Se dejó éste hacia 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á merece su propia categoría única)
  • Clojure, algo
  • Ruby, algo menos
  • F #
  • Scala
+1

Agregaría lisp a su lista de lenguajes de programación funcionales. – dave

+3

También puede agregar lenguajes lógicos como Prolog. –

+0

@ToonKrijthe, ¿no incluiría Prolog en la lista declarativa? – ChronoFish

51

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.

+0

¿Puede decirme otro tipo de lenguajes de programación además de Declarative, Procedural y OOP? Gracias. – Tarik

+2

+1 para un buen ejemplo en SQL. podemos tener mas ejemplos por favor? – mauris

+5

Mauris: Tal vez no es un lenguaje de programación, pero HTML es declarativo, porque describes lo que quieres (un párrafo con * este bit * en negrita), en lugar de escribir "dibujar cadena, medir cadena, posición de avance, etc." Otro ejemplo es Prolog, donde un "programa" es un conjunto declarativo de hechos y relaciones/deducciones, y una consulta. El motor de Prolog averigua cómo evaluar la consulta: no es necesario que le diga cómo hacerlo. Finalmente, expresiones regulares: usted describe el patrón en lugar de deletrear los pasos para probar una coincidencia. – itowlson

5

programación de procedimiento:

En la programación de procedimiento, 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 dirigida por eventos declarativa centraliza en torno a un conjunto de datos con las acciones opcionales del programa puede tener en él. 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.

-2

En el enfoque de procedimiento 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 Procedural or Declarative approach que implementé en ambos enfoques.

Como vería en el ejemplo, en el enfoque declarativo, no necesita indicar CÓMO resolver el problema.

+0

Hace referencia a ejemplos fuera del sitio como si estuvieran escritos aquí. Trae tus ejemplos como parte de tu respuesta. – ChronoFish

11

En palabras simples, tengo un ejemplo del mundo real en el que necesito una taza de té.

procedimiento:

  1. Ir a la cocina
  2. obtener el azúcar, la leche y té,
  3. mezclarlos y calentar a fuego hasta que hierva
  4. poner esto en una taza y llevarla para mí

Declaratorio:

  1. Consígueme una taza de té.

En el lenguaje de procedimiento, usted define el proceso completo y le brinda los pasos para hacerlo. Usted solo proporciona pedidos y define cómo se servirá el proceso.

En lenguaje declarativo, simplemente establece el comando o la 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,

+1

Usted confundió declarativo y de procedimiento en la explicación, ¿verdad? – opncow

+1

Actualizado. Gracias. –

Cuestiones relacionadas