Quelles sont les meilleures utilisations de la Programmation Logique?
Par la Logique de la Programmation, je veux dire l'un des sous-paradigme de la programmation déclarative langues. Ne pas confondre cette question avec "Quels sont les problèmes que vous pouvez résoudre avec if-then-else?"
Une langue comme le Prologue est très fascinant, et il vaut la peine de l'apprentissage pour l'amour de l'apprentissage, mais je me demande de quelle classe de problèmes du monde réel est le mieux exprimé et résolu par une telle langue. Existe-il mieux les langues? Ne la programmation logique existe sous un autre nom, en plus à la mode des langages de programmation? Est le cynique version de la réponse d'une variante de la Python Paradoxe?
OriginalL'auteur mbac32768 | 2008-10-18
Vous devez vous connecter pour publier un commentaire.
Prototypage.
Prolog est dynamique, et a été pendant 50 ans. Le compilateur est libéral, la syntaxe minimaliste, et de "faire des trucs" c'est facile, amusant et efficace. SWI-Prolog est doté d'un traceur (débogueur!), et même un graphique traceur. Vous pouvez modifier le code à la volée, en utilisant
make/0
, vous pouvez charger dynamiquement des modules, ajouter quelques lignes de code, sans sortir de l'interprète, ou de modifier le fichier que vous êtes en train de courir à la volée avecedit(1)
. Vous pensez que vous avez trouvé un problème avec lefoobar/2
prédicat?Et dès que vous quittez l'éditeur, cette chose va être re-compilé. Bien sûr, Eclipse fait la même chose pour Java, mais Java n'est pas exactement un prototype de langage.
En dehors de la pure prototypage trucs, Prolog est incroyablement bien adapté pour la traduction d'un morceau de logique dans le code. Donc, automatique étalons et ce genre de truc peut facilement être écrit en Prolog.
La première Erlang interprète a été écrit en Prolog - et pour cause, depuis Prologue est très bien adaptée pour l'analyse et le codage de la logique vous de trouver en analyser les arbres. En fait, Prolog est livré avec un analyseur intégré! Non, pas une bibliothèque, c'est dans la syntaxe, à savoir DCGs.
Prolog est beaucoup utilisé en PNL, en particulier en matière de syntaxe et de calcul de la sémantique.
Mais, Prolog est sous-utilisés et sous-estimé. Malheureusement, il semble porter un universitaire ou "inutilisable pour n'importe quel but réel de" la stigmatisation. Mais il peut être d'une très grande utilité dans de nombreuses applications du monde réel impliquant des faits et le calcul des relations entre les faits. Il n'est pas très bien adapté pour de nombreux calculs, mais l'informatique n'est pas seulement sur le nombre des calculs.
OriginalL'auteur Aleksandar Dimitrov
Depuis Prolog = Syntaxique De L'Unification + Le chaînage arrière + REPL,
la plupart des endroits où syntaxique de l'unification est utilisé, c'est aussi une bonne utilisation de Prolog.
OriginalL'auteur Guy Coder
Prolog est idéal pour les non-problèmes numériques. Cette l'article donne quelques exemples d'applications de Prolog et il peut vous aider à comprendre le type de problèmes qu'elle peut résoudre.
OriginalL'auteur Vincent Ramdhanie
L'une des choses Prolog vous donne gratuitement est un retour en arrière de l'algorithme de recherche -- vous pourriez mettre en œuvre vous-même, mais si votre problème est mieux résolus en ayant cet algorithme est disponible, alors il est agréable à utiliser.
Les deux choses que j'ai vu il être bon à l'est de preuves mathématiques du langage naturel et de la compréhension.
OriginalL'auteur Lou Franco
Prolog est grande à résoudre des puzzles et autres. Cela dit, dans le domaine de la résolution de casse-tête, il le rend facile/moyen de résolution des énigmes plus facile et compliqué de la résolution du puzzle plus difficile. Pourtant, l'écriture de solveurs pour la grille de puzzles et autres tels que Hexiom, Sudoku, ou Nurikabe n'est pas particulièrement difficile.
Il est souvent utile de prendre pleinement impératif approche (avec l'état), pour au moins une partie de la solution. Vous pouvez faux avec Prolog, mais il est souvent plus facile dans d'autres langues. Surtout quand c'est le temps de l'optimiser. Construit dans la recherche est moins utile une fois pense devenir fou.
OriginalL'auteur Brian
La Programmation Logique par contraintes (CLP)
Beaucoup de très bonnes et bien adapté à des cas d'utilisation de la programmation logique, ont déjà été mentionnées. Je voudrais compléter la liste avec plusieurs tâches à partir d'un très important domaine d'application de la logique de programmation:
La logique de programmation des mélanges facilement, plus facilement que d'autres paradigmes, avec contraintes, résultant dans un cadre appelé la Programmation Logique par contraintes.
Cela conduit à des solveurs de contraintes pour les différents domaines, tels que:
Ces solveurs de contraintes conduisent à plusieurs cas d'utilisation de la programmation logique qui n'ont pas yeen été mentionné, certains que j'ai montré ci-dessous.
Lors du choix d'un Prologue système, la puissance et les performances des solveurs de contraintes sont souvent parmi les facteurs de prise de décision, en particulier pour les utilisateurs commerciaux.
CLP(FD) — Raisonnement sur des entiers
Dans la pratique, CLP(FD) est l'un des plus importants applications de la logique de programmation, et est utilisé pour résoudre les tâches dans les domaines suivants, entre autres:
Voir clpfd pour plus d'informations et de plusieurs exemples.
CLP(B) — Boolean contraintes
CLP(B) est souvent utilisé en connexion avec:
Voir clpb.
CLP(Q) — les nombres Rationnels
CLP(Q) est utilisé pour résoudre d'importants classes de problèmes qui se posent dans Opérations de la Recherche:
Voir clpq.
OriginalL'auteur mat
Une simple réponse est "construire des systèmes". Le langage utilisé pour construire les Makefiles (au moins la partie à décrire les dépendances) est essentiellement un langage de programmation logique, bien que pas vraiment une "pure" logique du langage de programmation.
OriginalL'auteur mipadi