Quelle est la différence entre un Algorithme et un Modèle de Conception
J'étais à la recherche de "Undo/Redo algorithmes" et trouvé quelque chose de marqué comme un doublon, mais le doublon a été une demande pour un "Undo Modèle de Conception". J'aimerais vraiment un algorithme pour cette. Je ne pense pas nécessairement besoin d'un modèle de conception.
Est là une différence fondamentale entre "Modèle de Conception" et "Algorithme" ou est-il acceptable que quelqu'un utilise les deux de façon interchangeable?
Je vais raccrocher et de prendre ma réponse hors de l'air.
Ok, pardonnez-moi pour penser les modèles de conception ont été seulement des abstractions des algorithmes. Voici un petit tableau de mes conclusions à partir des réponses qui étaient tous très bons.
Modèle De Conception | Algorithme ------------------ | ---------------- Abstrait | Concret Structure de contrôle | Ensemble d'Actions Modèle | Mise En Œuvre Flexible | Déterministe Blueprint | Recette
- Il me semble que vous n'êtes pas vraiment à la recherche d'un algorithme. Quels sont les moyens allez-vous offrir, et ce que la sortie ne vous vous attendez à avoir après l'exécution de l'algorithme?
- Est-ce un algorithme ou un motif de conception (ou une recette pour un désastre)? 1. Lorsqu'une requête est exécutée sur un en face de "défaire" la requête sur une pile. 2. Lorsque le bouton annuler est pressé pop requête hors de la pile et de l'exécuter. Peut-être que le problème est le non-déterminisme?
Vous devez vous connecter pour publier un commentaire.
Un algorithme, c'est comme une recette: une étape-par-étape pour l'exécution de certaines activités.
Un modèle de conception est comme un programme: une collection structurée d'objets et d'associations et d'actions à accomplir un but.
Oui, il y a une différence.
Un algorithme est une recette pour l'exécution de certaines tâches sans ambiguïté ensemble fini d'instructions qui atteint un but en effectuant une entrée et produisant une sortie. Généralement, un algorithme est exprimé dans un langage indépendant du pseudo-code, qui peut ensuite être mis en œuvre dans la langue de votre choix.
Un modèle de conception est une façon de structurer votre code afin d'exprimer de façon élégante une relation entre les composants fonctionnels. Vous pouvez utiliser les modèles de conception dans la mise en œuvre d'un algorithme. Par exemple, vous pouvez utiliser un algorithme pour une commande à pied d'un arbre pour s'assurer que vous visitez tous les nœuds d'un arbre de structure de données dans un certain ordre. Vous pourriez également mettre en œuvre un visiteur modèle de conception pour exprimer la façon dont votre application retourne le contrôle à l'appelant contexte pour indiquer qu'un nœud a été visité. Ce n'est pas la partie de l'algorithme, mais une partie de la conception de logiciel, et comment structurer les interfaces de chaque composant de votre logiciel pouvez utiliser.
Les algorithmes et les modèles de conception sont orthogonaux, même si elles peuvent bien être utilisés en même temps.
Un modèle de conception est relativement vague description de la façon de résoudre un problème sur un plan architectural, avec l'accent sur la flexibilité et la facilité de maintenance. Un algorithme est la description précise de la manière de calculer quelque chose de spécifique, avec un accent sur l'exactitude et efficacité.
Un modèle de conception ne peut pas être traduits directement dans le code. C'est une "stratégie" qui peut être utile pour la conception d'une application. L'origine du terme est externe à l'informatique. Lisez à propos de Christopher Alexander pour en savoir plus.
Un algorithme sur l'autre côté peut être exprimé dans le code. C'est une séquence d'opérations permettant de résoudre un problème spécifique pour toute entrée.
Un algorithme est un ensemble d'étapes/actions/commandes/instructions de travail dans l'ordre de votre/dans tous les circonstances ou les changements d'état. Dans le cas de undo/redo, il serait impliquent le stockage à l'état précédent, à chaque stade, et ensuite de le reproduire (par quelque moyen que ce soit, l'application dispose d') sur commande. Mais puisque cette définition est si floue et chaque cas est différent, nous voulons créer une plus généralisée modèle de conception dans lequel une application spécifique de la fonctionnalité peut être branché.
Christopher Alexander est l'architecte qui a d'abord étudié les modes dans les bâtiments et les collectivités, et a développé un "modèle de langage" pour les générer.
Ainsi, les termes ne sont pas interchangeables, car ils se réfèrent à différents niveaux de la conception.
Je dirais qu'un modèle de conception définit la structure, alors qu'un algorithme définit le comportement.
Par exemple, vous pouvez utiliser différents algorithmes en collaboration avec le Stratégie de modèle de conception.
Un algorithme est un ensemble spécifique de mesures pour effectuer une tâche. Décodage d'un fichier audio ou vidéo serait d'utiliser un algorithme.
Un modèle de conception est plus un modèle pour la conception d'un système avec certaines caractéristiques.
ils sont différents: http://en.wikipedia.org/wiki/Design_pattern_(computer_science) vs http://en.wikipedia.org/wiki/Algorithm
à l'aide de la commande de design pattern (http://en.wikipedia.org/wiki/Command_pattern), il est facile à mettre en œuvre undo/redo: http://www.cs.mcgill.ca/~hv/classes/CS400/01.hchen/doc/command/command.html
liés à la question: Modèle de conception pour Annuler Moteur
Lorsque j'ai étudié le design pattern concept pour la première fois, j'ai été aussi surpris de voir pourquoi la conception de modèles ont été introduits dans la présence de l'algorithme. Comme mes connaissances a augmenté avec des modèles de conception, je suis arrivée à ce point que l'algorithme est d'une tout autre approche pour résoudre les problèmes et le modèle de conception est différente.
Modèle de conception est fondamentalement une question récurrente de la solution du même problème pour une application de logiciel dans un contexte particulier qui est en quelque sorte pas liée avec l'algo, car l'algorithme est l'étape par étape les instructions pour résoudre le problème.
Un modèle de conception permettrait de déterminer la façon dont vous concevez un algorithme (ou peut-être rien à voir avec les algorithmes, mais disons que nous sommes face à celui qui n'), tandis qu'un algorithme est un ensemble de solide, réutilisable, mises en œuvre, les étapes pour faire quelque chose. Donc, non, je ne les appelez pas interchangeables.
Comment organiser types de fonctionnalités plutôt que les caractéristiques spécifiques pourraient être la clé pour séparer les "design patterns" de 'algorithmes'...
Modèles de conception de décrire les solutions génériques à la commune des problèmes de conception.
"Chaque patron décrit un problème qui se produit à maintes reprises dans notre environnement, et décrit ensuite le cœur de la solution à ce problème, de telle façon que vous pouvez utiliser cette solution des millions de fois, sans jamais le faire de la même manière deux fois" (Christopher Alexander) Dans la programmation c'est en décrivant des ensembles spécifiques de relations entre des objets de logiciel (pour le conceptuel ou le monde réel des objets). Décrivant spécifiques de mise en œuvre devrait être évitée, car cela rend le modèle de conception moins générique.
Un algorithme est un ensemble d'étapes qui définissent la façon dont une tâche est exécutée. L'exécution de chaque étape de l'algorithme ne nécessite pas de compétences créatives. Plutôt, il nécessite uniquement la capacité à suivre des instructions. (avertissement: les algorithmes non-déterministes, ne se conforment pas à cette restriction et sont un important sujet de recherche)
Donc, je pense qu'une description de la relation peut être de séparer les fonctions de fonctions. Toutefois, la collecte des caractéristiques d'un objet qui permet de déterminer sa fonction, puisque chaque sous-fonction a des fonctions encapsulé dans il. Quand vous mettez ensemble un grand nombre de petits objets dans un gros objet (par exemple, des instances de classes différentes dans un programme) certains d'entre eux vont travailler ensemble pour créer de nouvelles fonctions dont ils n'ont pas par eux-mêmes (le tout est plus grand que la somme de ses parties). Vous pouvez dire que c'est juste un nouvel algorithme, mais c'est aussi un nouvel objet. Les caractéristiques et les fonctions sont les deux faces d'une même pièce, de sorte qu'il est impossible de les séparer totalement. Mais comment organiser types de fonctionnalités plutôt que les caractéristiques spécifiques pourraient être la clé pour séparer les "design patterns" de "algorithmes", car si les modèles de conception sont sur l'organisation de fonctionnalités spécifiques, c'est à dire des instances de classes spécifiques, alors l'algorithme aurait déjà été présenté et la mise en œuvre serait exactement la même chose à chaque fois, c'est à dire qu'il ne serait pas générique et vous ne pouvez pas utiliser cette solution des millions de fois, sans jamais le faire de la même manière deux fois".
Modèles de conception:
Algorithme: