40 votes

Haut vers le bas et bas vers le haut programmation

Pourquoi dit-on que des langages comme le C sont top-down tandis que les langages orientés objets comme Java ou C++ sont bottom-up? Cette classification a-t-elle une importance dans le développement de logiciels?

74voto

Charlie Martin Points 62306

La méthode "top down" consiste à prendre une définition de haut niveau du problème et à le subdiviser en sous-problèmes, que vous résolvez de manière récursive jusqu'à ce que vous obteniez des morceaux évidents et faciles à coder. Cette approche est souvent associée au style de programmation de "décomposition fonctionnelle", mais cela n'est pas nécessaire.

Dans la programmation "bottom up", vous identifiez des outils de bas niveau que vous pouvez composer pour créer un programme plus complexe.

En réalité, presque toute la programmation est effectuée avec une combinaison d'approches. En programmation orientée objet, vous divisez souvent le problème en identifiant des objets de domaine (ce qui est une approche top down), puis en les affinant, avant de les recombiner dans le programme final — une approche bottom up.

30voto

Eclipse Points 27662

Dans le développement Top-Down, vous commencez par votre fonction principale, puis pensez aux étapes principales que vous devez prendre, puis vous divisez chacune de ces étapes en leurs sous-parties, et ainsi de suite.

Dans la programmation Bottom-Up, vous pensez à la fonctionnalité de base et aux parties dont vous aurez besoin et les construisez. Vous développez les acteurs et leurs méthodes, puis vous les liez pour former un tout cohérent.

La POO tend naturellement vers le Bottom-Up alors que vous développez vos objets, tandis que la programmation procédurale tend vers le Top-Down lorsque vous commencez par une fonction et ajoutez lentement à celle-ci.

7voto

Nat Points 6434

Je n'ai jamais entendu les termes "top-down" et "bottom-up" utilisés de cette manière.

Les termes sont généralement utilisés pour décrire la manière dont on aborde la conception et la mise en œuvre d'un système logiciel et s'appliquent donc à n'importe quel langage ou paradigme de programmation.

Dans "On LISP", Paul Graham utilise le terme "bottom-up" légèrement différemment pour signifier continuellement l'extraction de fonctionnalités communes dans des fonctions partagées, de sorte que vous finissez par créer un nouveau dialecte de LISP de plus haut niveau qui vous permet de programmer en termes de votre domaine d'application. Ce n'est pas une utilisation courante du terme. De nos jours, nous appellerions cela "refactoring" et "langages embarqués spécifiques au domaine" (et les vieux programmeurs LISP se moqueraient en disant que le LISP est capable de le faire depuis les années 1950).

6voto

AviD Points 8413

Je n'ai jamais entendu cette classification appliquée à des langues spécifiques, plutôt c'est un paradigme de programmation - est-ce que vous commencez d'abord par remplir les détails (c'est-à-dire construire des méthodes d'implémentation complètes) et ensuite les assembler (par exemple, les appeler depuis la méthode main()), ou commencez-vous par le flot logique et ensuite développez l'implémentation ?

Vous pouvez vraiment faire l'une ou l'autre avec les deux types de langues... Mais je dirais que c'est généralement le contraire, dans les langages OOP actuels vous définirez d'abord les interfaces, formant la structure logique, et seulement ensuite vous vous préoccuperez de l'implémentation, alors que dans les langages procéduraux comme le C, vous devez en fait implémenter certaines méthodes avant de les appeler.

2voto

Winnie Points 1913

Cette page Wikipédia l'explique assez bien http://fr.wikipedia.org/wiki/Top-down#Programmation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X