2009-05-19 44 views
28

¿Por qué decimos que el lenguaje como C es descendente mientras que los lenguajes OOP como Java o C++ son ascendentes? ¿Tiene esta clasificación alguna importancia en el desarrollo de software?Programación descendente y ascendente

+0

OK.Ahora entiendo que estos enfoques básicamente tienen más que ver con la "forma de pensar" (paradigmas) que los lenguajes particulares. Gracias a todos por sus respuestas. –

Respuesta

55

El enfoque de "arriba hacia abajo" toma una definición de alto nivel del problema y lo subdivide en subproblemas, que luego realiza recursivamente hasta que se llega a piezas que son obvias y fáciles de codificar. Esto a menudo se asocia con el estilo de programación de "descomposición funcional", pero no es necesario.

En la programación "de abajo hacia arriba", identifica las herramientas de nivel inferior que puede componer para convertirse en un programa más grande.

En realidad, casi toda la programación se realiza con una combinación de enfoques. en la programación orientada a objetos, comúnmente se subdivide el problema identificando objetos de dominio (que es un paso de arriba hacia abajo) y refinándolos, y luego recombinándolos en el programa final: un paso de abajo hacia arriba.

-5

C es un lenguaje estructurado y la secuencia de programas es de arriba hacia abajo. comenzando desde el método principal.

mientras que OOP depende del número de clases y objetos. flujo de programa no está en enfoque de arriba abajo en la programación orientada a objetos

+3

C no tiene métodos. El flujo desciende en OOP. Top-down se refiere al diseño, no al flujo del programa. En resumen, no. – rlbond

13

En el desarrollo de arriba hacia abajo se empieza con su función principal, y luego piensa en los principales pasos que debe tomar, luego divide cada uno de esos pasos en sus subpartes, y así sucesivamente.

En la programación ascendente, piense en la funcionalidad básica y las piezas que va a necesitar y edifíquelas. Desarrollas los actores y sus métodos, y luego los unes para formar un todo coherente.

OOP tiende naturalmente hacia abajo hacia arriba a medida que desarrolla sus objetos, mientras que la programación procedimental tiende hacia arriba y hacia abajo cuando comienza con una función y la agrega lentamente.

+0

Esta es una buena explicación –

3

Nunca he oído que la clasificación se aplica a determinados idiomas, sino que es un paradigma de programación - Qué es lo primero llenar los datos (es decir, construir métodos de implementación completos) y luego unirlas (por ejemplo llamarlos de ellos main() método), o comenzar con el flujo lógico y luego completar la implementación?

Puede hacer ambas cosas con ambos tipos de lanzas ... Pero yo diría que es todo lo contrario, en los lenguajes de OOP actuales primero definirá las interfaces, formará la estructura lógica y solo después se preocupará por la implementación , mientras que los lenguajes de procedimiento directos como C, necesita implementar algunos métodos antes de llamarlos.

+0

Tiene toda la razón. La pregunta tiene una declaración falsa. Son solo enfoques que pueden respetarse e implementarse independientemente del lenguaje de programación en uso. Con la complejidad del software moderno, ambos enfoques son mixtos y muchos desarrolladores los utilizan sin ni siquiera darse cuenta. Su respuesta debe ser la aceptada porque es sencilla y no confusa para los principiantes. –

4

Nunca escuché los términos "de arriba hacia abajo" y "de abajo hacia arriba" utilizados de esa manera.

Los términos se usan generalmente para describir cómo se aborda el diseño y la implementación de un sistema de software y, por lo tanto, se aplican a cualquier lenguaje o paradigma de programación.

En "En LISP", Paul Graham utiliza el término "de abajo hacia arriba" ligeramente diferente para significar la extracción continua de funciones comunes en funciones compartidas para que termine creando un nuevo dialecto de nivel superior de LISP que le permita programar términos de su dominio de aplicación. Ese no es un uso común del término. Estos días llamaríamos a eso "refactorización" y "lenguajes incrustados específicos de dominio" (y los antiguos programadores de LISP se burlarían de que LISP haya podido hacerlo desde la década de 1950).

1

Se trata más de un paradigma (orientado a objetos, imperativo, funcional, etc.) que la sintaxis.

De dept-info.labri.fr

programación de abajo hacia arriba es lo contrario de la programación de arriba hacia abajo. Se se refiere a un estilo de programación en una aplicación se construye a partir de primitivas existentes en el lenguaje de programación, y Construir operaciones gradualmente más y más complicados, hasta que el toda la aplicación se ha escrito.

Más adelante en el mismo artículo:

En un lenguaje como C o Java, la programación de abajo hacia arriba toma la forma de construir tipos de datos abstractos a partir de primitivas de la lengua o de lo abstracto existente tipos de datos.

0

En el enfoque descendente, el sistema se formula primero pero no detalla ningún subsistema al principio, y luego cada sistema y su subsistema se definen en gran detalle hasta que se especifique en la base.

e.g.- En un programa C, se necesita declarar las funciones en la parte superior del programa y luego a través de la entrada principal de cada subsistema/subrutina se define con gran detalle.

En la aproximación de abajo hacia arriba se realiza el primer diseño, comenzando desde el nivel base hasta el nivel abstracto.

por ejemplo-En C++/java comienza a diseñar desde la clase desde el nivel básico de las características de programación y luego va a la parte principal del programa.

0

Creo que la diferencia entre el enfoque de arriba hacia abajo y el enfoque ascendente de la programación es que el enfoque de arriba a abajo toma el problema y se divide en pasos manejables y el enfoque ascendente realmente detalla esos pasos.

Cuestiones relacionadas