8
votes

Quels sont les avantages de l'utilisation de prologs sur d'autres langues?

Chaque langue utilisée est utilisée pour ses avantages, généralement.

Quels sont les avantages de prolog ?

Quelles sont les situations générales / catégorie de problèmes où l'on peut utiliser Prolog plus efficacement que toute autre langue?


0 commentaires

7 Réponses :


5
votes

comparé à quoi exactement? Prolog est vraiment juste la mise en œuvre prééminente de la programmation logique, donc si votre question est vraiment sur une comparaison de paradigmes de programmation bien, c'est vraiment très large et que vous devriez regarder ici .

Si votre question est plus spécifiquement sur PROLL VS, plus les langues oo communément observées, je dirais que vous comparez vraiment des pommes à des oranges - l'avantage »(tel qu'il est) est juste une façon différente de penser à la Monde et change parfois de la manière dont vous posez une question fournit un meilleur outil de résolution d'un problème.


3 commentaires

Comparé à C / C ++ en particulier ... La résolution d'un problème de reine de 8 reines est par exemple plus facile dans PROG (que je viens de découvrir). Pourquoi C vs Prolog a-t-il des pommes et des oranges? Chaque programme C ne peut pas être converti en prolog et vice versa ??


Cela peut (en théorie - c'est-à-dire que je ne peux pas penser à un contre-des exemples de dessus), mais simplement parce que vous ne pouvez pas dire que vous devriez. Regardez-la de cette façon: si c'est était le bon choix la plupart du temps, il y aurait beaucoup plus de programmeurs de prologs que là-bas.


@annakata Oui, je suis d'accord. Mais je ne sais pas pourquoi (il y a moins de programmeurs de prologs)



5
votes

Fondamentalement, si votre programme peut être indiqué facilement comme des déclarations logiques formelles déclaratives, Prolog (ou une autre langue dans cette famille) donnera le temps de développement le plus rapide. Si vous utilisez un bon compilateur Prolog, cela donnera également la meilleure performance et la fiabilité, car le moteur aura eu beaucoup d'efforts de conception et de développement.

essayer de mettre en œuvre ce genre de chose dans une autre langue a tendance à être en désordre. La solution la plus propre et la plus générale implique probablement de mettre en œuvre votre propre moteur d'unification. Même les implémentations naïves ne sont pas exactement triviales, la machine Résorquable Warren a un livre ou deux écrit à ce sujet et faire de mieux au moins impliquer un peu de recherche, la lecture de papiers induisant les maux de tête.

Bien sûr dans le monde réel, les parties clés de votre programme peuvent bénéficier de Prolog, mais beaucoup d'autres choses sont mieux traitées en utilisant une autre langue. C'est pourquoi de nombreux compilateurs de prologs peuvent s'interfacer avec, par exemple, c.


0 commentaires

1
votes

Je dirais que Prolog fonctionne bien pour les problèmes où une base de connaissances constitue une partie importante de la solution. Surtout lorsque la structure de connaissances est adaptée pour être codée comme des règles logiques.

Par exemple, écrire un interpréteur de langue naturelle pour un domaine problématique particulier nécessiterait beaucoup de connaissances dans ce domaine. Les systèmes d'experts relèvent également de cette catégorie pilotée par la connaissance.

C'est aussi une belle langue pour explorer des solutions à des énigmes logiques; -)


2 commentaires

Oui, je viens de résoudre le problème des huit reines avec elle, et c'était si facile ... Je ne sais pas pourquoi nous n'utilisons pas plus souvent Prolog.


@eskay - deux grands, a). Un mauvais outil pour le syndrome de la tâche, car la majorité des problèmes d'entreprise se révèlent plus sur la manipulation d'objets et de OO est par conséquent un paradigme B) très répandu et réussi. Prolog est incroyablement difficile à grok et un cauchemar impie à déboguer




3
votes

Les choses inhérentes à Prolog:

  • Modèle correspondant!
  • tout ce qui implique une première recherche de profondeur. (En Java Si vous voulez faire un DFS, vous voudrez peut-être la mettre en œuvre par un motif de visiteur ou faire un cas (vraiment géant)
  • Unification
  • ??

    Paul Graham, est néanmoins une personne LISP, il fait valoir que Prolog est vraiment bon pour 2% des problèmes, je suis moi-même aimé casser ceci 2% en bas et comprendre comment il avait présenté un tel nombre.

    Son argument pour "mieux" langues est "moins de code, plus de pouvoir". Prolog est définitivement "moins de code" et si vous allez pour ces derniers arômes de celui-ci (typés), vous obtenez également plus de pouvoir. La seule chose qui m'a dérangé lors de l'utilisation de Prolog est le fait que je n'ai pas d'accès aléatoire dans des listes (pas de tableaux).


0 commentaires

2
votes

Prolog est un langage de programmation de très haut niveau. Une analogie pourrait être (prolog: c) comme (assembleur C:)

Pourquoi n'est-ce pas utilisé beaucoup alors? Je pense que cela a à voir avec les machines que nous utilisons; Ils sont basés sur des machines de Turing. C peut être compilé dans le code d'octet automatiquement, mais Prolog est compilé de fonctionner sur une émulation de la machine abstrait Warren, ce n'est donc pas si efficace.

En outre, Prolog est basé sur la logique de premier ordre qui n'est pas capable de résoudre tous les problèmes résolvables de manière déclarative, donc, à un moment donné, vous devez compter sur un code de type impératif.


2 commentaires

Pouvez-vous donner une instance d'un problème qui n'est pas solvable à Prolog?


@alexraasch Prologge Turing complète, il est donc capable de résoudre le solvable. Toutefois, si vous essayez de résoudre, par exemple, un système d'équations avec prologic votre code serait de type impératif.



1
votes

J'ai été programmée (pour le plaisir) de plus d'un an avec Swi-prolog. Je pense que l'un des avantages de PRAGolog est que Prolog n'a aucun effet secondaire: le prologue est un langage de ce type de variables (membre local ou de classe), il est en quelque sorte forces que le programmeur n'utilise pas de variables. Les objets Prolog n'ont pas d'état, genre de. Je pense. J'ai écrit la ligne de commande prolog (pas d'interface graphique, sauf quelques tests XPCE): C'est comme un train sur une piste.


0 commentaires