2011-11-19 5 views
5

leí los siguientes párrafos sobre la arquitectura de Microsoft .Net: Architecting Applications for the Enterprise, por Dino Esposito y Andrea Saltarello:¿Cuál es la diferencia entre la programación declarativa y la imperativa?

Cada vez que usted toma un enfoque declarativo a la codificación en lugar de un enfoque imperativo , va a delegar algunas responsabilidades a algún otro capa de código, una capa que no controlas por completo. Entonces, usted es con la esperanza de que la herramienta intermedia lo entienda correctamente y no encontrará ningún problema en el camino. En el desarrollo de software , delegar a un tercero hace que el desarrollo sea más rápido, pero debe garantizar que los usuarios obtengan exactamente lo que usted desea .

Esto no significa que no deba confiar en Visual Studio 2008 o productos similares basados ​​en asistentes. El punto es algo completamente diferente. En un sistema grande, probablemente desarrollado por varios equipos, la programación declarativa clásica simplemente no funciona. Debe tener en su presentación una capa de código que decida qué mostrar, dónde leer las configuraciones y cómo aplicarlas. La programación declarativa sigue siendo una gran opción, pero solo si se escribe el motor y los asistentes.

¿Puede alguien explicarme en palabras simples qué exactamente son los programas declarativos e imperativos?

+0

ver esta [SO post] [1] para un compaison de f # y C# [1]: http : //stackoverflow.com/questions/952318/what-are-the-benefits-of-using-c-sharp-vs-f-or-f-vs-c –

+0

@AshokPadmanabhan: apenas se aplica, porque es sobre C# frente a F #, y solo parcialmente sobre programación imperativa vs * programación funcional * (que es un subconjunto bastante específico de programación declarativa). – delnan

+0

¿Cómo se relacionan incluso los asistentes y la programación declarativa? – CodesInChaos

Respuesta

2

declarativa programación - ¿Qué debe hacerse

programación imperativa - ¿Cómo lo que quiere debe hacerse.

La programación declarativa requiere que los desarrolladores digan lo que se debe hacer. La programación imperativa requiere que los desarrolladores definan paso a paso cómo se debe ejecutar el código.

Ejemplo: LINQ en C# es declarativo.

Leer aquí para obtener más: http://www.informit.com/articles/article.aspx?p=1330154&seqNum=4

+1

LINQ es una programación funcional simple IMO. La vinculación de datos, los atributos de validación, etc. sería lo que yo llamo declarativo. – CodesInChaos

+0

@CodeInChaos - Programación funcional y declarativa no son mutuamente excluyentes. Y LINQ es declarativo porque usted dice lo que quiere, y el sistema sabe cómo obtenerlo, ya sea de xml, sql, etc. – manojlds

7

Declarativo - Describiré lo que quiero que hagas, lo averiguas (SQL, XSLT).

Imperativo - Le diré exactamente qué hacer, un paso a la vez (C#, Java).

+1

SQL suena más funcional que declarativo para mí. Creo que XSLT es solo una programación funcional con una sintaxis xml, pero no sé lo suficiente para estar seguro. – CodesInChaos

+0

@CodeInChaos - Ambos han sido descritos como declarativos. Acabo de echar un vistazo a las entradas de wikipedia para ambos, que están de acuerdo con esto. – Oded

7

ejemplos.

programación declarativa:

<asp:DropDownList runat="server" DataSourceID="ObjectDataSource1" /> 
<asp:ObjectDataSource runat="server" ID="ObjectDataSource1" ItemUpdating="..." /> 

de programación imperativo:

ObjectDataSource source = new ObjectDataSource(); 
source.ItemUpdating += ...; 

DropDownList list = new DropDownList(); 
list.ID = ""; 
list.DataSource = source; 
list.DataBind(); 
Cuestiones relacionadas